A few more test cases.
This commit is contained in:
parent
2d0e5c5f79
commit
5825ff26b8
1 changed files with 214 additions and 1 deletions
|
|
@ -3,6 +3,7 @@ fdescribe('walletHistoryService', function(){
|
||||||
var historyStringFull;
|
var historyStringFull;
|
||||||
var storageServiceMock;
|
var storageServiceMock;
|
||||||
var txFormatServiceMock;
|
var txFormatServiceMock;
|
||||||
|
var walletMock;
|
||||||
var walletHistoryService;
|
var walletHistoryService;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -14,7 +15,8 @@ fdescribe('walletHistoryService', function(){
|
||||||
txFormatServiceMock = jasmine.createSpyObj(['processTx']);
|
txFormatServiceMock = jasmine.createSpyObj(['processTx']);
|
||||||
txFormatServiceMock.processTx.and.callFake(function(coin, tx){
|
txFormatServiceMock.processTx.and.callFake(function(coin, tx){
|
||||||
return tx;
|
return tx;
|
||||||
})
|
});
|
||||||
|
walletMock = jasmine.createSpyObj(['getTxHistory']);
|
||||||
|
|
||||||
module(function($provide) {
|
module(function($provide) {
|
||||||
$provide.value('storageService', storageServiceMock);
|
$provide.value('storageService', storageServiceMock);
|
||||||
|
|
@ -56,6 +58,27 @@ fdescribe('walletHistoryService', function(){
|
||||||
expect(returnedHistory.length).toBe(0);
|
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() {
|
it('getCachedHistory page full', function() {
|
||||||
var returnedErr;
|
var returnedErr;
|
||||||
var returnedHistory;
|
var returnedHistory;
|
||||||
|
|
@ -77,5 +100,195 @@ fdescribe('walletHistoryService', function(){
|
||||||
expect(returnedHistory.length).toBe(50);
|
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);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue