|
@@ -0,0 +1,72 @@
|
|
|
+contract('DayLimit', function(accounts) {
|
|
|
+
|
|
|
+ it('should construct with the passed daily limit', async function() {
|
|
|
+ let initLimit = 10;
|
|
|
+ let dayLimit = await DayLimitMock.new(initLimit, accounts, 2);
|
|
|
+ let dailyLimit = await dayLimit.dailyLimit();
|
|
|
+ assert.equal(initLimit, dailyLimit);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should be able to spend if daily limit is not reached', async function() {
|
|
|
+ let limit = 10;
|
|
|
+ let dayLimit = await DayLimitMock.new(limit, accounts, 1);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(8);
|
|
|
+ let spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(2);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 10);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should prevent spending if daily limit is reached', async function() {
|
|
|
+ let limit = 10;
|
|
|
+ let dayLimit = await DayLimitMock.new(limit, accounts, 1);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(8);
|
|
|
+ let spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(3);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should allow spending if daily limit is reached and then set higher', async function() {
|
|
|
+ let limit = 10;
|
|
|
+ let dayLimit = await DayLimitMock.new(limit, accounts, 1);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(8);
|
|
|
+ let spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(3);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.setDailyLimit(15);
|
|
|
+ await dayLimit.attemptSpend(3);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 11);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('should allow spending if daily limit is reached and then amount spent is reset', async function() {
|
|
|
+ let limit = 10;
|
|
|
+ let dayLimit = await DayLimitMock.new(limit, accounts, 1);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(8);
|
|
|
+ let spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.attemptSpend(3);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 8);
|
|
|
+
|
|
|
+ await dayLimit.resetSpentToday(15);
|
|
|
+ await dayLimit.attemptSpend(3);
|
|
|
+ spentToday = await dayLimit.spentToday();
|
|
|
+ assert.equal(spentToday, 3);
|
|
|
+ });
|
|
|
+
|
|
|
+});
|