@nyteshade/lattice-legacy
Version:
OO Underpinnings for ease of GraphQL Implementation
97 lines (78 loc) • 2.31 kB
JavaScript
import { GQLEnum, Schema } from '../es6/lattice'
describe('GQLEnums', () => {
var objRef = { testMe: true }
(`
enum Ewok {
SHORT,
EXTRA_HAIRY,
WOOKIE_SIZED,
DANGER_ZONE,
OBJECT_ZONE
}
`)
class Ewok extends GQLEnum {
static get values() {
const { valueFor } = this;
return {
EXTRA_HAIRY: valueFor('HIRSUTE'),
DANGER_ZONE: valueFor(3),
OBJECT_ZONE: valueFor(objRef)
}
}
}
it('should give null for new instances with bad values', () => {
let e
e = new Ewok(null)
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
e = new Ewok(undefined)
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
e = new Ewok('short')
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
e = new Ewok('some random string')
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
e = new Ewok({})
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
e = new Ewok({ value: 'some random string'})
expect(() => e.value).not.toThrow()
expect(e.value).toBe(null)
})
it('should equate to our e key for basic e values', () => {
let e
let basicTypes = ['SHORT', 'WOOKIE_SIZED']
for (let type of basicTypes) {
e = new Ewok(type)
expect(() => e.value).not.toThrow()
expect(e.value).toBe(type)
e = new Ewok({ value: type })
expect(() => e.value).not.toThrow()
expect(e.value).toBe(type)
}
})
it('should allow either the key or the value for complex e vals', () => {
let e
let name = 'EXTRA_HAIRY'
let value = 'HIRSUTE'
e = new Ewok(value)
expect(() => e.value).not.toThrow()
expect(e.name).toBe(name)
expect(e.value).toEqual(value)
e = new Ewok({ value: value })
expect(() => e.value).not.toThrow()
expect(e.name).toBe(name)
expect(e.value).toEqual(value)
e = new Ewok('DANGER_ZONE')
expect(() => e.value).not.toThrow()
expect(e.name).toBe('DANGER_ZONE')
expect(e.value).toBe(3)
e = new Ewok('OBJECT_ZONE')
expect(() => e.value).not.toThrow()
expect(e.name).toBe('OBJECT_ZONE')
expect(e.value).toBe(objRef)
expect(e.value).not.toBe({ testMe: true })
})
})