UNPKG

rtech-struct

Version:

Rtech Platform Superstruct Entity

86 lines (79 loc) 2.01 kB
const s = require('superstruct') const { sfu } = require('../../../index') const struct = sfu().vehicle describe('Vehicle object structure', () => { test('Success: vehicle structure', () => { expect( s.is( { tracking_provider: 'tracking', plate: 'AB 123 CD', information: 'blabla', vehicle_type: 'transport', brand: 'Volvo', carrier: { code: 'CARRIER' }, drivers: [ { phone: '+352 42 42 42', name: 'Driver name' } ], packages: ['17504abf-40ea-4b20-86dd-eb6ff00af325'] }, struct.vehicle ) ).toBeTruthy() }) test('Fail: wrong type', () => { const [error1] = s.validate( { tracking_provider: 'tracking', plate: 'AB 123 CD', information: 'blabla', vehicle_type: 'transport', brand: 'Volvo', carrier: { code: 'CARRIER' }, drivers: [ { phone: '+352 42 42 42', name: 'Driver name' } ], packages: ['17504abf-40ea-4b20-86dd-eb6ff00af325'], type: 'wrong type' }, struct.vehicle ) expect(error1).toBeInstanceOf(s.StructError) expect(error1.path[0]).toBe('type') }) test('Success: Point structure type is defaulted to point', () => { const [error, entity] = s.validate( { tracking_provider: 'tracking', plate: 'AB 123 CD', information: 'blabla', vehicle_type: 'transport', brand: 'Volvo', carrier: { code: 'CARRIER' }, drivers: [ { phone: '+352 42 42 42', name: 'Driver name' } ], packages: ['17504abf-40ea-4b20-86dd-eb6ff00af325'] }, struct.vehicle, { coerce: true } ) expect(error).toBeUndefined() expect(entity.type).toBe('sfu/vehicle') }) })