domain-objects
Version:
A simple, convenient way to represent domain objects, leverage domain knowledge, and add runtime validation in your code base.
33 lines • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const uuid_1 = require("uuid");
const DomainEntity_1 = require("./DomainEntity");
const DomainObject_1 = require("./DomainObject");
describe('DomainEntity', () => {
it('should be able to represent an entity', () => {
class RocketShip extends DomainEntity_1.DomainEntity {
}
RocketShip.unique = ['serialNumber'];
const ship = new RocketShip({
serialNumber: (0, uuid_1.v4)(),
fuelQuantity: 9001,
passengers: 21,
});
expect(ship).toBeInstanceOf(RocketShip); // sanity check
expect(ship).toBeInstanceOf(DomainObject_1.DomainObject); // should also be instance of this, since extends it
});
it('should be spreadable', () => {
class RocketShip extends DomainEntity_1.DomainEntity {
}
RocketShip.unique = ['serialNumber'];
RocketShip.updatable = ['fuelQuantity', 'passengers'];
const ship = new RocketShip({
serialNumber: (0, uuid_1.v4)(),
fuelQuantity: 9001,
passengers: 21,
});
const updatedShip = new RocketShip(Object.assign(Object.assign({}, ship), { passengers: 27 }));
expect(updatedShip.fuelQuantity).toEqual(9001); // sanity check
});
});
//# sourceMappingURL=DomainEntity.test.js.map