rtech-struct
Version:
Rtech Platform Superstruct Entity
52 lines (45 loc) • 1.86 kB
JavaScript
const { InputAddress } = require('../../../../structures/address-book/v3/inputAddress')
const { validate } = require('superstruct')
const createValidInputAddress = () => ({
street: '123 Main St',
city: 'New York',
country: 'US',
position: {
lat: 40.7128,
lon: -74.006
},
timezone: 'America/New_York'
})
describe('InputAddress Structure', () => {
test('Success: InputAddress', () => {
const validInputAddress = createValidInputAddress()
const [error, result] = validate(validInputAddress, InputAddress, { coerce: true })
expect(error).toBeUndefined()
expect(result).toBeDefined()
expect(result.id).toBeDefined()
})
test('Failure: InputAddress - Uncoerced', () => {
const validInputAddress = createValidInputAddress()
const [error, result] = validate(validInputAddress, InputAddress, { coerce: false })
expect(error).toBeDefined()
expect(result).toBeUndefined()
})
test('Failure: InputAddress - Missing required field', () => {
const invalidInputAddress = { ...createValidInputAddress(), street: undefined }
const [error, result] = validate(invalidInputAddress, InputAddress, { coerce: true })
expect(error).toBeDefined()
expect(result).toBeUndefined()
})
test('Failure: InputAddress - Invalid position', () => {
const invalidInputAddress = { ...createValidInputAddress(), position: 'invalid' }
const [error, result] = validate(invalidInputAddress, InputAddress, { coerce: true })
expect(error).toBeDefined()
expect(result).toBeUndefined()
})
test('Failure: InputAddress - Missing timezone', () => {
const invalidInputAddress = { ...createValidInputAddress(), timezone: undefined }
const [error, result] = validate(invalidInputAddress, InputAddress, { coerce: true })
expect(error).toBeDefined()
expect(result).toBeUndefined()
})
})