class BankAccountDecoratorSpec(unittest.TestCase): def setUp(self): self.a_client_decorator = ClientDecorator() self.a_client = Person() self.a_client_decorator.decorate(self.a_client) self.a_bank_account_decorator = BankAccountDecorator(self.a_client, '1234 5 - 6') #test doubles won't work given type checking rules, using classic self.a_machine = Machine() def it_decorates_a_machine(self): #should work self.a_bank_account_decorator.decorate(self.a_machine) self.a_bank_account_decorator.decorated |should| be(self.a_machine) self.a_bank_account_decorator.decorated |should| have(1).decorators def it_registers_a_credit(self): self.a_bank_account_decorator.balance = 100 self.a_bank_account_decorator.register_credit(50) self.a_bank_account_decorator.balance |should| equal_to(150) def it_sends_a_message_to_the_account_holder(self): message = 'This is a message' self.a_bank_account_decorator.send_message_to_account_holder(message) |should| equal_to(message) def it_check_the_client(self): #should work self.a_client |should| have(1).decorators self.a_bank_account_decorator.client |should| be(self.a_client) def it_realize_a_banking(self): self.a_bank_account_decorator.decorate(self.a_machine) self.a_bank_account_decorator.deposit(100) self.a_bank_account_decorator.draw(25) self.a_bank_account_decorator.average_credit |should| be(75)
def it_discount_a_check(self): #Discounting a check, it should work! a_machine = Machine() a_client = Person() a_client_decorator = ClientDecorator() a_client_decorator.decorate(a_client) a_bank_account_decorator = BankAccountDecorator(a_client,"1234-5") a_bank_account_decorator.decorate(a_machine) a_bank_account_decorator.deposit(100) a_bank_account_decorator.average_credit |should| equal_to(100) a_check = Check(id_="123", account_number="1234-5", value=10) self.an_attendant_decorator.discount_check(a_check) a_bank_account_decorator.average_credit |should| equal_to(90) #It should fail! other_bank_account_decorator = BankAccountDecorator(a_client,"1235-5") other_bank_account_decorator.average_credit = 100 other_bank_account_decorator.decorate(a_machine) a_check = Check(id_="123", account_number="1235-5", value=110) (self.an_attendant_decorator.discount_check, a_check) |should| throw(InsuficientFunds) other_bank_account_decorator.average_credit |should| equal_to(100)
def it_discount_a_check(self): #Discounting a check, it should work! a_machine = Machine() a_client = Person() a_client_decorator = ClientDecorator() a_client_decorator.decorate(a_client) a_bank_account_decorator = BankAccountDecorator(a_client, "1234-5") a_bank_account_decorator.decorate(a_machine) a_bank_account_decorator.deposit(100) a_bank_account_decorator.average_credit | should | equal_to(100) a_check = Check(id_="123", account_number="1234-5", value=10) self.an_attendant_decorator.discount_check(a_check) a_bank_account_decorator.average_credit | should | equal_to(90) #It should fail! other_bank_account_decorator = BankAccountDecorator(a_client, "1235-5") other_bank_account_decorator.average_credit = 100 other_bank_account_decorator.decorate(a_machine) a_check = Check(id_="123", account_number="1235-5", value=110) (self.an_attendant_decorator.discount_check, a_check) | should | throw(InsuficientFunds) other_bank_account_decorator.average_credit | should | equal_to(100)