UNPKG

2.31 kBJavaScriptView Raw
1import { GQLEnum, Schema } from '../es6/lattice'
2
3describe('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})