UNPKG

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
"use strict"; 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