create([ 'name_order' => '%first_name% %last_name% (%nickname%)', 'date_format' => 'y', ]); $array = UserPreferencesIndexViewHelper::data($user); $this->assertEquals( 9, count($array) ); $this->assertArrayHasKey('help', $array); $this->assertArrayHasKey('name_order', $array); $this->assertArrayHasKey('date_format', $array); $this->assertArrayHasKey('timezone', $array); $this->assertArrayHasKey('url', $array); $this->assertArrayHasKey('number_format', $array); $this->assertArrayHasKey('distance_format', $array); $this->assertArrayHasKey('maps', $array); $this->assertArrayHasKey('locale', $array); $this->assertEquals( [ 'settings' => env('APP_URL').'/settings', 'back' => env('APP_URL').'/settings', ], $array['url'] ); } /** @test */ public function it_gets_the_data_needed_for_help(): void { $user = User::factory()->create([ 'help_shown' => true, ]); $array = UserPreferencesIndexViewHelper::dtoHelp($user); $this->assertEquals( [ 'help_shown' => true, 'url' => [ 'store' => env('APP_URL').'/settings/preferences/help', ], ], $array ); } /** @test */ public function it_gets_the_data_needed_for_name_order(): void { $user = User::factory()->create([ 'name_order' => '%first_name% %last_name% (%nickname%)', ]); $array = UserPreferencesIndexViewHelper::dtoNameOrder($user); $this->assertEquals( [ 'name_example' => 'James Bond (007)', 'name_order' => '%first_name% %last_name% (%nickname%)', 'url' => [ 'store' => env('APP_URL').'/settings/preferences/name', ], ], $array ); } /** @test */ public function it_gets_the_data_needed_for_date_format(): void { Carbon::setTestNow(Carbon::create(2018, 1, 1)); $user = User::factory()->create([ 'date_format' => 'Y', ]); $array = UserPreferencesIndexViewHelper::dtoDateFormat($user); $this->assertEquals( 4, count($array) ); $this->assertArrayHasKey('dates', $array); $this->assertArrayHasKey('date_format', $array); $this->assertArrayHasKey('human_date_format', $array); $this->assertArrayHasKey('url', $array); $this->assertEquals( [ 'store' => env('APP_URL').'/settings/preferences/date', ], $array['url'] ); $this->assertEquals( 'Y', $array['date_format'] ); $this->assertEquals( '2018', $array['human_date_format'] ); $this->assertEquals( [ 0 => [ 'id' => 1, 'format' => 'MMM DD, YYYY', 'value' => 'Jan 01, 2018', ], 1 => [ 'id' => 2, 'format' => 'DD MMM YYYY', 'value' => '01 Jan 2018', ], 2 => [ 'id' => 3, 'format' => 'YYYY/MM/DD', 'value' => '2018/01/01', ], 3 => [ 'id' => 4, 'format' => 'DD/MM/YYYY', 'value' => '01/01/2018', ], ], $array['dates']->toArray() ); } /** @test */ public function it_gets_the_data_needed_for_timezone(): void { $user = User::factory()->create([ 'timezone' => 'UTC', ]); $array = UserPreferencesIndexViewHelper::dtoTimezone($user); $this->assertEquals( [ 'timezone' => 'UTC', 'url' => [ 'store' => env('APP_URL').'/settings/preferences/timezone', ], ], $array ); } /** @test */ public function it_gets_the_data_needed_for_number_format(): void { Carbon::setTestNow(Carbon::create(2018, 1, 1)); $user = User::factory()->create([ 'number_format' => User::NUMBER_FORMAT_TYPE_COMMA_THOUSANDS_DOT_DECIMAL, ]); $array = UserPreferencesIndexViewHelper::dtoNumberFormat($user); $this->assertEquals( 3, count($array) ); $this->assertArrayHasKey('numbers', $array); $this->assertArrayHasKey('url', $array); $this->assertEquals( [ 'store' => env('APP_URL').'/settings/preferences/number', ], $array['url'] ); $this->assertEquals( User::NUMBER_FORMAT_TYPE_COMMA_THOUSANDS_DOT_DECIMAL, $array['number_format'] ); $this->assertEquals( [ 0 => [ 'id' => 1, 'format' => '1,234.56', 'value' => User::NUMBER_FORMAT_TYPE_COMMA_THOUSANDS_DOT_DECIMAL, ], 1 => [ 'id' => 2, 'format' => '1 234,56', 'value' => User::NUMBER_FORMAT_TYPE_SPACE_THOUSANDS_COMMA_DECIMAL, ], 2 => [ 'id' => 3, 'format' => '1234.56', 'value' => User::NUMBER_FORMAT_TYPE_NO_SPACE_DOT_DECIMAL, ], ], $array['numbers']->toArray() ); } /** @test */ public function it_gets_the_data_needed_for_maps(): void { Carbon::setTestNow(Carbon::create(2018, 1, 1)); $user = User::factory()->create([ 'default_map_site' => User::MAPS_SITE_GOOGLE_MAPS, ]); $array = UserPreferencesIndexViewHelper::dtoMapsPreferences($user); $this->assertEquals( 4, count($array) ); $this->assertArrayHasKey('types', $array); $this->assertArrayHasKey('default_map_site', $array); $this->assertArrayHasKey('default_map_site_i18n', $array); $this->assertArrayHasKey('url', $array); $this->assertEquals( [ 'store' => env('APP_URL').'/settings/preferences/maps', ], $array['url'] ); $this->assertEquals( User::MAPS_SITE_GOOGLE_MAPS, $array['default_map_site'] ); $this->assertEquals( [ 0 => [ 'id' => 1, 'type' => trans('settings.user_preferences_map_site_google_maps'), 'description' => trans('settings.user_preferences_map_site_google_maps_description'), 'value' => User::MAPS_SITE_GOOGLE_MAPS, ], 1 => [ 'id' => 2, 'type' => trans('settings.user_preferences_map_site_open_street_maps'), 'description' => trans('settings.user_preferences_map_site_open_street_maps_description'), 'value' => User::MAPS_SITE_OPEN_STREET_MAPS, ], ], $array['types']->toArray() ); } /** @test */ public function it_gets_the_data_needed_for_locale(): void { $user = User::factory()->create([ 'locale' => 'fr', ]); $array = UserPreferencesIndexViewHelper::dtoLocale($user); $this->assertEquals( [ 'locale' => 'fr', 'locale_i18n' => 'French', 'url' => [ 'store' => env('APP_URL').'/settings/preferences/locale', ], ], $array ); } }