import { ValueObject } from '@libs/ddd'; interface FakeProps { name: string; } class FakeValueObject extends ValueObject { get name(): string { return this.props.name; } // eslint-disable-next-line @typescript-eslint/no-unused-vars protected validate(props: FakeProps): void { return; } } describe('Value Object Base', () => { it('should create a base value object', () => { const fakeValueObject = new FakeValueObject({ name: 'fakeName' }); expect(fakeValueObject).toBeDefined(); expect(ValueObject.isValueObject(fakeValueObject)).toBeTruthy(); }); it('should compare value objects', () => { const fakeValueObject = new FakeValueObject({ name: 'fakeName' }); const fakeValueObjectClone = new FakeValueObject({ name: 'fakeName' }); const undefinedFakeValueObject: FakeValueObject = undefined; const nullFakeValueObject: FakeValueObject = null; expect(fakeValueObject.equals(undefinedFakeValueObject)).toBeFalsy(); expect(fakeValueObject.equals(nullFakeValueObject)).toBeFalsy(); expect(fakeValueObject.equals(fakeValueObject)).toBeTruthy(); expect(fakeValueObject.equals(fakeValueObjectClone)).toBeTruthy(); }); it('should unpack value object props', () => { const fakeValueObject = new FakeValueObject({ name: 'fakeName' }); expect(fakeValueObject.unpack()).toEqual({ name: 'fakeName', }); }); });