43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { ValueObject } from '@libs/ddd';
|
|
|
|
interface FakeProps {
|
|
name: string;
|
|
}
|
|
|
|
class FakeValueObject extends ValueObject<FakeProps> {
|
|
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',
|
|
});
|
|
});
|
|
});
|