DayLimit.js 2.4 KB

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