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/accessors/MessageExtender.spec.ts

35 lines
1.5 KiB

import { Expect, Test } from 'alsatian';
import type { IMessage } from '../../../src/definition/messages';
import { MessageExtender } from '../../../src/server/accessors';
import { TestData } from '../../test-data/utilities';
export class MessageExtenderAccessorTestFixture {
@Test()
public basicMessageExtender() {
Expect(() => new MessageExtender({} as IMessage)).not.toThrow();
Expect(() => new MessageExtender(TestData.getMessage())).not.toThrow();
}
@Test()
public usingMessageExtender() {
const msg: IMessage = {} as IMessage;
const me = new MessageExtender(msg);
Expect(msg.attachments).toBeDefined();
Expect(msg.attachments).toBeEmpty();
Expect(me.addCustomField('thing', 'value')).toBe(me);
Expect(msg.customFields).toBeDefined();
Expect(msg.customFields.thing).toBe('value');
Expect(() => me.addCustomField('thing', 'second')).toThrowError(Error, 'The message already contains a custom field by the key: thing');
Expect(() => me.addCustomField('thing.', 'second')).toThrowError(Error, 'The given key contains a period, which is not allowed. Key: thing.');
Expect(me.addAttachment({})).toBe(me);
Expect(msg.attachments.length).toBe(1);
Expect(me.addAttachments([{ collapsed: true }, { color: '#f00' }])).toBe(me);
Expect(msg.attachments.length).toBe(3);
Expect(me.getMessage()).not.toBe(msg);
Expect(me.getMessage()).toEqual(msg);
}
}