Skip to content

Commit

Permalink
fix reply types
Browse files Browse the repository at this point in the history
  • Loading branch information
jonaslagoni committed Nov 28, 2023
1 parent d8d9c1a commit 5ae5afe
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/models/v3/operation-reply.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ export class OperationReply extends BaseModel<v3.OperationReplyObject, { id?: st

messages(): MessagesInterface {
return new Messages(
Object.entries(this._json.messages ?? {}).map(([messageId, message]) => {
Object.values(this._json.messages ?? {}).map((message) => {
const messageId = (message as any)[xParserObjectUniqueId];
return this.createModel(Message, message as v3.MessageObject, { id: messageId, pointer: this.jsonPath(`messages/${messageId}`) });
})
);
Expand Down
2 changes: 1 addition & 1 deletion src/spec-types/v3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ export interface OperationTraitObject extends SpecificationExtensions {

export interface OperationReplyObject extends SpecificationExtensions {
channel?: ChannelObject | ReferenceObject;
messages?: MessagesObject;
messages?: (MessageObject | ReferenceObject)[];
address?: OperationReplyAddressObject | ReferenceObject;
}

Expand Down
9 changes: 5 additions & 4 deletions test/models/v3/operation-reply.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,20 +64,21 @@ describe('OperationReply model', function() {

describe('.messages()', function() {
it('should return collection of messages - single message', function() {
const d = new OperationReply({ messages: { someMessage: {} } });
const d = new OperationReply({ messages: [{'x-parser-unique-object-id': 'testMessage'}] });
expect(d.messages()).toBeInstanceOf(Messages);
expect(d.messages().all()).toHaveLength(1);
expect(d.messages().all()[0]).toBeInstanceOf(Message);
expect(d.messages().all()[0].id()).toEqual('testMessage');
});

it('should return collection of messages - more than one messages', function() {
const d = new OperationReply({ messages: { someMessage1: {}, someMessage2: {} } });
const d = new OperationReply({ messages: [{'x-parser-unique-object-id': 'testMessage1'}, {'x-parser-unique-object-id': 'testMessage2'}] });
expect(d.messages()).toBeInstanceOf(Messages);
expect(d.messages().all()).toHaveLength(2);
expect(d.messages().all()[0]).toBeInstanceOf(Message);
expect(d.messages().all()[0].id()).toEqual('someMessage1');
expect(d.messages().all()[0].id()).toEqual('testMessage1');
expect(d.messages().all()[1]).toBeInstanceOf(Message);
expect(d.messages().all()[1].id()).toEqual('someMessage2');
expect(d.messages().all()[1].id()).toEqual('testMessage2');
});

it('should return undefined if address is not present', function() {
Expand Down

0 comments on commit 5ae5afe

Please sign in to comment.