rtech-struct
Version:
Rtech Platform Superstruct Entity
76 lines (68 loc) • 2.61 kB
JavaScript
const Index = require('../../index')
const s = require('superstruct')
const { ZuluDateTimeStruct, Tz, consts } = require('../../structures/lib')
const ConstStruct = consts()
describe('Lib Phone object structure', () => {
test('Success: Lib Phone structure', () => {
for (const i of ['+3333333333', '003333333333', '+1 818 23424545']) {
expect(RegExp(ConstStruct.pReg).test(i)).toBeTruthy()
}
})
test('Failed: Lib Phone structure', () => {
for (const i of ['??!!', '!3333333333', '818%%23424545']) {
expect(RegExp(ConstStruct.pReg).test(i)).toBeFalsy()
}
})
})
describe('Lib Zoulou Date object structure', () => {
test('Success: Lib Zoulou Date structure', () => {
for (const i of ['2021-01-11T10:31:04.519Z', '2021-01-11T10:31:04Z']) {
expect(RegExp(ConstStruct.zdReg).test(i)).toBeTruthy()
}
})
test('Failed: Lib Zoulou Date structure', () => {
for (const i of ['??!!', 'toto', '2021-01-11T10:31:04']) {
expect(RegExp(ConstStruct.zdReg).test(i)).toBeFalsy()
}
})
})
describe('Lib ISO8601 Date object structure', () => {
test.each([
['2021-01-11T10:31:04.519Z'],
['2021-01-11T10:31:04Z'],
['2021-01-11T10:31:04+01:00'],
['2021-01-11T10:31:04-01:00'],
['2021-01-11T10:31:04-01:00'],
['2021-01-11T10:31:04-0100'],
['2021-01-11T10:31:04+0830'],
['2021-01-11T10:31:04.123+0830'],
['2021-01-11T10:31:04.123-08:30']
])('Success: Lib ISO8601 Date structure %s', (string) => {
expect(RegExp(ConstStruct.isoReg).test(string)).toBeTruthy()
})
test('Failed: Lib Zoulou Date structure', () => {
for (const i of ['??!!', 'toto', '2021-01-11T10:31:04']) {
expect(RegExp(ConstStruct.isoReg).test(i)).toBeFalsy()
}
})
})
describe('Time zone string format', () => {
test('Success: Tz is valid', () => {
expect(s.is('Europe/Paris', Tz)).toBeTruthy()
})
test('Fail: Tz is no valid', () => {
expect(s.is('America/Bulp', Tz)).toBeFalsy()
})
})
describe('Existing datetime format', () => {
test('Success: ZuluDateTimeStruct is valid', () => {
expect(s.is('2022-03-02T09:05:01.123Z', ZuluDateTimeStruct)).toBeTruthy()
expect(s.is('2022-03-02T09:05:01.000Z', ZuluDateTimeStruct)).toBeTruthy()
expect(s.is('2022-03-02T09:05:01Z', ZuluDateTimeStruct)).toBeTruthy()
expect(s.is(new Date().toISOString(), ZuluDateTimeStruct)).toBeTruthy()
})
test('Fail: ZuluDateTimeStruct is no valid', () => {
expect(s.is('2022-02-30T09:05:01.123Z', ZuluDateTimeStruct)).toBeFalsy()
expect(s.is('2022-03-33T09:05:01.123Z', ZuluDateTimeStruct)).toBeFalsy()
})
})