Tests for negative discounts

#2247 - Makes the discount tests a bit more flexible as it's not all done on setup, and adds a few cases to test that negative discounts are being applied to totals and formats correctly.