datahub/datahub-web/@datahub/shared/tests/unit/services/entity-lists-manager-test.ts
Charlie Tran 5072ef013c
feat(frontend): Module consolidation - clean up for OS logic - init virtual assistant (#1821)
* Module consolidation on datahub-web - clean up to some OS logic from previous update - initial implementation of virtual assistant

* Fix accidental change to datahub user module license
2020-08-28 10:31:15 -07:00

88 lines
3.1 KiB
TypeScript

import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import { FeatureEntity } from '@datahub/data-models/entity/feature/feature-entity';
import EntityListsManager from '@datahub/shared/services/entity-lists-manager';
import { MockEntity } from '@datahub/data-models/entity/mock/mock-entity';
module('Unit | Service | entity-lists-manager', function(hooks): void {
setupTest(hooks);
test('it adds and removes an entity', function(assert): void {
const service: EntityListsManager = this.owner.lookup('service:entity-lists-manager');
const testEntity = new FeatureEntity('urn');
assert.ok(service, 'Expected entity-lists-manager to be a service');
// Add an entity to list
service.addToList(testEntity);
assert.ok(Array.isArray(service.entities[FeatureEntity.displayName]), 'Expected entity list name to be an Array');
assert.ok(service.entities[FeatureEntity.displayName].length === 1, 'Expected entity list to contain 1 entity');
// Add same entity to list
service.addToList(testEntity);
assert.ok(
service.entities[FeatureEntity.displayName].length === 1,
'Expected adding pre-existing entity to be a noop, list length should still be 1'
);
// Remove entity from list
service.removeFromList(testEntity);
assert.ok(
service.entities[FeatureEntity.displayName].length === 0,
'Expected entity list to be empty when removeFromList is called with sole entity'
);
});
test('it adds multiple entities and correctly groups entities', function(assert): void {
const service: EntityListsManager = this.owner.lookup('service:entity-lists-manager');
const testFeatures = [new FeatureEntity('feature-urn-a'), new FeatureEntity('feature-urn-b')];
const testMetrics = [new MockEntity('metric-urn-a'), new MockEntity('metric-urn-b')];
service.supportedListEntities = [MockEntity.displayName, FeatureEntity.displayName];
// Add multiple entity types to list
service.addToList([...testFeatures, ...testMetrics]);
assert.equal(
service.entities[FeatureEntity.displayName].length,
testMetrics.length,
`Expected test features to be grouped under ${FeatureEntity.displayName}`
);
assert.equal(
service.entities[MockEntity.displayName].length,
testFeatures.length,
`Expected testMetrics to be grouped under ${MockEntity.displayName}`
);
// Remove a single entity from list
service.removeFromList(testMetrics[1]);
assert.equal(
service.entities[MockEntity.displayName].length,
testMetrics.length - 1,
`Expected stored entities for ${MockEntity.displayName} to be reduced by 1`
);
// Re-add removed entity from list
service.addToList(testMetrics[1]);
assert.equal(
service.entities[MockEntity.displayName].length,
testMetrics.length,
'Expected a previously removed entity to be eligible for re-addition'
);
// Remove multiple entities from list
service.removeFromList(testFeatures);
assert.equal(
service.entities[FeatureEntity.displayName].length,
0,
'Expected removeFromList to remove all entities in argument list'
);
});
});