[ { "name": "three units at 1.99", "args": [{ "minor": 199, "currency": "GBP" }, 3, 0], "expect": { "minor": 597, "currency": "GBP" } }, { "name": "ten percent off three units", "args": [{ "minor": 199, "currency": "GBP" }, 3, 1000], "expect": { "minor": 537, "currency": "GBP" } }, { "name": "single unit, no discount", "args": [{ "minor": 50000, "currency": "GBP" }, 1, 0], "expect": { "minor": 50000, "currency": "GBP" } }, { "name": "zero quantity is zero", "args": [{ "minor": 50000, "currency": "GBP" }, 0, 0], "expect": { "minor": 0, "currency": "GBP" } }, { "name": "a credit line is negative", "args": [{ "minor": 50000, "currency": "GBP" }, -1, 0], "expect": { "minor": -50000, "currency": "GBP" } }, { "name": "a discount that lands on half a penny rounds up", "args": [{ "minor": 9999, "currency": "GBP" }, 1, 1000], "expect": { "minor": 8999, "currency": "GBP" } }, { "name": "a full discount leaves nothing", "args": [{ "minor": 1999, "currency": "GBP" }, 2, 10000], "expect": { "minor": 0, "currency": "GBP" } }, { "name": "a fractional quantity is an error", "args": [{ "minor": 199, "currency": "GBP" }, 2.5, 0], "expectError": "quantity must be an integer" }, { "name": "a discount above 100 percent is an error", "args": [{ "minor": 199, "currency": "GBP" }, 1, 10001], "expectError": "between 0 and 10000" } ]