-
Notifications
You must be signed in to change notification settings - Fork 253
/
Copy pathchildTimezoneOffset.ts
79 lines (63 loc) · 1.76 KB
/
childTimezoneOffset.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import expect from 'expect';
import { childTimezoneOffset, parse, Registry } from '../../../src/jxt';
interface Example {
tzo?: number | string;
}
const registry = new Registry();
registry.define({
element: 'x',
fields: {
tzo: childTimezoneOffset(null, 'tzo')
},
namespace: '',
path: 'example'
});
test('[Type: childTimezoneOffset] Basic import', () => {
const xml = parse(`
<x>
<tzo>-05:00</tzo>
</x>`);
const ex = registry.import(xml) as Example;
expect(ex).toBeTruthy();
expect(ex).toEqual({
tzo: 300
});
});
test('[Type: childTimezoneOffset] Basic import positive', () => {
const xml = parse(`
<x>
<tzo>+05:00</tzo>
</x>`);
const ex = registry.import(xml) as Example;
expect(ex).toBeTruthy();
expect(ex).toEqual({
tzo: -300
});
});
test('[Type: childTimezoneOffset] Basic export negative', () => {
const data: Example = {
tzo: -480
};
const ex = registry.export('example', data);
expect(ex).toBeTruthy();
const reimported = registry.import(ex!) as Example;
expect(data).toEqual(reimported);
});
test('[Type: childTimezoneOffset] Basic export positive', () => {
const data: Example = {
tzo: 480
};
const ex = registry.export('example', data);
expect(ex).toBeTruthy();
const reimported = registry.import(ex!) as Example;
expect(data).toEqual(reimported);
});
test('[Type: childTimezoneOffset] Export string', () => {
const data: Example = {
tzo: '-09:00'
};
const ex = registry.export('example', data);
expect(ex).toBeTruthy();
const reimported = registry.import(ex!) as Example;
expect(reimported.tzo).toEqual(540);
});