class tester(TestCase): # valid cart luhn10 tests def test_valid_ID1(self): card_number = "5454545454545454" self.card = CreditCard("Kshitij", "5454545454545454", 5000) self.assertEqual(self.card.valid_card(card_number), True) def test_valid_ID2(self): card_number = "1234567890123456" self.card = CreditCard("Quincy", "1234567890123456", 8000) self.assertEqual(self.card.valid_card(card_number), False) def test_valid_ID3(self): card_number = "2128529407" self.card = CreditCard("Braintree", "2128529407", 9000) self.assertEqual(self.card.valid_card(card_number), True) # All of these tests test the input class, creating an account, charging, crediting and some edge cases def test_single_input(self): self.inputter = Input(['Add Lisa 5454545454545454 $3000']) self.assertEqual(len(self.inputter.card_book), 1) def test_multiple_input(self): input_line = [ 'Add Lisa 5454545454545454 $3000', 'Add Kshitij 79927398713 $6000' ] processor = Input(input_line) output = processor.card_book self.assertEqual(len(processor.card_book), 2) #inputting same person, should overwrite, thus keeping the dictionary with 1 key value def test_same_input(self): input_line = [ 'Add Kshitij 79927398713 $6000', 'Add Kshitij 79927398713 $6000' ] processor = Input(input_line) output = processor.card_book self.assertEqual(len(processor.card_book), 1) def test_charge_credit_account(self): self.inputter = Input([ 'Add Lisa 5454545454545454 $3000', 'Charge Lisa $8', 'Credit Lisa $100' ], ) value = self.inputter.card_book['Lisa'].get_balance() self.assertEqual(value, -92) def test_decline_card(self): self.decliner = Input([ 'Add Tom 4111111111111111 $1000', 'Charge Tom $650', 'Charge Tom $800' ]) val = self.decliner.card_book['Tom'].get_balance() self.assertEqual(val, 650)
def __init__(self, customer, bank, acnt, limit, apr): ''' Create a new predatory credit card instance. The initial balance is zero. customer the name of the customer (e.g., 'Sebastian Valencia') bank the name of the bank (e.g., 'California Savings') acnt the account identifier (e.g., '5391 0375 9387 5309') limit credit limit (measured in dollars) apr annual percentage rate (e.g., 0.0825 for 8.25 APR) ''' CreditCard.__init__(self, customer, bank, acnt, limit) self.apr = apr
def populate_database(): """Populate the database.""" emp = Employees(123456, 'Sammy', 'Retail Applications', 'IT Analyst') emp1 = Employees(5678, 'Nancy', 'Capital Market', 'Teller') emp.create_employees() emp1.create_employees() cust = Customer(123, 'John', '*****@*****.**', '1-233-2234') cust1 = Customer(5678, 'Katherine', '*****@*****.**', '1-456-4578') cust2 = Customer(6788, 'Vijay', '*****@*****.**', '1-678-5555') cust.create_customer() cust1.create_customer() cust2.create_customer() bank_Acc = BankAccount(1234444, 123, 'Chequing', 100) bank_Acc.create_Bank_Account() bank_Acc1 = BankAccount(567888, 5678, 'Saving', 200) bank_Acc1.create_Bank_Account() bank_Acc2 = BankAccount(1677777, 6788, 'Chequing', 400) bank_Acc2.create_Bank_Account() creditCard = CreditCard('Ms', 'Nancy', 'Smith', '15 Bloor St, Toronto', 14566666, 'May', 2023, '677', 'Visa', 'CAD') creditCard.create_Credit_Account() creditCard1 = CreditCard('Mr', 'Sam', 'Rogers', '15 Upland St, Toronto', 8999666, 'Aug', 2021, '127', 'Visa', 'CAD') creditCard1.create_Credit_Account()
def purchase(self): if request.method == 'GET': d = dict() d['totalCost'] = self.purchaseInfo['totalCost'] return render_template('purchase.html', purchaseInfo=d) if request.method == 'POST': cardNumber = request.form.get('cardNumber') securityCode = request.form.get('securityCode') cardType = request.form.get('cardType') expireMonth = request.form.get('expireMonth') expireYear = request.form.get('expireYear') expireDate = expireMonth + '/' + expireYear ##-- Template Pattern --## if cardType == "credit": payPass = CreditCard(cardNumber, securityCode, expireDate).PaymentSummary() else: payPass = DebitCard(cardNumber, securityCode, expireDate).PaymentSummary() if payPass == 1: self.purchaseInfo['cardNumber'] = cardNumber self.purchaseInfo['expireDate'] = expireDate self.model.addPurchase(self.purchaseInfo) else: print("Sorry your card did not go through the system") return redirect(url_for('dashboard'))
def AlwaysDatedCard(): someName = random.choice("aabbcccdde effgghhii") cardNumber = random.randint(1111111111111111, 9999999999999999) today = datetime.date.today() expirationDate = today - datetime.timedelta(days=today.day + 1) return CreditCard(someName, cardNumber, MonthYear(expirationDate.month, expirationDate.year))
def checkout(self, cartID, aCardOwner, aCardNumber, aCardExpirationDate): session = self.getSession(cartID) with session: cart = session.cart aCreditCard = CreditCard(aCardOwner, aCardNumber, aCardExpirationDate) cashier = Cashier(self.merchantProcessor, cart, aCreditCard, session.clientId, self.salesBook) cashier.checkout()
def charge(self, price): ''' Charge given price to the card, assuming sufficient credit limit. Return True if charge was processed Return False and assess $5 fee if charge is denied ''' success = CreditCard.charge(self, price) if not success: self.balance += 5 return success
def creditCardCreate(creditCard): c = creditCard dbAcnt = CreditCard(name=c['name'], description=c['description'], cardNumber=c['cardNumber'], cardType=c['cardType'], creditLimit=c['creditLimit'], availCreditLimit=c['availCreditLimit'], availCashLimit=c['availCashLimit'], outstandingTotal=c['outstandingTotal'], holdersName=c['holdersName']).save() print("Credit Card", colored(dbAcnt.name), "created")
def alwaysDatedCard(self): someName = self.validCardOwner() cardNumber = self.validCardNumber() today = datetime.date.today() month_year = self.datedCardExpirationDate(today) return CreditCard(someName, cardNumber, month_year)
from CreditCard import CreditCard wallet = CreditCard('Lateema Spencer', 'California Savings', '5391 0375 9387 5309', 100) print('Customer =', wallet.get_customer()) print('Bank =', wallet.get_bank()) print('Account =', wallet.get_account()) print('Limit =', wallet.get_limit()) print('Balance =', wallet.get_balance()) while wallet.get_balance() > 100: wallet.make_payment(100) print('New Balance =', wallet.get_balance()) print()
from CreditCard import CreditCard my_customers = [] if __name__ == "__main__": my_customers.append(CreditCard("tomi", "gtb", "3465 7896 5868 3452", 3000)) my_customers.append(CreditCard("tunji", "gtb", "3788 3756 0978 5482", 2500)) my_customers.append(CreditCard("remi", "gtb", "5096 9796 9563 0375", 5000)) for val in range(17): my_customers[0].charge(val) my_customers[1].charge(2 * val) my_customers[2].charge(3 * val) for c in range(3): print("Customer:", my_customers[c].get_customer()) print("Bank:", my_customers[c].get_bank()) print("Account:", my_customers[c].get_account()) print("Limit:", my_customers[c].get_limit()) print("Balance:", my_customers[c].get_balance()) while my_customers[c].get_balance() > int(100): my_customers[c].make_payment(100) print("New balance:", my_customers[c].get_balance()) print()
def ValidCard(): someName = random.choice("aabbcccdde effgghhii") cardNumber = random.randint(1111111111111111, 9999999999999999) expirationDate = datetime.date.today() + datetime.timedelta(days=365) return CreditCard(someName, cardNumber, MonthYear(expirationDate.year, expirationDate.month))
def create_account(self, line): add, given_name, card_number, limit = line # limit is still a "$XXXX" we need to change it to an integer limit = int(limit[1:]) # add a person to the map, where their name is the key and the value it holds is their credit card info self.card_book[given_name] = CreditCard(given_name, card_number, limit)
def main(): # begin PERSON_TEST print("\nPerson Test") bob = Person() marge = Person("Marge", "Inovera", "321 Stats Lane") print("Displaying Bob (all should be blank)") print(" First Name: " + bob.getFirstName(), end=", ") print("Last Name: " + bob.getLastName(), end=", ") print("Address: " + bob.getAddress()) print("\nMarge, expected output is") print(" First Name: Marge, Last Name: Inovera, Address: 321 Stats Lane") print("Actual Result") print(" First Name: " + marge.getFirstName(), end=", ") print("Last Name: " + marge.getLastName(), end=", ") print("Address: " + marge.getAddress()) # end PERSON_TEST # begin CC_TEST print("\n\nCredit Card Test") try: discover = CreditCard("Lou", "Pole", "456 Haven Ave", 8675309, 5000) print("Card Number - Expected: 8675309, Actual: " + str(discover.getCardNumber())) print("Card Holder Name - Expected: Lou Pole, Actual: " + discover.getOwnerName()) print("Address - Expected: 456 Haven Ave, Actual: " + discover.getAddress()) print("Credit Limit - Expected: 5000, Actual: " + str(discover.getCreditLimit())) print("Balance - Expected: 0, Actual: " + str(discover.getBalance())) if discover.makeCharge(3000): print("\nCharge of 3000 applied correctly") else: print("\nCharge failed") print("Balance - Expected: 3000, Actual: " + str(discover.getBalance())) if discover.makeCharge(4000): print("\nAdditional Charge of 4000 allowed in error") else: print("\nCard declined correctly") print("Balance - Expected: 3000, Actual: " + str(discover.getBalance())) if discover.makeCharge(-500): print("\nNegative charge allowed in error") else: print("\nNegative charge denied correctly") print("Balance - Expected: 3000, Actual: " + str(discover.getBalance())) if discover.payBalance(400): print("\nPayment of 400 accepted correctly") else: print("\nPayment denied in error") print("Balance - Expected: 2600, Actual: " + str(discover.getBalance())) if discover.payBalance(-500): print("\nNegative payment accepted in error") else: print("\nNegative payment denied correctly") print("Balance - Expected: 2600, Actual: " + str(discover.getBalance())) print("\nNow setting credit limit to 10000") discover.setCreditLimit(10000) print("Credit Limit - Expected: 10000, Actual: " + str(discover.getCreditLimit())) if discover.makeCharge(4000): print("\nAdditional charge of 4000 applied correctly") else: print("\nCharge denied in error") print("Balance - Expected: 6600, Actual: " + str(discover.getBalance())) if discover.setCreditLimit(5000): print("\nCredit Limit reduced below current balance correctly.") else: print("Balance modification failed in error") print("Credit Limit - Expected: 5000, Actual: " + str(discover.getCreditLimit())) print("Balance - Expected: 6600, Actual: " + str(discover.getBalance())) if discover.makeCharge(5): print("\nAdditional Charge of 5 allowed in error") else: print("\nCard declined correctly") print("Balance - Expected: 6600, Actual: " + str(discover.getBalance())) if discover.payBalance(7000): print("\nPayment of 7000 accepted correctly") else: print("\nPayment denied in error") print("Balance - Expected: -400, Actual: " + str(discover.getBalance())) except NameError: print("Credit Card not implemented")
def test_valid_ID1(self): card_number = "5454545454545454" self.card = CreditCard("Kshitij", "5454545454545454", 5000) self.assertEqual(self.card.valid_card(card_number), True)
from CreditCard import CreditCard if __name__ == '__main__': wallet = [] wallet.append( CreditCard('John Bowman', 'California Savings', '5391 0375 9387 5309', 2500)) wallet.append( CreditCard('John Bowman', 'California Federal', '3485 0399 3395 1954', 3500)) wallet.append( CreditCard('John Bowman', 'California Finance', '5391 0375 9387 5309', 5000)) for val in range(1, 17): wallet[0].charge(val) wallet[1].charge(2 * val) wallet[2].charge(3 * val) for c in range(3): print('Customer =', wallet[c].get_customer()) print('Bank =', wallet[c].get_bank()) print('Account =', wallet[c].get_account()) print('Limit =', wallet[c].get_limit()) print('Balance =', wallet[c].get_balance()) while wallet[c].get_balance() > 100: wallet[c].make_payment(100) print('New Balance =', wallet[c].get_balance()) print()
def test_creditcard_class(cc, pay=0): # Tests the CreditCard class print("Current CC details:") print(cc.to_string()) print("Getting class attributes using methods...") print("Getting customer name...\n" + cc.get_customer()) print("Getting bank...\n" + cc.get_bank()) print("Getting accnt number...\n" + cc.get_account()) print("Getting balance...\n" + str(cc.get_balance())) print("Getting limit...\n" + str(cc.get_limit()) + "\n") print("Making payment of " + str(pay) + "...") cc.make_payment(pay) if __name__ == "__main__": test_flower_class("Rose", 20, 4) #Card instance with no initial balance card = CreditCard("Chezka", "WF", "1111 2222 3333 4444", 10000) test_creditcard_class(card) #Card instance with initial balance card_init_balance = CreditCard("Franchezka", "WF", "1234 1234 1234 1234", 10000, 500) test_creditcard_class(card_init_balance, -15)
from CreditCard import CreditCard c1 = CreditCard("Brian", "The Bank", 12345, 7) print(c1.get_customer()) c1.charge(1.5) print(c1.get_balance()) c1.make_payment(.6) print(c1.get_balance())
from CreditCard import CreditCard wallet = [] wallet.append(CreditCard('Ankur Raina', 'CITI', '111122223333', 100000)) wallet.append(CreditCard('Ravi', 'AXIS', '222333444', 100000)) wallet.append(CreditCard('Vivek', 'KOTAK', '555666777', 120000)) wallet.append(CreditCard('Manish', 'UNION', '999777888', 150000)) for val in range(1, 18): wallet[0].charge(val) wallet[1].charge(2 * val) wallet[2].charge(3 * val) for c in range(3): print('Customer =', wallet[c].get_customer()) print('Bank =', wallet[c].get_bank()) print('Account =', wallet[c].get_account()) print('Limit =', wallet[c].get_limit()) print('Balance =', wallet[c].get_liability()) while wallet[c].get_liability() > 100: wallet[c].make_payment(100) print('New balance =', wallet[c].get_liability()) print()
def classtest(val): cc = CreditCard('John','1st bank','345 333 5566',1000) cc.charge(345) val = cc.get_balance() print(val)
def validCard(self): someName = self.validCardOwner() cardNumber = self.validCardNumber() month_year = self.validCardExpirationDate() return CreditCard(someName, cardNumber, month_year)
def test_valid_ID2(self): card_number = "1234567890123456" self.card = CreditCard("Quincy", "1234567890123456", 8000) self.assertEqual(self.card.valid_card(card_number), False)
def test_valid_ID3(self): card_number = "2128529407" self.card = CreditCard("Braintree", "2128529407", 9000) self.assertEqual(self.card.valid_card(card_number), True)
def collectPaymentDetails(self): num = input("Digite o número do cartão: ") date = input("Digite a data de experição do cartão mm/yy: ") cvv = input("Digite o código de segurança no verso do cartão (CVV): ") self.creditCard = CreditCard(num, date, cvv)