| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import {expect} from 'chai';
- import {Repository} from './repository.js';
- import {DatabaseSchema} from '../database-schema.js';
- import {RepositoryRegistry} from './repository-registry.js';
- describe('RepositoryRegistry', function () {
- describe('setRepositoryCtor', function () {
- it('sets a given class as the repository constructor', function () {
- class MyRepository extends Repository {}
- const dbs = new DatabaseSchema();
- dbs.defineDatasource({name: 'datasource', adapter: 'memory'});
- dbs.defineModel({name: 'model', datasource: 'datasource'});
- const reg = dbs.getService(RepositoryRegistry);
- reg.setRepositoryCtor(MyRepository);
- const rep = reg.getRepository('model');
- expect(rep).to.be.instanceof(Repository);
- expect(rep).to.be.instanceof(MyRepository);
- });
- });
- describe('getRepository', function () {
- it('returns an existing repository by the given name or create new one', function () {
- const dbs = new DatabaseSchema();
- dbs.defineDatasource({name: 'datasource', adapter: 'memory'});
- dbs.defineModel({name: 'modelA', datasource: 'datasource'});
- dbs.defineModel({name: 'modelB', datasource: 'datasource'});
- const reg = dbs.getService(RepositoryRegistry);
- const repA1 = reg.getRepository('modelA');
- const repA2 = reg.getRepository('modelA');
- const repB1 = reg.getRepository('modelB');
- const repB2 = reg.getRepository('modelB');
- expect(repA1).to.be.eq(repA2);
- expect(repB1).to.be.eq(repB2);
- expect(repA1).to.be.not.eq(repB1);
- expect(repA2).to.be.not.eq(repB2);
- });
- it('should ignore naming convention of the model name', function () {
- const dbs = new DatabaseSchema();
- const modelName = 'userProfileDetails';
- dbs.defineDatasource({name: 'datasource', adapter: 'memory'});
- dbs.defineModel({name: modelName, datasource: 'datasource'});
- const reg = dbs.getService(RepositoryRegistry);
- const rep = reg.getRepository(modelName);
- const modelNames = [
- 'UserProfileDetails',
- 'user-profile-details',
- 'user_profile_details',
- 'USER-PROFILE-DETAILS',
- 'USER_PROFILE_DETAILS',
- 'USERPROFILEDETAILS',
- 'userprofiledetails',
- ];
- modelNames.forEach(v => expect(reg.getRepository(v)).to.be.eq(rep));
- });
- it('should respect numbers in the model name', function () {
- const dbs = new DatabaseSchema();
- dbs.defineDatasource({name: 'datasource', adapter: 'memory'});
- dbs.defineModel({name: 'model1', datasource: 'datasource'});
- dbs.defineModel({name: 'model2', datasource: 'datasource'});
- const reg = dbs.getService(RepositoryRegistry);
- const rep1 = reg.getRepository('model1');
- const rep2 = reg.getRepository('model2');
- expect(rep1).to.be.not.eq(rep2);
- });
- });
- });
|