The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/packages/apps-engine/tests/server/managers/AppExternalComponentManager...

154 lines
5.9 KiB

import { Expect, SetupFixture, Test } from 'alsatian';
import type { IExternalComponent } from '../../../src/definition/externalComponent/IExternalComponent';
import { ExternalComponentLocation } from '../../../src/definition/externalComponent/IExternalComponent';
import { AppExternalComponentManager } from '../../../src/server/managers';
export class AppExternalComponentManagerTestFixture {
private mockExternalComponent1: IExternalComponent;
private mockExternalComponent2: IExternalComponent;
private mockExternalComponent3: IExternalComponent;
private mockAppExternalComponentManager: AppExternalComponentManager;
public register(aecm: AppExternalComponentManager, externalComponent: IExternalComponent): void {
const { appId } = externalComponent;
aecm.addExternalComponent(appId, externalComponent);
aecm.registerExternalComponents(appId);
}
@SetupFixture
public setupFixture() {
this.mockExternalComponent1 = {
appId: '1eb382c0-3679-44a6-8af0-18802e342fb1',
name: 'TestExternalComponent1',
description: 'TestExternalComponent1',
url: '',
icon: '',
location: ExternalComponentLocation.CONTEXTUAL_BAR,
} as IExternalComponent;
this.mockExternalComponent2 = {
appId: '125a944b-9747-4e6e-b029-6e9b26bb3481',
name: 'TestExternalComponent2',
description: 'TestExternalComponent2',
url: '',
icon: '',
location: ExternalComponentLocation.CONTEXTUAL_BAR,
} as IExternalComponent;
this.mockExternalComponent3 = {
...this.mockExternalComponent2,
appId: this.mockExternalComponent1.appId,
name: this.mockExternalComponent2.name,
description: 'TestExternalComponent3',
} as IExternalComponent;
this.mockAppExternalComponentManager = new AppExternalComponentManager();
this.mockAppExternalComponentManager.addExternalComponent(this.mockExternalComponent1.appId, this.mockExternalComponent1);
}
@Test()
public basicAppExternalComponentManager() {
const aecm = new AppExternalComponentManager();
Expect((aecm as any).registeredExternalComponents.size).toBe(0);
Expect((aecm as any).appTouchedExternalComponents.size).toBe(0);
}
@Test()
public verifyGetRegisteredExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
Expect(aecm.getRegisteredExternalComponents().size).toBe(0);
this.register(aecm, component);
Expect(aecm.getRegisteredExternalComponents().size).toBe(1);
}
@Test()
public verifyGetAppTouchedExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
Expect(aecm.getAppTouchedExternalComponents().size).toBe(0);
aecm.addExternalComponent(component.appId, component);
Expect(aecm.getAppTouchedExternalComponents().size).toBe(1);
}
@Test()
public verifyGetExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
Expect(aecm.getExternalComponents(component.appId)).toBe(null);
aecm.addExternalComponent(component.appId, component);
Expect(aecm.getExternalComponents(component.appId).size).toBe(1);
}
@Test()
public verifyGetProvidedComponents() {
const aecm = new AppExternalComponentManager();
const component1 = this.mockExternalComponent1;
const component2 = this.mockExternalComponent2;
Expect(Array.isArray(aecm.getProvidedComponents())).toBe(true);
this.register(aecm, component1);
this.register(aecm, component2);
Expect(aecm.getProvidedComponents().length).toBe(2);
}
@Test()
public verifyAddExternalComponent() {
const aecm1 = new AppExternalComponentManager();
const component1 = this.mockExternalComponent1;
const component3 = this.mockExternalComponent3;
aecm1.addExternalComponent(component1.appId, component1);
Expect(aecm1.getAppTouchedExternalComponents().size).toBe(1);
Expect(aecm1.getExternalComponents(component1.appId).size).toBe(1);
aecm1.addExternalComponent(component1.appId, component3);
Expect(aecm1.getExternalComponents(component1.appId).size).toBe(2);
}
@Test()
public verifyRegisterExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
Expect(aecm.getRegisteredExternalComponents().size).toBe(0);
this.register(aecm, component);
Expect(aecm.getRegisteredExternalComponents().size).toBe(1);
}
@Test()
public verifyUnregisterExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
this.register(aecm, component);
Expect(aecm.getAppTouchedExternalComponents().size).toBe(1);
Expect(aecm.getRegisteredExternalComponents().size).toBe(1);
aecm.unregisterExternalComponents(component.appId);
Expect(aecm.getAppTouchedExternalComponents().size).toBe(1);
Expect(aecm.getRegisteredExternalComponents().size).toBe(0);
}
@Test()
public verifyPurgeExternalComponents() {
const aecm = new AppExternalComponentManager();
const component = this.mockExternalComponent1;
this.register(aecm, component);
Expect(aecm.getAppTouchedExternalComponents().size).toBe(1);
Expect(aecm.getRegisteredExternalComponents().size).toBe(1);
aecm.purgeExternalComponents(component.appId);
Expect(aecm.getAppTouchedExternalComponents().size).toBe(0);
Expect(aecm.getRegisteredExternalComponents().size).toBe(0);
}
}