DayLimit.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict';
  2. var DayLimitMock = artifacts.require('helpers/DayLimitMock.sol');
  3. contract('DayLimit', function(accounts) {
  4. it('should construct with the passed daily limit', async function() {
  5. let initLimit = 10;
  6. let dayLimit = await DayLimitMock.new(initLimit);
  7. let dailyLimit = await dayLimit.dailyLimit();
  8. assert.equal(initLimit, dailyLimit);
  9. });
  10. it('should be able to spend if daily limit is not reached', async function() {
  11. let limit = 10;
  12. let dayLimit = await DayLimitMock.new(limit);
  13. await dayLimit.attemptSpend(8);
  14. let spentToday = await dayLimit.spentToday();
  15. assert.equal(spentToday, 8);
  16. await dayLimit.attemptSpend(2);
  17. spentToday = await dayLimit.spentToday();
  18. assert.equal(spentToday, 10);
  19. });
  20. it('should prevent spending if daily limit is reached', async function() {
  21. let limit = 10;
  22. let dayLimit = await DayLimitMock.new(limit);
  23. await dayLimit.attemptSpend(8);
  24. let spentToday = await dayLimit.spentToday();
  25. assert.equal(spentToday, 8);
  26. await dayLimit.attemptSpend(3);
  27. spentToday = await dayLimit.spentToday();
  28. assert.equal(spentToday, 8);
  29. });
  30. it('should allow spending if daily limit is reached and then set higher', async function() {
  31. let limit = 10;
  32. let dayLimit = await DayLimitMock.new(limit);
  33. await dayLimit.attemptSpend(8);
  34. let spentToday = await dayLimit.spentToday();
  35. assert.equal(spentToday, 8);
  36. await dayLimit.attemptSpend(3);
  37. spentToday = await dayLimit.spentToday();
  38. assert.equal(spentToday, 8);
  39. await dayLimit.setDailyLimit(15);
  40. await dayLimit.attemptSpend(3);
  41. spentToday = await dayLimit.spentToday();
  42. assert.equal(spentToday, 11);
  43. });
  44. it('should allow spending if daily limit is reached and then amount spent is reset', async function() {
  45. let limit = 10;
  46. let dayLimit = await DayLimitMock.new(limit);
  47. await dayLimit.attemptSpend(8);
  48. let spentToday = await dayLimit.spentToday();
  49. assert.equal(spentToday, 8);
  50. await dayLimit.attemptSpend(3);
  51. spentToday = await dayLimit.spentToday();
  52. assert.equal(spentToday, 8);
  53. await dayLimit.resetSpentToday(15);
  54. await dayLimit.attemptSpend(3);
  55. spentToday = await dayLimit.spentToday();
  56. assert.equal(spentToday, 3);
  57. });
  58. });