A few more test cases.

This commit is contained in:
Brendon Duncan 2018-09-26 21:50:42 +12:00
commit 5825ff26b8

View file

@ -3,6 +3,7 @@ fdescribe('walletHistoryService', function(){
var historyStringFull;
var storageServiceMock;
var txFormatServiceMock;
var walletMock;
var walletHistoryService;
@ -14,7 +15,8 @@ fdescribe('walletHistoryService', function(){
txFormatServiceMock = jasmine.createSpyObj(['processTx']);
txFormatServiceMock.processTx.and.callFake(function(coin, tx){
return tx;
})
});
walletMock = jasmine.createSpyObj(['getTxHistory']);
module(function($provide) {
$provide.value('storageService', storageServiceMock);
@ -56,6 +58,27 @@ fdescribe('walletHistoryService', function(){
expect(returnedHistory.length).toBe(0);
});
it('getCachedHistory error from storage', function() {
var returnedErr;
var returnedHistory;
var walletIdForStorageGet = '';
storageServiceMock.getTxHistory.and.callFake(function(walletId, cb){
walletIdForStorageGet = walletId;
cb(new Error('Something went wrong.'), null);
});
walletHistoryService.getCachedTxHistory('wallet12345', function(err, txHistory){
returnedErr = err;
returnedHistory = txHistory;
});
expect(walletIdForStorageGet).toBe('wallet12345');
expect(returnedErr.message).toBe('Something went wrong.');
expect(returnedHistory.length).toBe(0);
});
it('getCachedHistory page full', function() {
var returnedErr;
var returnedHistory;
@ -77,5 +100,195 @@ fdescribe('walletHistoryService', function(){
expect(returnedHistory.length).toBe(50);
});
it('updateLocalTxHistoryByPage, getEarlier, keep cache, sufficient overlap so saved.', function(){
var fetchLimit;
var fetchSkip;
var returnedHistory;
var savedTxs;
var walletIdForStorageGet;
var walletIdForStorageSet;
walletMock.id = 'wallet67890';
storageServiceMock.getTxHistory.and.callFake(function(walletId, cb){
walletIdForStorageGet = walletId;
cb(null, JSON.stringify(history.slice(0, 40)));
});
walletMock.getTxHistory.and.callFake(function(opts, cb){
fetchSkip = opts.skip;
fetchLimit = opts.limit;
cb(null, history.slice(fetchSkip, fetchSkip + fetchLimit));
});
storageServiceMock.setTxHistory.and.callFake(function(txs, walletId, cb){
savedTxs = txs;
walletIdForStorageSet = walletId;
cb(null);
});
walletHistoryService.updateLocalTxHistoryByPage(walletMock, false, false, function(err, txs){
returnedErr = err;
returnedHistory = txs;
});
expect(walletIdForStorageGet).toBe('wallet67890');
expect(walletIdForStorageSet).toBe('wallet67890');
expect(fetchSkip).toBe(30);
expect(fetchLimit).toBe(50);
expect(savedTxs.length).toBe(80);
expect(returnedErr).toBeNull();
expect(returnedHistory.length).toBe(80);
});
it('updateLocalTxHistoryByPage, cache empty, getLatest, do not flush cache, some new so saved.', function(){
var fetchLimit;
var fetchSkip;
var returnedHistory;
var savedTxs;
var walletIdForStorageGet;
var walletIdForStorageSet;
walletMock.id = 'wallet789';
storageServiceMock.getTxHistory.and.callFake(function(walletId, cb){
walletIdForStorageGet = walletId;
cb(null, "[]");
});
walletMock.getTxHistory.and.callFake(function(opts, cb){
fetchSkip = opts.skip;
fetchLimit = opts.limit;
cb(null, history.slice(0, 10));
});
storageServiceMock.setTxHistory.and.callFake(function(txs, walletId, cb){
savedTxs = txs;
walletIdForStorageSet = walletId;
cb(null);
});
walletHistoryService.updateLocalTxHistoryByPage(walletMock, true, false, function(err, txs){
returnedErr = err;
returnedHistory = txs;
});
expect(walletIdForStorageGet).toBe('wallet789');
expect(fetchSkip).toBe(0);
expect(fetchLimit).toBe(50);
expect(savedTxs.length).toBe(10);
expect(returnedErr).toBeNull();
expect(returnedHistory.length).toBe(10);
});
it('updateLocalTxHistoryByPage, some cachedTx, getLatest, do not flush cache, nothing new so nothing added.', function(){
var fetchLimit;
var fetchSkip;
var returnedHistory;
var walletIdForStorageGet;
walletMock.id = 'wallet789';
storageServiceMock.getTxHistory.and.callFake(function(walletId, cb){
walletIdForStorageGet = walletId;
cb(null, JSON.stringify(history.slice(0, 40)));
});
walletMock.getTxHistory.and.callFake(function(opts, cb){
fetchSkip = opts.skip;
fetchLimit = opts.limit;
cb(null, []);
});
walletHistoryService.updateLocalTxHistoryByPage(walletMock, true, false, function(err, txs){
returnedErr = err;
returnedHistory = txs;
});
expect(walletIdForStorageGet).toBe('wallet789');
expect(fetchSkip).toBe(0);
expect(fetchLimit).toBe(50);
expect(returnedErr).toBeNull();
expect(returnedHistory.length).toBe(40);
expect(storageServiceMock.setTxHistory.calls.any()).toBe(false);
});
it('updateLocalTxHistoryByPage, some cachedTx, getLatest, do not flush cache, some new with sufficient overlap so all saved.', function(){
var fetchLimit;
var fetchSkip;
var returnedHistory;
var savedTxs;
var walletIdForStorageGet;
var walletIdForStorageSet;
walletMock.id = 'wallet789';
storageServiceMock.getTxHistory.and.callFake(function(walletId, cb){
walletIdForStorageGet = walletId;
cb(null, JSON.stringify(history.slice(42, 72)));
});
walletMock.getTxHistory.and.callFake(function(opts, cb){
fetchSkip = opts.skip;
fetchLimit = opts.limit;
cb(null, history.slice(fetchSkip, fetchSkip + fetchLimit));
});
storageServiceMock.setTxHistory.and.callFake(function(txs, walletId, cb){
savedTxs = txs;
walletIdForStorageSet = walletId;
cb(null);
});
walletHistoryService.updateLocalTxHistoryByPage(walletMock, true, false, function(err, txs){
returnedErr = err;
returnedHistory = txs;
});
expect(walletIdForStorageGet).toBe('wallet789');
expect(fetchSkip).toBe(0);
expect(fetchLimit).toBe(50);
expect(walletIdForStorageSet).toBe('wallet789');
expect(savedTxs.length).toBe(72);
expect(returnedErr).toBeNull();
expect(returnedHistory.length).toBe(72);
});
it('updateLocalTxHistoryByPage, getLatest, flush cache, some new so saved.', function(){
var fetchLimit;
var fetchSkip;
var returnedHistory;
var savedTxs;
var walletIdForStorageSet;
walletMock.id = 'wallet7890';
walletMock.getTxHistory.and.callFake(function(opts, cb){
fetchSkip = opts.skip;
fetchLimit = opts.limit;
cb(null, history.slice(0, fetchLimit));
});
storageServiceMock.setTxHistory.and.callFake(function(txs, walletId, cb){
savedTxs = txs;
walletIdForStorageSet = walletId;
cb(null);
});
walletHistoryService.updateLocalTxHistoryByPage(walletMock, true, true, function(err, txs){
returnedErr = err;
returnedHistory = txs;
});
expect(walletIdForStorageSet).toBe('wallet7890');
expect(fetchSkip).toBe(0);
expect(fetchLimit).toBe(50);
expect(savedTxs.length).toBe(50);
expect(returnedErr).toBeNull();
expect(returnedHistory.length).toBe(50);
expect(storageServiceMock.getTxHistory.calls.any()).toBe(false);
});
});