|
1 | 1 | import { SinonStub, SinonStubbedInstance, stub } from 'sinon'; |
2 | | -import { expect, HyperlaneMessageResponse, HyperlaneStatus, Message, mkHash, chainWrapper } from '@chimera-monorepo/utils'; |
| 2 | +import { expect, HyperlaneMessageResponse, HyperlaneStatus, Message, mkHash, chainWrapper, POLYMER_DOMAIN_PAIRS } from '@chimera-monorepo/utils'; |
3 | 3 | import * as Mockable from '../../src/mockable'; |
4 | 4 |
|
5 | 5 | import { getDispatchedMessage, getDispatchedMessageFromEvent, getMessageStatus } from '../../src/helpers'; |
@@ -138,6 +138,28 @@ describe('Helpers:hyperlane', () => { |
138 | 138 | }); |
139 | 139 | }); |
140 | 140 |
|
| 141 | + it('should return delivered for polymer route when polymer API confirms delivery', async () => { |
| 142 | + const [polymerOrigin, polymerDest] = POLYMER_DOMAIN_PAIRS[0]; // e.g. ['1', '25327'] |
| 143 | + database.getMessagesByIds.resolves([mock.message({ originDomain: polymerOrigin, destinationDomain: polymerDest })]); |
| 144 | + const getPolymerMsgDeliveredStub = stub(Mockable, 'getPolymerMsgDelivered').resolves(HyperlaneStatus.delivered); |
| 145 | + expect(await getMessageStatus(id)).to.be.deep.eq({ status: 'delivered' }); |
| 146 | + expect(getPolymerMsgDeliveredStub.calledOnceWith(id)).to.be.true; |
| 147 | + }); |
| 148 | + |
| 149 | + it('should return pending for polymer route when polymer API returns pending', async () => { |
| 150 | + const [polymerOrigin, polymerDest] = POLYMER_DOMAIN_PAIRS[0]; |
| 151 | + database.getMessagesByIds.resolves([mock.message({ originDomain: polymerOrigin, destinationDomain: polymerDest })]); |
| 152 | + stub(Mockable, 'getPolymerMsgDelivered').resolves(HyperlaneStatus.pending); |
| 153 | + expect(await getMessageStatus(id)).to.be.deep.eq({ status: 'pending' }); |
| 154 | + }); |
| 155 | + |
| 156 | + it('should return pending for polymer route when polymer API throws', async () => { |
| 157 | + const [polymerOrigin, polymerDest] = POLYMER_DOMAIN_PAIRS[0]; |
| 158 | + database.getMessagesByIds.resolves([mock.message({ originDomain: polymerOrigin, destinationDomain: polymerDest })]); |
| 159 | + stub(Mockable, 'getPolymerMsgDelivered').rejects(new Error('Polymer API error')); |
| 160 | + expect(await getMessageStatus(id)).to.be.deep.eq({ status: 'pending' }); |
| 161 | + }); |
| 162 | + |
141 | 163 | it('should work if hyperlane api fails (derives from chain)', async () => { |
142 | 164 | getHyperlaneMessageStatusStub.resolves(undefined); |
143 | 165 | database.getMessagesByIds.resolves([mock.message()]); |
|
0 commit comments