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> </span>
</a> </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 all</span>
<span ng-if="showAll">Show less</span> <span ng-if="showAll">Show less</span>
</a> </a>

View File

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

View File

@ -1,6 +1,56 @@
'use strict';
// //
// test/unit/filters/filtersSpec.js // 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);
}));
});
}); });