-
Notifications
You must be signed in to change notification settings - Fork 403
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* add all the tests Signed-off-by: Eshaan Aggarwal <[email protected]> * add tests for false case Signed-off-by: Eshaan Aggarwal <[email protected]> --------- Signed-off-by: Eshaan Aggarwal <[email protected]>
- Loading branch information
Showing
4 changed files
with
359 additions
and
0 deletions.
There are no files selected for viewing
71 changes: 71 additions & 0 deletions
71
packages/caliper-core/test/common/core/messages/assignedMessage.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const AssignedMessage = require('../../../../lib/common/messages/assignedMessage'); | ||
const MessageTypes = require('../../../../lib/common/utils/constants').Messages.Types; | ||
|
||
const chai = require('chai'); | ||
chai.should(); | ||
|
||
describe('AssignedMessage', () => { | ||
describe('Constructor', () => { | ||
it('should create an AssignedMessage instance with sender, recipients, and type', () => { | ||
const sender = 'John'; | ||
const recipients = ['Alice', 'Bob']; | ||
const message = new AssignedMessage(sender, recipients); | ||
|
||
message.should.be.an.instanceOf(AssignedMessage); | ||
message.sender.should.equal(sender); | ||
message.recipients.should.deep.equal(recipients); | ||
message.type.should.equal(MessageTypes.Assigned); | ||
}); | ||
|
||
it('should set the content of the message as an empty object', () => { | ||
const message = new AssignedMessage('John', ['Alice', 'Bob']); | ||
|
||
message.content.should.deep.equal({}); | ||
}); | ||
|
||
it('should parse the date argument as a Date object for the AssignedMessage', () => { | ||
const date = '2024-04-25'; | ||
const message = new AssignedMessage('John', ['Alice', 'Bob'], date); | ||
|
||
message.date.should.be.an.instanceOf(Date); | ||
message.date | ||
.toISOString() | ||
.should.equal(new Date(date).toISOString()); | ||
}); | ||
|
||
it('should set the error correctly if passed', () => { | ||
const error = 'Some error'; | ||
const message = new AssignedMessage( | ||
'John', | ||
['Alice', 'Bob'], | ||
undefined, | ||
error | ||
); | ||
|
||
message.error.should.equal(error); | ||
}); | ||
|
||
it('should create an AssignedMessage with undefined date and error if not provided', () => { | ||
const message = new AssignedMessage('John', ['Alice', 'Bob']); | ||
|
||
chai.expect(message.date).to.be.undefined; | ||
chai.expect(message.error).to.be.undefined; | ||
}); | ||
}); | ||
}); |
146 changes: 146 additions & 0 deletions
146
packages/caliper-core/test/common/core/messages/message.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const Message = require('../../../../lib/common/messages/message'); | ||
const AllMessageTarget = require('../../../../lib/common/utils/constants').Messages.Targets.All | ||
|
||
const chai = require('chai'); | ||
chai.should(); | ||
|
||
describe('Message', () => { | ||
const mockSender = 'Test User'; | ||
const mockRecipients = ["recepient-id-1", "recepient-id-2", "recepient-id-3"]; | ||
const mockType = 'Assigned'; | ||
const mockContent = { message: 'Hello' }; | ||
const mockDate = '2024-04-25'; | ||
const mockError = "Test Error"; | ||
|
||
describe("Constructor", () => { | ||
it("should create a Message instance with sender, recipients, type, content, date, and error", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate, mockError); | ||
|
||
message.should.be.an.instanceOf(Message); | ||
message.sender.should.equal(mockSender); | ||
message.recipients.should.deep.equal(mockRecipients); | ||
message.type.should.equal(mockType); | ||
message.content.should.deep.equal(mockContent); | ||
message.date.should.be.an.instanceOf(Date); | ||
message.date.toISOString().should.equal(new Date(mockDate).toISOString()); | ||
message.error.should.equal(mockError); | ||
}); | ||
|
||
it("should set the date of the message as undefined not passed", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType); | ||
|
||
chai.expect(message.date).to.be.undefined; | ||
}); | ||
|
||
it("should set the date of the message as an invalid Date object if the date is invalid", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, 'Invalid Date'); | ||
|
||
message.date.should.be.an.instanceOf(Date); | ||
chai.expect(message.date.toString()).to.equal('Invalid Date'); | ||
}) | ||
}) | ||
|
||
describe("Getters", () => { | ||
beforeEach(() => { | ||
this.message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate, mockError); | ||
}) | ||
|
||
it("should get the sender of the message", () => { | ||
this.message.getSender().should.equal(mockSender); | ||
}); | ||
|
||
it("should get the recipients of the message", () => { | ||
this.message.getRecipients().should.deep.equal(mockRecipients); | ||
}); | ||
|
||
it("should get the type of the message", () => { | ||
this.message.getType().should.equal(mockType); | ||
}); | ||
|
||
it("should get the content of the message", () => { | ||
this.message.getContent().should.deep.equal(mockContent); | ||
}); | ||
}) | ||
|
||
describe("hasError", () => { | ||
it("should return true if the message has an error", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate, mockError); | ||
message.hasError().should.be.true; | ||
}) | ||
|
||
it("should return false if the message has no error", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate); | ||
message.hasError().should.be.false; | ||
}) | ||
}) | ||
|
||
describe("forRecipient", () => { | ||
it("should return true if the message is for the recipient", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate); | ||
|
||
mockRecipients.forEach(recipient => { | ||
message.forRecipient(recipient).should.be.true; | ||
}) | ||
}) | ||
|
||
it("should return true for all people if the message if for all", () => { | ||
const message = new Message(mockSender, [AllMessageTarget], mockType, mockContent, mockDate); | ||
|
||
message.forRecipient(AllMessageTarget).should.be.true; | ||
message.forRecipient('random-id').should.be.true; | ||
}) | ||
|
||
it("should return false if the message is not for the recipient", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate); | ||
|
||
message.forRecipient('random-id').should.be.false; | ||
}) | ||
}) | ||
|
||
describe("stringify", () => { | ||
it("should contain the date and the error if present", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate, mockError); | ||
const stringifiedMessage = message.stringify(); | ||
const decodedMessage = JSON.parse(stringifiedMessage); | ||
|
||
decodedMessage.sender.should.equal(mockSender); | ||
decodedMessage.recipients.should.deep.equal(mockRecipients); | ||
decodedMessage.type.should.equal(mockType); | ||
decodedMessage.content.should.deep.equal(mockContent); | ||
decodedMessage.date.should.equal(new Date(mockDate).toISOString()); | ||
decodedMessage.error.should.equal(mockError); | ||
}) | ||
|
||
it("should not include the error attribute if the message had no error", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent, mockDate); | ||
const stringifiedMessage = message.stringify(); | ||
const decodedMessage = JSON.parse(stringifiedMessage); | ||
|
||
chai.expect(decodedMessage.error).to.be.undefined; | ||
}) | ||
|
||
it("should set the current date if the date is not provided", () => { | ||
const message = new Message(mockSender, mockRecipients, mockType, mockContent); | ||
const stringifiedMessage = message.stringify(); | ||
const decodedMessage = JSON.parse(stringifiedMessage); | ||
|
||
decodedMessage.date.should.equal(new Date().toISOString()); | ||
}) | ||
}) | ||
}) |
71 changes: 71 additions & 0 deletions
71
packages/caliper-core/test/common/core/messages/preparedMessage.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const PreparedMessage = require('../../../../lib/common/messages/preparedMessage'); | ||
const MessageTypes = require('../../../../lib/common/utils/constants').Messages.Types; | ||
|
||
const chai = require('chai'); | ||
chai.should(); | ||
|
||
describe('PreparedMessage', () => { | ||
describe('Constructor', () => { | ||
it('should create an PreparedMessage instance with sender, recipients, and type', () => { | ||
const sender = 'John'; | ||
const recipients = ['Alice', 'Bob']; | ||
const message = new PreparedMessage(sender, recipients); | ||
|
||
message.should.be.an.instanceOf(PreparedMessage); | ||
message.sender.should.equal(sender); | ||
message.recipients.should.deep.equal(recipients); | ||
message.type.should.equal(MessageTypes.Prepared); | ||
}); | ||
|
||
it('should set the content of the message as an empty object', () => { | ||
const message = new PreparedMessage('John', ['Alice', 'Bob']); | ||
|
||
message.content.should.deep.equal({}); | ||
}); | ||
|
||
it('should parse the date argument as a Date object for the PreparedMessage', () => { | ||
const date = '2024-04-25'; | ||
const message = new PreparedMessage('John', ['Alice', 'Bob'], date); | ||
|
||
message.date.should.be.an.instanceOf(Date); | ||
message.date | ||
.toISOString() | ||
.should.equal(new Date(date).toISOString()); | ||
}); | ||
|
||
it('should set the error correctly if passed', () => { | ||
const error = 'Some error'; | ||
const message = new PreparedMessage( | ||
'John', | ||
['Alice', 'Bob'], | ||
undefined, | ||
error | ||
); | ||
|
||
message.error.should.equal(error); | ||
}); | ||
|
||
it('should create an PreparedMessage with undefined date and error if not provided', () => { | ||
const message = new PreparedMessage('John', ['Alice', 'Bob']); | ||
|
||
chai.expect(message.date).to.be.undefined; | ||
chai.expect(message.error).to.be.undefined; | ||
}); | ||
}); | ||
}); |
71 changes: 71 additions & 0 deletions
71
packages/caliper-core/test/common/core/messages/readyMessage.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
const ReadyMessage = require('../../../../lib/common/messages/readyMessage'); | ||
const MessageTypes = require('../../../../lib/common/utils/constants').Messages.Types; | ||
|
||
const chai = require('chai'); | ||
chai.should(); | ||
|
||
describe('ReadyMessage', () => { | ||
describe('Constructor', () => { | ||
it('should create an ReadyMessage instance with sender, recipients, and type', () => { | ||
const sender = 'John'; | ||
const recipients = ['Alice', 'Bob']; | ||
const message = new ReadyMessage(sender, recipients); | ||
|
||
message.should.be.an.instanceOf(ReadyMessage); | ||
message.sender.should.equal(sender); | ||
message.recipients.should.deep.equal(recipients); | ||
message.type.should.equal(MessageTypes.Ready); | ||
}); | ||
|
||
it('should set the content of the message as an empty object', () => { | ||
const message = new ReadyMessage('John', ['Alice', 'Bob']); | ||
|
||
message.content.should.deep.equal({}); | ||
}); | ||
|
||
it('should parse the date argument as a Date object for the ReadyMessage', () => { | ||
const date = '2024-04-25'; | ||
const message = new ReadyMessage('John', ['Alice', 'Bob'], date); | ||
|
||
message.date.should.be.an.instanceOf(Date); | ||
message.date | ||
.toISOString() | ||
.should.equal(new Date(date).toISOString()); | ||
}); | ||
|
||
it('should set the error correctly if passed', () => { | ||
const error = 'Some error'; | ||
const message = new ReadyMessage( | ||
'John', | ||
['Alice', 'Bob'], | ||
undefined, | ||
error | ||
); | ||
|
||
message.error.should.equal(error); | ||
}); | ||
|
||
it('should create an ReadyMessage with undefined date and error if not provided', () => { | ||
const message = new ReadyMessage('John', ['Alice', 'Bob']); | ||
|
||
chai.expect(message.date).to.be.undefined; | ||
chai.expect(message.error).to.be.undefined; | ||
}); | ||
}); | ||
}); |