:red_circle: :white_check_mark: :hammer: Create a 'Money' model to wo… · FagnerMartinsBrack/jack-the-moneylender@a23a18d
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>