it('JDS returns no error and no response.', function() { jdsClientDummy._setResponseData(null, null, undefined); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, vistaIdValue, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.storeLastUpdateTime(lastUpdateTimeValue, function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to storeLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError).toBeTruthy(); expect(actualResponse).toBeNull(); expect(jdsClientDummy.storeOperationalDataMutable.calls.length).toEqual(1); expect(jdsClientDummy.storeOperationalDataMutable).toHaveBeenCalledWith(jasmine.objectContaining({ _id: vistaIdValue, lastUpdate: lastUpdateTimeValue, uid: uidValue }), jasmine.any(Function)); }); });
it('JDS returns no error but incorrect response.statusCode', function() { var expectedJdsResponse = { statusCode: 100 }; jdsClientDummy._setResponseData(null, expectedJdsResponse, undefined); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, vistaIdValue, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.retrieveLastUpdateTime(function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to retrieveLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError).toBeTruthy(); expect(actualResponse).toBeNull(); expect(jdsClientDummy.getOperationalDataMutable.calls.length).toEqual(1); expect(jdsClientDummy.getOperationalDataMutable).toHaveBeenCalledWith(vistaIdValue, jasmine.any(Function)); }); });
it('JDS returns response - but response did not have the actual item.', function() { var expectedJdsResponse = { statusCode: 200 }; var expectedJdsResult = { apiVersion: '1.0', data: { updated: '20141231144448', totalItems: 0, currentItemCount: 0 } }; jdsClientDummy._setResponseData(null, expectedJdsResponse, expectedJdsResult); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, vistaIdValue, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.retrieveLastUpdateTime(function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to retrieveLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError).toBeTruthy(); expect(actualResponse).toBeNull(); expect(jdsClientDummy.getOperationalDataMutable.calls.length).toEqual(1); expect(jdsClientDummy.getOperationalDataMutable).toHaveBeenCalledWith(vistaIdValue, jasmine.any(Function)); }); });
it('JDS returns error.', function() { var expectedJdsError = 'Failed call to JDS.'; jdsClientDummy._setResponseData(expectedJdsError, null, undefined); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, vistaIdValue, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.retrieveLastUpdateTime(function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to retrieveLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError.indexOf(expectedJdsError)).toBeGreaterThan(-1); expect(actualResponse).toBeNull(); expect(jdsClientDummy.getOperationalDataMutable.calls.length).toEqual(1); expect(jdsClientDummy.getOperationalDataMutable).toHaveBeenCalledWith(vistaIdValue, jasmine.any(Function)); }); });
it('Missing vistaId', function() { var expectedJdsResponse = { statusCode: 200 }; jdsClientDummy._setResponseData(null, expectedJdsResponse, null); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, null, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.retrieveLastUpdateTime(function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to retrieveLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError).toBeTruthy(); expect(actualResponse).toBeNull(); expect(jdsClientDummy.getOperationalDataMutable.calls.length).toEqual(0); }); });
it('Happy Path', function() { var expectedJdsResponse = { statusCode: 200 }; var expectedJdsResult = { _id: vistaIdValue, lastUpdate: lastUpdateTimeValue, uid: uidValue }; jdsClientDummy._setResponseData(null, expectedJdsResponse, expectedJdsResult); var vprUpdateOpData = new VprUpdateOpData(dummyLogger, vistaIdValue, jdsClientDummy); var actualError; var actualResponse; var called = false; vprUpdateOpData.retrieveLastUpdateTime(function(error, response) { actualError = error; actualResponse = response; called = true; }); waitsFor(function() { return called; }, 'Call to retrieveLastUpdateTime failed to return in time.', 500); runs(function() { expect(actualError).toBeNull(); expect(actualResponse).toEqual(lastUpdateTimeValue); expect(jdsClientDummy.getOperationalDataMutable.calls.length).toEqual(1); expect(jdsClientDummy.getOperationalDataMutable).toHaveBeenCalledWith(vistaIdValue, jasmine.any(Function)); }); });
it('Error path: JDS returns error', function() { var done = false; var config = { vistaSites: { '9E7A': {}, 'C877': {} }, jds: { protocol: 'http', host: '10.2.2.110', port: 9080 }, rules: { 'operational-data-sync': {} } }; var jdsClientDummy = new JdsClientDummy(log, config); jdsClientDummy._setResponseData(['Error', 'Error'], null, null); var environment = { jds: jdsClientDummy }; var engine = new SyncRulesEngine(log, config, environment); //engine.rules = [rule]; runs(function() { engine.getSyncPatientIdentifiers(mockPatientIds, [], function(err, result) { expect(result.length).toEqual(0); done = true; }); }); waitsFor(function() { return done; }); });
it('Normal path: all primary sites associated with patient have completed opd sync', function() { var done = false; var config = { vistaSites: { '9E7A': {}, 'C877': {} }, jds: { protocol: 'http', host: '10.2.2.110', port: 9080 }, rules: { 'operational-data-sync': {} } }; var jdsClientDummy = new JdsClientDummy(log, config); jdsClientDummy._setResponseData(null, [{ statusCode: 200 }, { statusCode: 200 }], [{ 'completedStamp': sampleOpDataStamp }, { 'completedStamp': sampleOpDataStamp2 }]); var environment = { jds: jdsClientDummy }; var engine = new SyncRulesEngine(log, config, environment); //engine.rules = [rule]; runs(function() { engine.getSyncPatientIdentifiers(mockPatientIds, [], function(err, result) { expect(result.length).toEqual(6); done = true; }); }); waitsFor(function() { return done; }); });