Pausable.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. 'use strict';
  2. const assertJump = require('./helpers/assertJump');
  3. const PausableMock = artifacts.require('helpers/PausableMock.sol');
  4. contract('Pausable', function(accounts) {
  5. it('can perform normal process in non-pause', async function() {
  6. let Pausable = await PausableMock.new();
  7. let count0 = await Pausable.count();
  8. assert.equal(count0, 0);
  9. await Pausable.normalProcess();
  10. let count1 = await Pausable.count();
  11. assert.equal(count1, 1);
  12. });
  13. it('can not perform normal process in pause', async function() {
  14. let Pausable = await PausableMock.new();
  15. await Pausable.pause();
  16. let count0 = await Pausable.count();
  17. assert.equal(count0, 0);
  18. try {
  19. await Pausable.normalProcess();
  20. assert.fail('should have thrown before');
  21. } catch(error) {
  22. assertJump(error);
  23. }
  24. let count1 = await Pausable.count();
  25. assert.equal(count1, 0);
  26. });
  27. it('can not take drastic measure in non-pause', async function() {
  28. let Pausable = await PausableMock.new();
  29. try {
  30. await Pausable.drasticMeasure();
  31. assert.fail('should have thrown before');
  32. } catch(error) {
  33. assertJump(error);
  34. }
  35. const drasticMeasureTaken = await Pausable.drasticMeasureTaken();
  36. assert.isFalse(drasticMeasureTaken);
  37. });
  38. it('can take a drastic measure in a pause', async function() {
  39. let Pausable = await PausableMock.new();
  40. await Pausable.pause();
  41. await Pausable.drasticMeasure();
  42. let drasticMeasureTaken = await Pausable.drasticMeasureTaken();
  43. assert.isTrue(drasticMeasureTaken);
  44. });
  45. it('should resume allowing normal process after pause is over', async function() {
  46. let Pausable = await PausableMock.new();
  47. await Pausable.pause();
  48. await Pausable.unpause();
  49. await Pausable.normalProcess();
  50. let count0 = await Pausable.count();
  51. assert.equal(count0, 1);
  52. });
  53. it('should prevent drastic measure after pause is over', async function() {
  54. let Pausable = await PausableMock.new();
  55. await Pausable.pause();
  56. await Pausable.unpause();
  57. try {
  58. await Pausable.drasticMeasure();
  59. assert.fail('should have thrown before');
  60. } catch(error) {
  61. assertJump(error);
  62. }
  63. const drasticMeasureTaken = await Pausable.drasticMeasureTaken();
  64. assert.isFalse(drasticMeasureTaken);
  65. });
  66. });