Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add implementation #2

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions pricing_rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
[
{
"name": "A",
"price": 8.00,
"discount": null,
"condition": null
},
{
"name": "B",
"price": 12.00,
"discount": "BUY_X_FOR_Y_COST",
"condition": [2, 20]
},
{
"name": "C",
"price": 4.00,
"discount": "BUY_X_FOR_Y_COST",
"condition": [3, 10]
},
{
"name": "D",
"price": 7.00,
"discount": "BUY_X_GET_Y_FREE",
"condition": [1, 1]
},
{
"name": "E",
"price": 5.00,
"discount": "BUY_X_FOR_PRICE_OF_Y",
"condition": [3, 2]
}
]
256 changes: 256 additions & 0 deletions test_unidays_discount_challenge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
import unittest

from unidays_discount_challenge import UnidaysDiscountChallenge


# This project runs on Python 3.7 (earlier versions of Python should work as well but it has not been tested).
class TestUniDaysDiscountChallenge(unittest.TestCase):
challenge = UnidaysDiscountChallenge()

def setUp(self):
# Arrange.
self.challenge = UnidaysDiscountChallenge()

def test_scenario_1(self):
# Act.
self.challenge.add_to_basket()
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(0, total)
self.assertEqual(0, delivery_charge)

def test_scenario_2(self):
# Act.
self.challenge.add_to_basket("A")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(8, total)
self.assertEqual(7, delivery_charge)

def test_scenario_3(self):
# Act.
self.challenge.add_to_basket("B")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(12, total)
self.assertEqual(7, delivery_charge)

def test_scenario_4(self):
# Act.
self.challenge.add_to_basket("C")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(4, total)
self.assertEqual(7, delivery_charge)

def test_scenario_5(self):
# Act.
self.challenge.add_to_basket("D")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(7, total)
self.assertEqual(7, delivery_charge)

def test_scenario_6(self):
# Act.
self.challenge.add_to_basket("E")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(5, total)
self.assertEqual(7, delivery_charge)

def test_scenario_7(self):
# Act.
self.challenge.add_to_basket("BB")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(20, total)
self.assertEqual(7, delivery_charge)

def test_scenario_8(self):
# Act.
self.challenge.add_to_basket("BBB")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(32, total)
self.assertEqual(7, delivery_charge)

def test_scenario_9(self):
# Act.
self.challenge.add_to_basket("BBBB")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(40, total)
self.assertEqual(7, delivery_charge)

def test_scenario_10(self):
# Act.
self.challenge.add_to_basket("CCC")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(10, total)
self.assertEqual(7, delivery_charge)

def test_scenario_11(self):
# Act.
self.challenge.add_to_basket("CCCC")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(14, total)
self.assertEqual(7, delivery_charge)

def test_scenario_12(self):
# Act.
self.challenge.add_to_basket("DD")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(7, total)
self.assertEqual(7, delivery_charge)

def test_scenario_13(self):
# Act.
self.challenge.add_to_basket("DDD")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(14, total)
self.assertEqual(7, delivery_charge)

def test_scenario_14(self):
# Act.
self.challenge.add_to_basket("EE")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(10, total)
self.assertEqual(7, delivery_charge)

def test_scenario_15(self):
# Act.
self.challenge.add_to_basket("EEE")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(10, total)
self.assertEqual(7, delivery_charge)

def test_scenario_16(self):
# Act.
self.challenge.add_to_basket("EEEE")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(15, total)
self.assertEqual(7, delivery_charge)

def test_scenario_17(self):
# Act.
self.challenge.add_to_basket("DDDDDDDDDDDDDD")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(49, total)
self.assertEqual(7, delivery_charge)

def test_scenario_18(self):
# Act.
self.challenge.add_to_basket("BBBBCCC")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(50, total)
self.assertEqual(0, delivery_charge)

def test_scenario_19(self):
# Act.
self.challenge.add_to_basket("ABBCCCDDEE")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(55, total)
self.assertEqual(0, delivery_charge)

def test_scenario_20(self):
# Act.
self.challenge.add_to_basket("EDCBAEDCBC")
self.challenge.calculate_total_cost()

total = self.challenge.total
delivery_charge = self.challenge.delivery_charge

# Assert.
self.assertEqual(55, total)
self.assertEqual(0, delivery_charge)


if __name__ == '__main__':
unittest.main()
Loading