diff --git a/src/gmp/__tests__/timezones.js b/src/gmp/__tests__/timezones.js index 844992cb4a..5f0187eb0f 100644 --- a/src/gmp/__tests__/timezones.js +++ b/src/gmp/__tests__/timezones.js @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ -import {describe, test, expect} from '@gsa/testing'; +import {describe, test, expect, expectTypeOf} from '@gsa/testing'; import timezones from '../timezones'; import {isArray} from '../utils/identity'; @@ -13,11 +13,13 @@ describe('timezones tests', () => { expect(isArray(timezones)).toEqual(true); }); - test('should contain objects with name properties', () => { - expect(timezones.length).toBeGreaterThan(0); + test('should contain more then one timezone', () => { + expect(timezones.length).toBeGreaterThan(1); + }); + test('should contain timezones as strings', () => { for (const zone of timezones) { - expect(zone.name).toBeDefined(); + expectTypeOf(zone).toBeString(); } }); }); diff --git a/src/gmp/timezones.js b/src/gmp/timezones.js index 87fc6e9dcd..a3a9fe66b3 100644 --- a/src/gmp/timezones.js +++ b/src/gmp/timezones.js @@ -3,428 +3,8 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ -const timezones = [ - {name: 'Africa/Abidjan'}, - {name: 'Africa/Accra'}, - {name: 'Africa/Addis_Ababa'}, - {name: 'Africa/Algiers'}, - {name: 'Africa/Asmara'}, - {name: 'Africa/Bamako'}, - {name: 'Africa/Bangui'}, - {name: 'Africa/Banjul'}, - {name: 'Africa/Bissau'}, - {name: 'Africa/Blantyre'}, - {name: 'Africa/Brazzaville'}, - {name: 'Africa/Bujumbura'}, - {name: 'Africa/Cairo'}, - {name: 'Africa/Casablanca'}, - {name: 'Africa/Ceuta'}, - {name: 'Africa/Conakry'}, - {name: 'Africa/Dakar'}, - {name: 'Africa/Dar_es_Salaam'}, - {name: 'Africa/Djibouti'}, - {name: 'Africa/Douala'}, - {name: 'Africa/El_Aaiun'}, - {name: 'Africa/Freetown'}, - {name: 'Africa/Gaborone'}, - {name: 'Africa/Harare'}, - {name: 'Africa/Johannesburg'}, - {name: 'Africa/Juba'}, - {name: 'Africa/Kampala'}, - {name: 'Africa/Khartoum'}, - {name: 'Africa/Kigali'}, - {name: 'Africa/Kinshasa'}, - {name: 'Africa/Lagos'}, - {name: 'Africa/Libreville'}, - {name: 'Africa/Lome'}, - {name: 'Africa/Luanda'}, - {name: 'Africa/Lubumbashi'}, - {name: 'Africa/Lusaka'}, - {name: 'Africa/Malabo'}, - {name: 'Africa/Maputo'}, - {name: 'Africa/Maseru'}, - {name: 'Africa/Mbabane'}, - {name: 'Africa/Mogadishu'}, - {name: 'Africa/Monrovia'}, - {name: 'Africa/Nairobi'}, - {name: 'Africa/Ndjamena'}, - {name: 'Africa/Niamey'}, - {name: 'Africa/Nouakchott'}, - {name: 'Africa/Ouagadougou'}, - {name: 'Africa/Porto-Novo'}, - {name: 'Africa/Sao_Tome'}, - {name: 'Africa/Tripoli'}, - {name: 'Africa/Tunis'}, - {name: 'Africa/Windhoek'}, - {name: 'America/Adak'}, - {name: 'America/Anchorage'}, - {name: 'America/Anguilla'}, - {name: 'America/Antigua'}, - {name: 'America/Araguaina'}, - {name: 'America/Argentina/Buenos_Aires'}, - {name: 'America/Argentina/Catamarca'}, - {name: 'America/Argentina/Cordoba'}, - {name: 'America/Argentina/Jujuy'}, - {name: 'America/Argentina/La_Rioja'}, - {name: 'America/Argentina/Mendoza'}, - {name: 'America/Argentina/Rio_Gallegos'}, - {name: 'America/Argentina/Salta'}, - {name: 'America/Argentina/San_Juan'}, - {name: 'America/Argentina/San_Luis'}, - {name: 'America/Argentina/Tucuman'}, - {name: 'America/Argentina/Ushuaia'}, - {name: 'America/Aruba'}, - {name: 'America/Asuncion'}, - {name: 'America/Atikokan'}, - {name: 'America/Bahia'}, - {name: 'America/Bahia_Banderas'}, - {name: 'America/Barbados'}, - {name: 'America/Belem'}, - {name: 'America/Belize'}, - {name: 'America/Blanc-Sablon'}, - {name: 'America/Boa_Vista'}, - {name: 'America/Bogota'}, - {name: 'America/Boise'}, - {name: 'America/Cambridge_Bay'}, - {name: 'America/Campo_Grande'}, - {name: 'America/Cancun'}, - {name: 'America/Caracas'}, - {name: 'America/Cayenne'}, - {name: 'America/Cayman'}, - {name: 'America/Chicago'}, - {name: 'America/Chihuahua'}, - {name: 'America/Costa_Rica'}, - {name: 'America/Creston'}, - {name: 'America/Cuiaba'}, - {name: 'America/Curacao'}, - {name: 'America/Danmarkshavn'}, - {name: 'America/Dawson'}, - {name: 'America/Dawson_Creek'}, - {name: 'America/Denver'}, - {name: 'America/Detroit'}, - {name: 'America/Dominica'}, - {name: 'America/Edmonton'}, - {name: 'America/Eirunepe'}, - {name: 'America/El_Salvador'}, - {name: 'America/Fortaleza'}, - {name: 'America/Fort_Nelson'}, - {name: 'America/Glace_Bay'}, - {name: 'America/Godthab'}, - {name: 'America/Goose_Bay'}, - {name: 'America/Grand_Turk'}, - {name: 'America/Grenada'}, - {name: 'America/Guadeloupe'}, - {name: 'America/Guatemala'}, - {name: 'America/Guayaquil'}, - {name: 'America/Guyana'}, - {name: 'America/Halifax'}, - {name: 'America/Havana'}, - {name: 'America/Hermosillo'}, - {name: 'America/Indiana/Indianapolis'}, - {name: 'America/Indiana/Knox'}, - {name: 'America/Indiana/Marengo'}, - {name: 'America/Indiana/Petersburg'}, - {name: 'America/Indiana/Tell_City'}, - {name: 'America/Indiana/Vevay'}, - {name: 'America/Indiana/Vincennes'}, - {name: 'America/Indiana/Winamac'}, - {name: 'America/Inuvik'}, - {name: 'America/Iqaluit'}, - {name: 'America/Jamaica'}, - {name: 'America/Juneau'}, - {name: 'America/Kentucky/Louisville'}, - {name: 'America/Kentucky/Monticello'}, - {name: 'America/Kralendijk'}, - {name: 'America/La_Paz'}, - {name: 'America/Lima'}, - {name: 'America/Los_Angeles'}, - {name: 'America/Lower_Princes'}, - {name: 'America/Maceio'}, - {name: 'America/Managua'}, - {name: 'America/Manaus'}, - {name: 'America/Marigot'}, - {name: 'America/Martinique'}, - {name: 'America/Matamoros'}, - {name: 'America/Mazatlan'}, - {name: 'America/Menominee'}, - {name: 'America/Merida'}, - {name: 'America/Metlakatla'}, - {name: 'America/Mexico_City'}, - {name: 'America/Miquelon'}, - {name: 'America/Moncton'}, - {name: 'America/Monterrey'}, - {name: 'America/Montevideo'}, - {name: 'America/Montserrat'}, - {name: 'America/Nassau'}, - {name: 'America/New_York'}, - {name: 'America/Nipigon'}, - {name: 'America/Nome'}, - {name: 'America/Noronha'}, - {name: 'America/North_Dakota/Beulah'}, - {name: 'America/North_Dakota/Center'}, - {name: 'America/North_Dakota/New_Salem'}, - {name: 'America/Ojinaga'}, - {name: 'America/Panama'}, - {name: 'America/Pangnirtung'}, - {name: 'America/Paramaribo'}, - {name: 'America/Phoenix'}, - {name: 'America/Port-au-Prince'}, - {name: 'America/Port_of_Spain'}, - {name: 'America/Porto_Velho'}, - {name: 'America/Puerto_Rico'}, - {name: 'America/Rainy_River'}, - {name: 'America/Rankin_Inlet'}, - {name: 'America/Recife'}, - {name: 'America/Regina'}, - {name: 'America/Resolute'}, - {name: 'America/Rio_Branco'}, - {name: 'America/Santarem'}, - {name: 'America/Santiago'}, - {name: 'America/Santo_Domingo'}, - {name: 'America/Sao_Paulo'}, - {name: 'America/Scoresbysund'}, - {name: 'America/Sitka'}, - {name: 'America/St_Barthelemy'}, - {name: 'America/St_Johns'}, - {name: 'America/St_Kitts'}, - {name: 'America/St_Lucia'}, - {name: 'America/St_Thomas'}, - {name: 'America/St_Vincent'}, - {name: 'America/Swift_Current'}, - {name: 'America/Tegucigalpa'}, - {name: 'America/Thule'}, - {name: 'America/Thunder_Bay'}, - {name: 'America/Tijuana'}, - {name: 'America/Toronto'}, - {name: 'America/Tortola'}, - {name: 'America/Vancouver'}, - {name: 'America/Whitehorse'}, - {name: 'America/Winnipeg'}, - {name: 'America/Yakutat'}, - {name: 'America/Yellowknife'}, - {name: 'Antarctica/Casey'}, - {name: 'Antarctica/Davis'}, - {name: 'Antarctica/DumontDUrville'}, - {name: 'Antarctica/Macquarie'}, - {name: 'Antarctica/Mawson'}, - {name: 'Antarctica/McMurdo'}, - {name: 'Antarctica/Palmer'}, - {name: 'Antarctica/Rothera'}, - {name: 'Antarctica/Syowa'}, - {name: 'Antarctica/Troll'}, - {name: 'Antarctica/Vostok'}, - {name: 'Arctic/Longyearbyen'}, - {name: 'Asia/Aden'}, - {name: 'Asia/Almaty'}, - {name: 'Asia/Amman'}, - {name: 'Asia/Anadyr'}, - {name: 'Asia/Aqtau'}, - {name: 'Asia/Aqtobe'}, - {name: 'Asia/Ashgabat'}, - {name: 'Asia/Baghdad'}, - {name: 'Asia/Bahrain'}, - {name: 'Asia/Baku'}, - {name: 'Asia/Bangkok'}, - {name: 'Asia/Barnaul'}, - {name: 'Asia/Beirut'}, - {name: 'Asia/Bishkek'}, - {name: 'Asia/Brunei'}, - {name: 'Asia/Chita'}, - {name: 'Asia/Choibalsan'}, - {name: 'Asia/Colombo'}, - {name: 'Asia/Damascus'}, - {name: 'Asia/Dhaka'}, - {name: 'Asia/Dili'}, - {name: 'Asia/Dubai'}, - {name: 'Asia/Dushanbe'}, - {name: 'Asia/Gaza'}, - {name: 'Asia/Hebron'}, - {name: 'Asia/Ho_Chi_Minh'}, - {name: 'Asia/Hong_Kong'}, - {name: 'Asia/Hovd'}, - {name: 'Asia/Irkutsk'}, - {name: 'Asia/Jakarta'}, - {name: 'Asia/Jayapura'}, - {name: 'Asia/Jerusalem'}, - {name: 'Asia/Kabul'}, - {name: 'Asia/Kamchatka'}, - {name: 'Asia/Karachi'}, - {name: 'Asia/Kathmandu'}, - {name: 'Asia/Khandyga'}, - {name: 'Asia/Kolkata'}, - {name: 'Asia/Krasnoyarsk'}, - {name: 'Asia/Kuala_Lumpur'}, - {name: 'Asia/Kuching'}, - {name: 'Asia/Kuwait'}, - {name: 'Asia/Macau'}, - {name: 'Asia/Magadan'}, - {name: 'Asia/Makassar'}, - {name: 'Asia/Manila'}, - {name: 'Asia/Muscat'}, - {name: 'Asia/Nicosia'}, - {name: 'Asia/Novokuznetsk'}, - {name: 'Asia/Novosibirsk'}, - {name: 'Asia/Omsk'}, - {name: 'Asia/Oral'}, - {name: 'Asia/Phnom_Penh'}, - {name: 'Asia/Pontianak'}, - {name: 'Asia/Pyongyang'}, - {name: 'Asia/Qatar'}, - {name: 'Asia/Qyzylorda'}, - {name: 'Asia/Riyadh'}, - {name: 'Asia/Sakhalin'}, - {name: 'Asia/Samarkand'}, - {name: 'Asia/Seoul'}, - {name: 'Asia/Shanghai'}, - {name: 'Asia/Singapore'}, - {name: 'Asia/Srednekolymsk'}, - {name: 'Asia/Taipei'}, - {name: 'Asia/Tashkent'}, - {name: 'Asia/Tbilisi'}, - {name: 'Asia/Tehran'}, - {name: 'Asia/Thimphu'}, - {name: 'Asia/Tokyo'}, - {name: 'Asia/Tomsk'}, - {name: 'Asia/Ulaanbaatar'}, - {name: 'Asia/Urumqi'}, - {name: 'Asia/Ust-Nera'}, - {name: 'Asia/Vientiane'}, - {name: 'Asia/Vladivostok'}, - {name: 'Asia/Yakutsk'}, - {name: 'Asia/Yangon'}, - {name: 'Asia/Yekaterinburg'}, - {name: 'Asia/Yerevan'}, - {name: 'Atlantic/Azores'}, - {name: 'Atlantic/Bermuda'}, - {name: 'Atlantic/Canary'}, - {name: 'Atlantic/Cape_Verde'}, - {name: 'Atlantic/Faroe'}, - {name: 'Atlantic/Madeira'}, - {name: 'Atlantic/Reykjavik'}, - {name: 'Atlantic/South_Georgia'}, - {name: 'Atlantic/Stanley'}, - {name: 'Atlantic/St_Helena'}, - {name: 'Australia/Adelaide'}, - {name: 'Australia/Brisbane'}, - {name: 'Australia/Broken_Hill'}, - {name: 'Australia/Currie'}, - {name: 'Australia/Darwin'}, - {name: 'Australia/Eucla'}, - {name: 'Australia/Hobart'}, - {name: 'Australia/Lindeman'}, - {name: 'Australia/Lord_Howe'}, - {name: 'Australia/Melbourne'}, - {name: 'Australia/Perth'}, - {name: 'Australia/Sydney'}, - {name: 'Europe/Amsterdam'}, - {name: 'Europe/Andorra'}, - {name: 'Europe/Astrakhan'}, - {name: 'Europe/Athens'}, - {name: 'Europe/Belgrade'}, - {name: 'Europe/Berlin'}, - {name: 'Europe/Bratislava'}, - {name: 'Europe/Brussels'}, - {name: 'Europe/Bucharest'}, - {name: 'Europe/Budapest'}, - {name: 'Europe/Busingen'}, - {name: 'Europe/Chisinau'}, - {name: 'Europe/Copenhagen'}, - {name: 'Europe/Dublin'}, - {name: 'Europe/Gibraltar'}, - {name: 'Europe/Guernsey'}, - {name: 'Europe/Helsinki'}, - {name: 'Europe/Isle_of_Man'}, - {name: 'Europe/Istanbul'}, - {name: 'Europe/Jersey'}, - {name: 'Europe/Kaliningrad'}, - {name: 'Europe/Kiev'}, - {name: 'Europe/Kirov'}, - {name: 'Europe/Lisbon'}, - {name: 'Europe/Ljubljana'}, - {name: 'Europe/London'}, - {name: 'Europe/Luxembourg'}, - {name: 'Europe/Madrid'}, - {name: 'Europe/Malta'}, - {name: 'Europe/Mariehamn'}, - {name: 'Europe/Minsk'}, - {name: 'Europe/Monaco'}, - {name: 'Europe/Moscow'}, - {name: 'Europe/Oslo'}, - {name: 'Europe/Paris'}, - {name: 'Europe/Podgorica'}, - {name: 'Europe/Prague'}, - {name: 'Europe/Riga'}, - {name: 'Europe/Rome'}, - {name: 'Europe/Samara'}, - {name: 'Europe/San_Marino'}, - {name: 'Europe/Sarajevo'}, - {name: 'Europe/Simferopol'}, - {name: 'Europe/Skopje'}, - {name: 'Europe/Sofia'}, - {name: 'Europe/Stockholm'}, - {name: 'Europe/Tallinn'}, - {name: 'Europe/Tirane'}, - {name: 'Europe/Ulyanovsk'}, - {name: 'Europe/Uzhgorod'}, - {name: 'Europe/Vaduz'}, - {name: 'Europe/Vatican'}, - {name: 'Europe/Vienna'}, - {name: 'Europe/Vilnius'}, - {name: 'Europe/Volgograd'}, - {name: 'Europe/Warsaw'}, - {name: 'Europe/Zagreb'}, - {name: 'Europe/Zaporozhye'}, - {name: 'Europe/Zurich'}, - {name: 'Indian/Antananarivo'}, - {name: 'Indian/Chagos'}, - {name: 'Indian/Christmas'}, - {name: 'Indian/Cocos'}, - {name: 'Indian/Comoro'}, - {name: 'Indian/Kerguelen'}, - {name: 'Indian/Mahe'}, - {name: 'Indian/Maldives'}, - {name: 'Indian/Mauritius'}, - {name: 'Indian/Mayotte'}, - {name: 'Indian/Reunion'}, - {name: 'Pacific/Apia'}, - {name: 'Pacific/Auckland'}, - {name: 'Pacific/Bougainville'}, - {name: 'Pacific/Chatham'}, - {name: 'Pacific/Chuuk'}, - {name: 'Pacific/Easter'}, - {name: 'Pacific/Efate'}, - {name: 'Pacific/Enderbury'}, - {name: 'Pacific/Fakaofo'}, - {name: 'Pacific/Fiji'}, - {name: 'Pacific/Funafuti'}, - {name: 'Pacific/Galapagos'}, - {name: 'Pacific/Gambier'}, - {name: 'Pacific/Guadalcanal'}, - {name: 'Pacific/Guam'}, - {name: 'Pacific/Honolulu'}, - {name: 'Pacific/Johnston'}, - {name: 'Pacific/Kiritimati'}, - {name: 'Pacific/Kosrae'}, - {name: 'Pacific/Kwajalein'}, - {name: 'Pacific/Majuro'}, - {name: 'Pacific/Marquesas'}, - {name: 'Pacific/Midway'}, - {name: 'Pacific/Nauru'}, - {name: 'Pacific/Niue'}, - {name: 'Pacific/Norfolk'}, - {name: 'Pacific/Noumea'}, - {name: 'Pacific/Pago_Pago'}, - {name: 'Pacific/Palau'}, - {name: 'Pacific/Pitcairn'}, - {name: 'Pacific/Pohnpei'}, - {name: 'Pacific/Port_Moresby'}, - {name: 'Pacific/Rarotonga'}, - {name: 'Pacific/Saipan'}, - {name: 'Pacific/Tahiti'}, - {name: 'Pacific/Tarawa'}, - {name: 'Pacific/Tongatapu'}, - {name: 'Pacific/Wake'}, - {name: 'Pacific/Wallis'}, -]; +import moment from 'moment-timezone'; + +const timezones = moment.tz.names(); export default timezones; diff --git a/src/web/components/form/__tests__/timezoneselect.jsx b/src/web/components/form/__tests__/timezoneselect.jsx index 6dd5d713d3..b10ee63801 100644 --- a/src/web/components/form/__tests__/timezoneselect.jsx +++ b/src/web/components/form/__tests__/timezoneselect.jsx @@ -26,7 +26,7 @@ describe('TimezoneSelect tests', () => { await openSelectElement(); - expect(getSelectItemElements().length).toEqual(timezones.length + 1); + expect(getSelectItemElements().length).toEqual(timezones.length); }); test('should call onChange handler', async () => { @@ -38,7 +38,7 @@ describe('TimezoneSelect tests', () => { const items = getSelectItemElements(); await userEvent.click(items[1]); - expect(handler).toHaveBeenCalledWith(timezones[0].name, undefined); + expect(handler).toHaveBeenCalledWith(timezones[1], undefined); }); test('should call onChange handler with name', async () => { @@ -50,14 +50,14 @@ describe('TimezoneSelect tests', () => { const items = getSelectItemElements(); await userEvent.click(items[1]); - expect(handler).toHaveBeenCalledWith(timezones[0].name, 'foo'); + expect(handler).toHaveBeenCalledWith(timezones[1], 'foo'); }); test('should render selected value', () => { - const timezone = timezones[1]; - render(); + const timezone = timezones[1]; + render(); const input = getSelectElement(); - expect(input).toHaveValue(timezone.name); + expect(input).toHaveValue(timezone); }); }); diff --git a/src/web/components/form/timezoneselect.jsx b/src/web/components/form/timezoneselect.jsx index 4c9985a3ba..de29126e80 100644 --- a/src/web/components/form/timezoneselect.jsx +++ b/src/web/components/form/timezoneselect.jsx @@ -4,27 +4,19 @@ */ import timezones from 'gmp/timezones'; -import {map} from 'gmp/utils/array'; import React, {useMemo} from 'react'; -import useTranslation from 'web/hooks/useTranslation'; import PropTypes from 'web/utils/proptypes'; import Select from './select'; const TimeZoneSelectComponent = ({value = 'UTC', ...props}) => { - const [_] = useTranslation(); const timezoneItems = useMemo( - () => [ - { - label: _('Coordinated Universal Time/UTC'), - value: 'UTC', - }, - ...map(timezones, ({name}) => ({ + () => + timezones.map(name => ({ label: name, value: name, })), - ], - [_], + [], ); return