Add `Message` descriptor functions
This commit is contained in:
parent
8febf125b1
commit
b3db0bf179
|
@ -1,11 +1,37 @@
|
|||
const Attachment = require('./attachment');
|
||||
|
||||
exports.GROUP = 'group';
|
||||
exports.PRIVATE = 'private';
|
||||
|
||||
const GROUP = 'group';
|
||||
const PRIVATE = 'private';
|
||||
|
||||
// Public API
|
||||
exports.GROUP = GROUP;
|
||||
exports.PRIVATE = PRIVATE;
|
||||
|
||||
// Schema
|
||||
// Message -> Promise Message
|
||||
exports.upgradeSchema = async message =>
|
||||
Object.assign({}, message, {
|
||||
attachments:
|
||||
await Promise.all(message.attachments.map(Attachment.upgradeSchema)),
|
||||
});
|
||||
|
||||
// Descriptors
|
||||
exports.getGroupDescriptor = group => ({
|
||||
type: GROUP,
|
||||
id: group.id,
|
||||
});
|
||||
|
||||
// Matches data from `libtextsecure` `MessageReceiver::handleSentMessage`:
|
||||
exports.getDescriptorForSent = ({ message, destination }) => (
|
||||
message.group
|
||||
? exports.getGroupDescriptor(message.group)
|
||||
: { type: PRIVATE, id: destination }
|
||||
);
|
||||
|
||||
// Matches data from `libtextsecure` `MessageReceiver::handleDataMessage`:
|
||||
exports.getDescriptorForReceived = ({ message, source }) => (
|
||||
message.group
|
||||
? exports.getGroupDescriptor(message.group)
|
||||
: { type: PRIVATE, id: source }
|
||||
);
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
const { assert } = require('chai');
|
||||
|
||||
const Message = require('../../../js/modules/types/message');
|
||||
|
||||
|
||||
describe('Message', () => {
|
||||
describe('getGroupDescriptor', () => {
|
||||
it('should return valid descriptor`', () => {
|
||||
const group = {
|
||||
id: '+10000000000',
|
||||
};
|
||||
const expected = {
|
||||
type: 'group',
|
||||
id: '+10000000000',
|
||||
};
|
||||
assert.deepEqual(Message.getGroupDescriptor(group), expected);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDescriptorForSent', () => {
|
||||
context('for private messages', () => {
|
||||
it('should return valid descriptor`', () => {
|
||||
const data = {
|
||||
message: {
|
||||
id: '+10000000000',
|
||||
},
|
||||
destination: '+10000000000',
|
||||
};
|
||||
|
||||
const expected = {
|
||||
type: 'private',
|
||||
id: '+10000000000',
|
||||
};
|
||||
|
||||
assert.deepEqual(Message.getDescriptorForSent(data), expected);
|
||||
});
|
||||
});
|
||||
context('for group messages', () => {
|
||||
it('should return valid descriptor`', () => {
|
||||
const data = {
|
||||
message: {
|
||||
group: {
|
||||
id: '+10000000000',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const expected = {
|
||||
type: 'group',
|
||||
id: '+10000000000',
|
||||
};
|
||||
|
||||
assert.deepEqual(Message.getDescriptorForSent(data), expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDescriptorForReceived', () => {
|
||||
context('for private messages', () => {
|
||||
it('should return valid descriptor`', () => {
|
||||
const data = {
|
||||
message: {
|
||||
id: '+10000000000',
|
||||
},
|
||||
source: '+10000000000',
|
||||
};
|
||||
|
||||
const expected = {
|
||||
type: 'private',
|
||||
id: '+10000000000',
|
||||
};
|
||||
|
||||
assert.deepEqual(Message.getDescriptorForReceived(data), expected);
|
||||
});
|
||||
});
|
||||
context('for group messages', () => {
|
||||
it('should return valid descriptor`', () => {
|
||||
const data = {
|
||||
message: {
|
||||
group: {
|
||||
id: '+10000000000',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const expected = {
|
||||
type: 'group',
|
||||
id: '+10000000000',
|
||||
};
|
||||
|
||||
assert.deepEqual(Message.getDescriptorForReceived(data), expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue