diff --git a/packages/dashmate/src/status/scopes/platform.js b/packages/dashmate/src/status/scopes/platform.js index 74d961e63c4..ad640a3076a 100644 --- a/packages/dashmate/src/status/scopes/platform.js +++ b/packages/dashmate/src/status/scopes/platform.js @@ -115,6 +115,10 @@ export default function getPlatformScopeFactory( const platformPeers = parseInt(tenderdashNetInfo.n_peers, 10); const { listening } = tenderdashNetInfo; + if (catchingUp) { + info.serviceStatus = ServiceStatusEnum.syncing; + } + info.version = version; info.listening = listening; info.latestBlockHeight = latestBlockHeight; diff --git a/packages/dashmate/test/unit/status/scopes/platform.spec.js b/packages/dashmate/test/unit/status/scopes/platform.spec.js index 59053d5ae97..985ff18fa32 100644 --- a/packages/dashmate/test/unit/status/scopes/platform.spec.js +++ b/packages/dashmate/test/unit/status/scopes/platform.spec.js @@ -126,6 +126,72 @@ describe('getPlatformScopeFactory', () => { expect(scope).to.deep.equal(expectedScope); }); + it('should return platform syncing when it is catching up', async () => { + mockDetermineDockerStatus.returns(DockerStatusEnum.running); + mockRpcClient.mnsync.withArgs('status').returns({ result: { IsSynced: true } }); + mockDockerCompose.isServiceRunning.returns(true); + mockDockerCompose.execCommand.returns({ exitCode: 0, out: '' }); + mockMNOWatchProvider.returns(Promise.resolve('OPEN')); + + const mockStatus = { + node_info: { + version: '0', + network: 'test', + moniker: 'test', + }, + sync_info: { + catching_up: true, + latest_app_hash: 'DEADBEEF', + latest_block_height: 1337, + latest_block_hash: 'DEADBEEF', + latest_block_time: 1337, + }, + }; + const mockNetInfo = { n_peers: 6, listening: true }; + + const expectedScope = { + coreIsSynced: true, + httpPort, + httpService, + p2pPort, + p2pService, + rpcService, + httpPortState: PortStateEnum.OPEN, + p2pPortState: PortStateEnum.OPEN, + tenderdash: { + httpPortState: PortStateEnum.OPEN, + p2pPortState: PortStateEnum.OPEN, + dockerStatus: DockerStatusEnum.running, + serviceStatus: ServiceStatusEnum.syncing, + version: '0', + listening: true, + catchingUp: true, + latestBlockHash: 'DEADBEEF', + latestBlockHeight: 1337, + latestBlockTime: 1337, + latestAppHash: 'DEADBEEF', + peers: 6, + moniker: 'test', + network: 'test', + }, + drive: { + dockerStatus: DockerStatusEnum.running, + serviceStatus: ServiceStatusEnum.up, + }, + }; + + mockFetch + .onFirstCall() + .returns(Promise.resolve({ json: () => Promise.resolve(mockStatus) })) + .onSecondCall() + .returns(Promise.resolve({ json: () => Promise.resolve(mockNetInfo) })); + mockMNOWatchProvider.returns(Promise.resolve('OPEN')); + + const scope = await getPlatformScope(config); + + expect(scope).to.deep.equal(expectedScope); + }); + it('should return empty scope if error during request to core', async () => { mockRpcClient.mnsync.withArgs('status').throws(new Error()); mockDockerCompose.execCommand.returns({ exitCode: 0, out: '' });