Readplace

:red_circle: :white_check_mark: :hammer: Create a 'Money' model to wo… · FagnerMartinsBrack/jack-the-moneylender@a23a18d

GitHub 2 min read
View original
  • current
Summary (TL;DR)
This document contains QUnit tests for a Money JavaScript class, covering subtraction, multiplication, and greater-than comparison operations on dollar amounts. Tests verify correct output for positive and negative values across various ranges.

@@ -0,0 +1,116 @@

1+

<script src="qunit.js"></script>

2+

<link rel="stylesheet" href="qunit.css">

3+

<div id="qunit"></div>

4+

<script src="dollar.js"></script>

5+

<script>

6+

function strictEqual({ expected, actual }, assert) {

7+

assert.strictEqual(actual, expected);

8+

}

9+10+

QUnit.test('Visual representation for dollar amounts', (assert) => {

11+

strictEqual({ expected: '$1.00', actual: Money('$1.00').toString() }, assert);

12+

strictEqual({ expected: '$2.00', actual: Money('$2.00').toString() }, assert);

13+

strictEqual({ expected: '$3.00', actual: Money('$3.00').toString() }, assert);

14+

});

15+16+

QUnit.module('Subtraction');

17+18+

QUnit.test('Subtract POSITIVE amounts between $0.01 and $0.09', (assert) => {

19+

strictEqual({ expected: '$0.00', actual: Money('$0.01').minus(Money('$0.01')).toString() }, assert);

20+

strictEqual({ expected: '$0.01', actual: Money('$0.02').minus(Money('$0.01')).toString() }, assert);

21+

strictEqual({ expected: '$0.02', actual: Money('$0.03').minus(Money('$0.01')).toString() }, assert);

22+

});

23+24+

QUnit.test('Subtract POSITIVE amounts between $0.10 and $0.99', (assert) => {

25+

strictEqual({ expected: '$0.00', actual: Money('$0.10').minus(Money('$0.10')).toString() }, assert);

26+

strictEqual({ expected: '$0.10', actual: Money('$0.20').minus(Money('$0.10')).toString() }, assert);

27+

strictEqual({ expected: '$0.20', actual: Money('$0.30').minus(Money('$0.10')).toString() }, assert);

28+

});

29+30+

QUnit.test('Subtract POSITIVE amounts between $1.00 and $9.00', (assert) => {

31+

strictEqual({ expected: '$0.00', actual: Money('$1.00').minus(Money('$1.00')).toString() }, assert);

32+

strictEqual({ expected: '$1.00', actual: Money('$2.00').minus(Money('$1.00')).toString() }, assert);

33+

strictEqual({ expected: '$2.00', actual: Money('$3.00').minus(Money('$1.00')).toString() }, assert);

34+

});

35+36+

QUnit.test('Subtract NEGATIVE amounts between $0.01 and $0.09', (assert) => {

37+

strictEqual({ expected: '-$0.01', actual: Money('$0.00').minus(Money('$0.01')).toString() }, assert);

38+

strictEqual({ expected: '-$0.02', actual: Money('$0.00').minus(Money('$0.02')).toString() }, assert);

39+

strictEqual({ expected: '-$0.03', actual: Money('$0.00').minus(Money('$0.03')).toString() }, assert);

40+

});

41+42+

QUnit.test('Subtract NEGATIVE amounts between $0.10 and $0.99', (assert) => {

43+

strictEqual({ expected: '-$0.10', actual: Money('$0.00').minus(Money('$0.10')).toString() }, assert);

44+

strictEqual({ expected: '-$0.20', actual: Money('$0.00').minus(Money('$0.20')).toString() }, assert);

45+

strictEqual({ expected: '-$0.30', actual: Money('$0.00').minus(Money('$0.30')).toString() }, assert);

46+

});

47+48+

QUnit.test('Subtract NEGATIVE amounts between $1.00 and $9.99', (assert) => {

49+

strictEqual({ expected: '-$1.00', actual: Money('$0.00').minus(Money('$1.00')).toString() }, assert);

50+

strictEqual({ expected: '-$2.00', actual: Money('$0.00').minus(Money('$2.00')).toString() }, assert);

51+

strictEqual({ expected: '-$3.00', actual: Money('$0.00').minus(Money('$3.00')).toString() }, assert);

52+

});

53+54+

QUnit.module('Multiplication');

55+56+

QUnit.test('Multiply amounts between $1.00 and $10.00 with multiplicand between $1.00 and $9.00', (assert) => {

57+

strictEqual({ expected: '$1.00', actual: Money('$1.00').multipliedBy(Money('$1.00')).toString() }, assert);

58+

strictEqual({ expected: '$2.00', actual: Money('$2.00').multipliedBy(Money('$1.00')).toString() }, assert);

59+

strictEqual({ expected: '$3.00', actual: Money('$3.00').multipliedBy(Money('$1.00')).toString() }, assert);

60+61+

strictEqual({ expected: '$2.00', actual: Money('$1.00').multipliedBy(Money('$2.00')).toString() }, assert);

62+

strictEqual({ expected: '$4.00', actual: Money('$2.00').multipliedBy(Money('$2.00')).toString() }, assert);

63+

strictEqual({ expected: '$6.00', actual: Money('$3.00').multipliedBy(Money('$2.00')).toString() }, assert);

64+65+

strictEqual({ expected: '$3.00', actual: Money('$1.00').multipliedBy(Money('$3.00')).toString() }, assert);

66+

strictEqual({ expected: '$6.00', actual: Money('$2.00').multipliedBy(Money('$3.00')).toString() }, assert);

67+

strictEqual({ expected: '$9.00', actual: Money('$3.00').multipliedBy(Money('$3.00')).toString() }, assert);

68+

});

69+70+

QUnit.test('Multiply amounts between $0.01 and $0.09 with multiplicand between $0.01 and $0.09', (assert) => {

71+

strictEqual({ expected: '$0.01', actual: Money('$1.00').multipliedBy(Money('$0.01')).toString() }, assert);

72+

strictEqual({ expected: '$0.02', actual: Money('$2.00').multipliedBy(Money('$0.01')).toString() }, assert);

73+

strictEqual({ expected: '$0.03', actual: Money('$3.00').multipliedBy(Money('$0.01')).toString() }, assert);

74+75+

strictEqual({ expected: '$0.01', actual: Money('$1.00').multipliedBy(Money('$0.01')).toString() }, assert);

76+

strictEqual({ expected: '$0.02', actual: Money('$1.00').multipliedBy(Money('$0.02')).toString() }, assert);

77+

strictEqual({ expected: '$0.03', actual: Money('$1.00').multipliedBy(Money('$0.03')).toString() }, assert);

78+

});

79+80+

QUnit.test('Multiply amounts between $0.10 and $0.99 with multiplicand between $0.10 and $0.99', (assert) => {

81+

strictEqual({ expected: '$0.10', actual: Money('$1.00').multipliedBy(Money('$0.10')).toString() }, assert);

82+

strictEqual({ expected: '$0.20', actual: Money('$2.00').multipliedBy(Money('$0.10')).toString() }, assert);

83+

strictEqual({ expected: '$0.30', actual: Money('$3.00').multipliedBy(Money('$0.10')).toString() }, assert);

84+85+

strictEqual({ expected: '$0.10', actual: Money('$1.00').multipliedBy(Money('$0.10')).toString() }, assert);

86+

strictEqual({ expected: '$0.20', actual: Money('$1.00').multipliedBy(Money('$0.20')).toString() }, assert);

87+

strictEqual({ expected: '$0.30', actual: Money('$1.00').multipliedBy(Money('$0.30')).toString() }, assert);

88+

});

89+90+

QUnit.test('Multiply amounts when multiplier is less than multiplicand', (assert) => {

91+

strictEqual({ expected: '$0.01', actual: Money('$0.01').multipliedBy(Money('$1.00')).toString() }, assert);

92+

strictEqual({ expected: '$0.10', actual: Money('$0.10').multipliedBy(Money('$1.00')).toString() }, assert);

93+

strictEqual({ expected: '$1.00', actual: Money('$1.00').multipliedBy(Money('$1.00')).toString() }, assert);

94+

strictEqual({ expected: '$10.00', actual: Money('$10.00').multipliedBy(Money('$1.00')).toString() }, assert);

95+

strictEqual({ expected: '$100.00', actual: Money('$100.00').multipliedBy(Money('$1.00')).toString() }, assert);

96+

strictEqual({ expected: '$1000.00', actual: Money('$1000.00').multipliedBy(Money('$1.00')).toString() }, assert);

97+

});

98+99+

QUnit.module('"Greater Than" Comparison');

100+101+

QUnit.test('$0.00 > $1.00', (assert) => {

102+

strictEqual({ expected: false, actual: Money('$1.00').greaterThan(Money('$1.00')) }, assert);

103+

});

104+105+

QUnit.test('$1.00 > $1.00', (assert) => {

106+

strictEqual({ expected: false, actual: Money('$1.00').greaterThan(Money('$1.00')) }, assert);

107+

});

108+109+

QUnit.test('$2.00 > $1.00', (assert) => {

110+

strictEqual({ expected: true, actual: Money('$2.00').greaterThan(Money('$1.00')) }, assert);

111+

});

112+113+

QUnit.test('$2.01 > $2.00', (assert) => {

114+

strictEqual({ expected: true, actual: Money('$2.01').greaterThan(Money('$1.00')) }, assert);

115+

});

116+

</script>