Merge pull request #730 from yemel/fix/new-address-on-payment

Change default address list
This commit is contained in:
Gustavo Maximiliano Cortez 2014-06-24 12:00:12 -03:00
commit da445e7c69
3 changed files with 61 additions and 36 deletions

View File

@ -413,7 +413,7 @@
</span>
</a>
<a class="secondary radius" ng-click="showAll=!showAll" ng-show="(addresses|withoutFunds) > 1">
<a class="secondary radius" ng-click="showAll=!showAll" ng-show="addresses.length != (addresses|limitAddress).length">
<span ng-if="!showAll">Show all</span>
<span ng-if="showAll">Show less</span>
</a>

View File

@ -17,41 +17,16 @@ angular.module('copayApp.filters', [])
})
.filter('limitAddress', function() {
return function(elements, showAll) {
var addrs = [];
if (elements.length > 0) {
if (showAll) {
return elements;
}
if (elements.length == 1) {
return elements;
}
else {
for (var i=0;i<elements.length;i++) {
if (!elements[i].isChange && (!elements[i].balance || elements[i].balance == 0)) {
addrs.push(elements[i]);
break;
}
}
for (var i=0;i<elements.length;i++) {
if (elements[i].balance && elements[i].balance > 0) {
addrs.push(elements[i]);
}
}
return addrs;
}
if (elements.length <= 1 || showAll) {
return elements;
}
};
})
.filter('withoutFunds', function() {
return function(elements) {
var len = 0;
for (var i=0;i<elements.length;i++) {
if (!elements[i].balance || elements[i].balance == 0) {
len++;
}
}
return len;
// Show last 3 non-change addresses plus those with balance
var addrs = elements.filter(function(e, i) {
return (!e.isChange && i < 3) || (e.balance && e.balance > 0);
});
return addrs;
};
})
;

View File

@ -1,6 +1,56 @@
'use strict';
//
// test/unit/filters/filtersSpec.js
//
describe("Unit: Testing Filters", function() {
describe('Unit: Testing Filters', function() {
beforeEach(module('copayApp.filters'));
describe('limitAddress', function() {
it('should handle emtpy list', inject(function($filter) {
var limitAddress = $filter('limitAddress');
expect(limitAddress([], false)).to.be.empty;
}));
it('should honor show all', inject(function($filter) {
var limitAddress = $filter('limitAddress');
var addresses = [{}, {}, {}, {}, {}];
expect(limitAddress(addresses, true).length).to.equal(5);
expect(limitAddress([{}], false).length).to.equal(1);
}));
it('should filter correctly', inject(function($filter) {
var limitAddress = $filter('limitAddress');
var addresses = [
{isChange: true, balance: 0},
{isChange: false, balance: 0},
{isChange: true, balance: 0},
{isChange: false, balance: 0},
{isChange: true, balance: 0},
{isChange: false, balance: 0},
{isChange: true, balance: 0},
{isChange: false, balance: 0}
];
expect(limitAddress(addresses, false).length).to.equal(1);
addresses[0].isChange = false;
expect(limitAddress(addresses, false).length).to.equal(2);
addresses[2].isChange = false;
expect(limitAddress(addresses, false).length).to.equal(3);
addresses[3].isChange = false;
expect(limitAddress(addresses, false).length).to.equal(3);
addresses[0].balance = 20;
expect(limitAddress(addresses, false).length).to.equal(3);
addresses[0].balance = 20;
expect(limitAddress(addresses, false).length).to.equal(3);
addresses[7].balance = 20;
expect(limitAddress(addresses, false).length).to.equal(4);
}));
});
});