@pashoo2/clean-architecture-boilerplate
Version:
Clean architecture boilerplate
99 lines • 5.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runTestsForEntityClassFabricWithServicesAndUtilities = void 0;
const abstractClasses_1 = require("../../../entities/abstractClasses");
const baseEntity_test_1 = require("../../../entities/abstractClasses/baseEntity/baseEntity.test");
const entityType_stub_1 = require("../../../__mock__/entityType.stub");
const domainEventsBus_mock_1 = require("../../../__mock__/services/domainEventsBus.mock");
const identifiers_mock_1 = require("../../../__mock__/services/identifiers.mock");
const valueObjects_mock_1 = require("../../../__mock__/valueObjects.mock");
const implementations_1 = require("../../utilities/implementations");
function runTestsForEntityClassFabricWithServicesAndUtilities(entityClassFabricWithServicesAndUtilities, testName = '') {
describe(testName, () => {
const ENTITY_EVENT_NAME = 'ENTITY_EVENT_NAME';
const ENTITY_EVENT_FAILED_NAME = `failed::${ENTITY_EVENT_NAME}`;
const uniqueEntityIdentitySimple = new valueObjects_mock_1.SimpleIdentityValueObjectClassWithComparisonMock(valueObjects_mock_1.UNIQUE_ENTITY_IDENTITY_SIMPLE_STUB);
const uniqueEntityIdentityMultiStub = new valueObjects_mock_1.MultipleIdentityValueObjectClassWithComparisonMock(valueObjects_mock_1.UNIQUE_ENTITY_IDENTITY_MULTI_STUB);
describe.each([uniqueEntityIdentitySimple, uniqueEntityIdentityMultiStub])('Entity identity %p', entityUniqueIdentifier => {
describe.each([true, false])('Is deleted %p', isDeleted => {
const parameters = {
id: entityUniqueIdentifier,
isDeleted,
};
const services = {
domainEventBus: (0, domainEventsBus_mock_1.getMockDomainEventBus)(),
generateUniqueIdentifierString: identifiers_mock_1.serviceGeneratorIdentifierUnique,
};
class BaseEntityTestClass extends abstractClasses_1.BaseEntity {
constructor() {
super(...arguments);
this._type = entityType_stub_1.ENTITY_TYPE_STUB;
}
_getTransferableProps() {
return {};
}
_validate() {
if (!this.id) {
throw new Error('Id should not be empty');
}
if (!this.type) {
throw new Error('Type should not be empty');
}
}
compareEntitiesIdentities(...args) {
return this._compareEntitiesIdentities(args[0], args[1]);
}
compareEntitiesTypes(...args) {
return this._compareEntitiesTypes(args[0], args[1]);
}
}
const entityBaseEntity = (0, implementations_1.createAndInitializeEntity)(BaseEntityTestClass, parameters, services);
const utilities = {
compareEntitiesTypes: jest.fn((...args) => {
return entityBaseEntity.compareEntitiesTypes(args[0], args[1]);
}),
compareEntitiesIdentities: jest.fn((...args) => {
return entityBaseEntity.compareEntitiesIdentities(args[0], args[1]);
}),
};
function getTestsParams() {
class EntityTestClass extends entityClassFabricWithServicesAndUtilities({
type: entityType_stub_1.ENTITY_TYPE_STUB,
getTransferableProps(instance) {
return {
id: instance.id,
isDeleted: instance.isDeleted,
type: instance.type,
};
},
validateInstance() { },
}, services, utilities) {
}
const parameters = {
id: entityUniqueIdentifier,
isDeleted,
};
const entity = (0, implementations_1.createAndInitializeEntity)(EntityTestClass, parameters);
return {
EntityClass: EntityTestClass,
entity,
entityEventFailedName: ENTITY_EVENT_FAILED_NAME,
entityEventName: ENTITY_EVENT_NAME,
entityType: entityType_stub_1.ENTITY_TYPE_STUB,
entityUniqueIdentifier,
isDeleted,
parameters,
services,
};
}
(0, baseEntity_test_1.runEntityTests)(getTestsParams);
afterAll(() => {
expect(utilities.compareEntitiesIdentities).toBeCalled();
expect(utilities.compareEntitiesTypes).toBeCalled();
});
});
});
});
}
exports.runTestsForEntityClassFabricWithServicesAndUtilities = runTestsForEntityClassFabricWithServicesAndUtilities;
//# sourceMappingURL=entityClassFabricWithServicesAndUtilities.runTest.js.map