1 | import { GQLEnum, Schema } from '../es6/lattice'
|
2 |
|
3 | describe('GQLEnums', () => {
|
4 | var objRef = { testMe: true }
|
5 |
|
6 | @Schema(`
|
7 | enum Ewok {
|
8 | SHORT,
|
9 | EXTRA_HAIRY,
|
10 | WOOKIE_SIZED,
|
11 | DANGER_ZONE,
|
12 | OBJECT_ZONE
|
13 | }
|
14 | `)
|
15 | class Ewok extends GQLEnum {
|
16 | static get values() {
|
17 | const { valueFor } = this;
|
18 |
|
19 | return {
|
20 | EXTRA_HAIRY: valueFor('HIRSUTE'),
|
21 | DANGER_ZONE: valueFor(3),
|
22 | OBJECT_ZONE: valueFor(objRef)
|
23 | }
|
24 | }
|
25 | }
|
26 |
|
27 | it('should give null for new instances with bad values', () => {
|
28 | let e
|
29 |
|
30 | e = new Ewok(null)
|
31 | expect(() => e.value).not.toThrow()
|
32 | expect(e.value).toBe(null)
|
33 |
|
34 | e = new Ewok(undefined)
|
35 | expect(() => e.value).not.toThrow()
|
36 | expect(e.value).toBe(null)
|
37 |
|
38 | e = new Ewok('short')
|
39 | expect(() => e.value).not.toThrow()
|
40 | expect(e.value).toBe(null)
|
41 |
|
42 | e = new Ewok('some random string')
|
43 | expect(() => e.value).not.toThrow()
|
44 | expect(e.value).toBe(null)
|
45 |
|
46 | e = new Ewok({})
|
47 | expect(() => e.value).not.toThrow()
|
48 | expect(e.value).toBe(null)
|
49 |
|
50 | e = new Ewok({ value: 'some random string'})
|
51 | expect(() => e.value).not.toThrow()
|
52 | expect(e.value).toBe(null)
|
53 | })
|
54 |
|
55 | it('should equate to our e key for basic e values', () => {
|
56 | let e
|
57 | let basicTypes = ['SHORT', 'WOOKIE_SIZED']
|
58 |
|
59 | for (let type of basicTypes) {
|
60 | e = new Ewok(type)
|
61 | expect(() => e.value).not.toThrow()
|
62 | expect(e.value).toBe(type)
|
63 |
|
64 | e = new Ewok({ value: type })
|
65 | expect(() => e.value).not.toThrow()
|
66 | expect(e.value).toBe(type)
|
67 | }
|
68 | })
|
69 |
|
70 | it('should allow either the key or the value for complex e vals', () => {
|
71 | let e
|
72 | let name = 'EXTRA_HAIRY'
|
73 | let value = 'HIRSUTE'
|
74 |
|
75 | e = new Ewok(value)
|
76 | expect(() => e.value).not.toThrow()
|
77 | expect(e.name).toBe(name)
|
78 | expect(e.value).toEqual(value)
|
79 |
|
80 | e = new Ewok({ value: value })
|
81 | expect(() => e.value).not.toThrow()
|
82 | expect(e.name).toBe(name)
|
83 | expect(e.value).toEqual(value)
|
84 |
|
85 | e = new Ewok('DANGER_ZONE')
|
86 | expect(() => e.value).not.toThrow()
|
87 | expect(e.name).toBe('DANGER_ZONE')
|
88 | expect(e.value).toBe(3)
|
89 |
|
90 | e = new Ewok('OBJECT_ZONE')
|
91 | expect(() => e.value).not.toThrow()
|
92 | expect(e.name).toBe('OBJECT_ZONE')
|
93 | expect(e.value).toBe(objRef)
|
94 | expect(e.value).not.toBe({ testMe: true })
|
95 | })
|
96 | })
|