DayLimit.js 2.2 KB

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