import { HostIdentificationModel, HostIdentificationSchema } from './host-identification.model'; describe('HostIdentificationModel', () => { describe('constructor', () => { it('should create and initialize empty model', () => { const model = new HostIdentificationModel(); expect(model.email).toBe(''); expect(model.givenName).toBe(''); expect(model.familyName).toBe(''); expect(model.issuerMetadata).toEqual({}); expect(model.nickname).toBe(null); expect(model.picture).toBe(null); expect(model.sub).toBe(''); expect(model.updatedAt).toBeInstanceOf(Date); }); it('should intialize model from schema', () => { const schema: HostIdentificationSchema = { email: 'test-email', family_name: 'test-family-name', given_name: 'test-given-name', issuer_metadata: {}, nickname: 'test-nickname', picture: 'test-picture', sub: 'test-sub', updated_at: 'test-data', }; const model = new HostIdentificationModel(schema); expect(model.email).toBe(schema.email); expect(model.familyName).toBe(schema.family_name); expect(model.givenName).toBe(schema.given_name); expect(model.issuerMetadata).toBe(schema.issuer_metadata); expect(model.nickname).toBe(schema.nickname); expect(model.picture).toBe(schema.picture); expect(model.sub).toBe(schema.sub); expect(model.updatedAt.getTime()).toBe(new Date(schema.updated_at).getTime()); }); }); describe('#fromSchema', () => { it('should initialize from a schema input', () => { const model = new HostIdentificationModel(); expect(model.email).toBe(''); expect(model.givenName).toBe(''); expect(model.familyName).toBe(''); expect(model.issuerMetadata).toEqual({}); expect(model.nickname).toBe(null); expect(model.picture).toBe(null); expect(model.sub).toBe(''); expect(model.updatedAt).toBeInstanceOf(Date); const schema: HostIdentificationSchema = { email: 'test-email', family_name: 'test-family-name', given_name: 'test-given-name', issuer_metadata: {}, nickname: 'test-nickname', picture: 'test-picture', sub: 'test-sub', updated_at: 'Mon Sep 28 2020 20:31:03 GMT-0700', }; model.fromSchema(schema); expect(model.email).toBe(schema.email); expect(model.familyName).toBe(schema.family_name); expect(model.givenName).toBe(schema.given_name); expect(model.issuerMetadata).toBe(schema.issuer_metadata); expect(model.nickname).toBe(schema.nickname); expect(model.picture).toBe(schema.picture); expect(model.sub).toBe(schema.sub); expect(model.updatedAt.getTime()).toBe(new Date(schema.updated_at).getTime()); }); }); describe('#toSchema', () => { it('should build a schema object from the model', () => { const model = new HostIdentificationModel(); model.email = 'test-email'; model.familyName = 'test-family'; model.givenName = 'test-given'; model.issuerMetadata = {}; model.nickname = 'test-nick'; model.picture = 'test-pic'; model.sub = 'test-sub'; model.updatedAt = new Date('Mon Sep 28 2020 20:31:03 GMT-0700'); const schema = model.toSchema(); expect(schema.email).toBe(model.email); expect(schema.family_name).toBe(model.familyName); expect(schema.given_name).toBe(model.givenName); expect(schema.issuer_metadata).toBe(model.issuerMetadata); expect(schema.nickname).toBe(model.nickname); expect(schema.picture).toBe(model.picture); expect(schema.sub).toBe(model.sub); expect(new Date(schema.updated_at).getTime()).toBe(model.updatedAt.getTime()); }); }); });