def main(): # Initialize different plans single_plan = Plan('Single', 49, 1) plus_plan = Plan('Plus', 99, 3) infinite_plan = Plan('Infinite', 249, -1) # Initialize multiple websites website_1 = Website('https://website_1.com') website_2 = Website('https://website_2.com') website_3 = Website('https://website_3.com') website_4 = Website('https://website_4.com') # Initialize multiple customers customer_1 = Customer('customer_1', '123456789', '*****@*****.**') customer_2 = Customer('customer_2', '123456789', '*****@*****.**') customer_3 = Customer('customer_3', '123456789', '*****@*****.**') # customer_1 subscribed for single_plan customer_1.add_subscription(single_plan) print("{} has subscribed for {} plan".format(customer_1, customer_1.subscription.plan)) # customer_1 added one website customer_1.add_website(website_1) print("{} has added website {} as per the {} plan".format(customer_1, \ customer_1.websites, customer_1.subscription.plan)) # customer_1 can not add more website in single_plan customer_1.add_website(website_2) print("{} can't add website {} as per the {} plan".format(customer_1, \ website_2, customer_1.subscription.plan)) # customer_1 can change plan from single_plan to plus_plan customer_1.change_plan(plus_plan) print("{} has changed his current plan {} to {} plan".format(customer_1, \ single_plan, customer_1.subscription.plan)) # customer_2 subscribe for infinite_plan customer_2.add_subscription(infinite_plan) # customer_2 can add multiple websites customer_2.add_website(website_1) customer_2.add_website(website_2) customer_2.add_website(website_3) customer_2.add_website(website_4) print("{} has added four websites {} under infinite plan".format(customer_2, \ customer_2.websites))
class TestCustomer(unittest.TestCase): def setUp(self): self.single_plan = Plan('Single', 49, 1) self.plus_plan = Plan('Plus', 99, 3) self.website_1 = Website('https://google.com') self.website_2 = Website('https://google.com') self.customer_1 = Customer('customer_1', '123456789', '*****@*****.**') def test_customer_can_add_website(self): self.customer_1.add_subscription(self.single_plan) self.customer_1.add_website(self.website_1) self.assertEqual(len(self.customer_1.websites), 1) def test_customer_can_add_website_as_per_the_plan(self): self.customer_1.add_subscription(self.plus_plan) self.customer_1.add_website(self.website_1) self.customer_1.add_website(self.website_2) self.assertEqual(len(self.customer_1.websites), 2) def test_customer_can_not_add_website(self): self.customer_1.add_subscription(self.single_plan) self.customer_1.add_website(self.website_1) self.customer_1.add_website(self.website_1) self.assertNotEqual(len(self.customer_1.websites), 2) def test_customer_can_change_plan(self): self.customer_1.add_subscription(self.single_plan) old_plan = self.customer_1.subscription.plan self.customer_1.add_subscription(self.plus_plan) new_plan = self.customer_1.subscription.plan self.assertNotEqual(old_plan, new_plan) def test_customer_can_add_subscription(self): self.customer_1.add_subscription(self.single_plan) self.assertIsInstance(self.customer_1.subscription, Subscription)