UNPKG

iana-tz-json-generator-and-importer

Version:

Quickly get timezone names and metadata from the IANA into your application in the format you want.

71 lines (58 loc) 2.71 kB
import {readFileAsync} from '../util/util'; import * as path from 'path'; import {extractTzData} from './extract-tz-data'; import {IANATzDataFiles} from '../get-iana-tz-data/get-iana-tz-data'; import {IExtractedTimezone} from '../types-for-ts-templates'; describe('extractTzData', () => { it('should extract data from the IANA .tab files', async() => { const zoneFileName = 'zone1970-test-file.tab'; const filePath = path.join(__dirname, zoneFileName); const testFile = await readFileAsync(filePath); const zoneData: IANATzDataFiles = { version: '2018c', [zoneFileName]: testFile.toString() }; const result = extractTzData(zoneData, zoneFileName); expect(result.version).toEqual('2018c'); expect(result.numberOfZones).toEqual(9); const extractedTimezone: IExtractedTimezone = { countryCodes: ['BR'], coordinates: { latitude: { sign: '+', degree: 2, minute: 49, negative: false, second: null, decimal: 2.816667 }, longitude: { sign: '-', degree: 60, minute: 40, negative: true, second: null, decimal: -60.666667} }, timezoneName: 'Indian/Test', geographicAreaDisplayName: 'Indian Ocean', geographicArea: 'Indian', location: 'Test', locationDisplayName: 'Test', comments: 'Foo' }; expect(result.zones[1]).toEqual(extractedTimezone) }); it('should extract data from the IANA .tab files with seconds', async() => { const zoneFileName = 'zone1970-test-file.tab'; const filePath = path.join(__dirname, zoneFileName); const testFile = await readFileAsync(filePath); const zoneData: IANATzDataFiles = { version: '2018c', [zoneFileName]: testFile.toString() }; const result = extractTzData(zoneData, zoneFileName); expect(result.version).toEqual('2018c'); expect(result.numberOfZones).toEqual(9); const extractedTimezone: IExtractedTimezone = { countryCodes: ['JM'], coordinates: { latitude: { sign: '+', degree: 17, minute: 58, second: 5, negative: false, decimal: 17.968056 }, longitude: { sign: '-', degree: 76, minute: 47, second: 36, negative: true, decimal: -76.793333 } }, timezoneName: 'Cameron/TestA', geographicArea: 'Cameron', geographicAreaDisplayName: 'Cameron', location: 'TestA', locationDisplayName: 'TestA', comments: null }; expect(result.zones[2]).toEqual(extractedTimezone) }) });