def test_stock_transaction_sanity(self): stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) stock_transaction_table = StockTransactionTable(stock_db_connection) stock_transaction = StockTransaction() stock_transaction.set_symbol("601398") stock_transaction.set_buy_or_sell("buy") stock_transaction.set_quantity(100) stock_transaction.set_price(4.51) stock_transaction.set_date(date(2015, 11, 10)) stock_transaction_table.add_stock_transaction(stock_transaction) stock_transaction = StockTransaction() stock_transaction.set_symbol("601857") stock_transaction.set_buy_or_sell("buy") stock_transaction.set_quantity(100) stock_transaction.set_price(4.51) stock_transaction.set_date(date(2015, 11, 10)) stock_transaction_table.add_stock_transaction(stock_transaction) stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id(1) stock_transaction.set_quantity("500") stock_transaction_table.update_stock_transaction(stock_transaction) stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id(1) stock_transaction_table.delete_stock_transaction(stock_transaction) return
def test_lowest_buy_price_quantity3(self): ''' test lowest buy price quantity with sell transaction ''' stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) stock_transaction_table = StockTransactionTable(stock_db_connection) # init transaction 1 stock_transaction_1 = StockTransaction() stock_transaction_1.symbol = "601398" stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG stock_transaction_1.date = date(2016, 5, 15) stock_transaction_1.quantity = 200 stock_transaction_1.price = 4.51 stock_transaction_table.add_stock_transaction(stock_transaction_1) stock_transaction_1.trans_id # init transaction 2 stock_transaction_2 = StockTransaction() stock_transaction_2.symbol = "601398" stock_transaction_2.buy_or_sell = StockTransaction.SELL_FLAG stock_transaction_2.date = date(2016, 5, 16) stock_transaction_2.quantity = 100 stock_transaction_2.price = 4.81 stock_transaction_table.add_stock_transaction(stock_transaction_2) stock_transaction_2.trans_id with self.assertRaises(Exception): StockTransaction.get_lowest_buy_price_quantity("601398") return
def listbox_select(self, event): w = event.widget index = w.curselection() if len(index) == 0: return list_box_string = w.get(index[0]) list_box_string_list = list_box_string.split(",") id_string = list_box_string_list[0] trans_id = int(id_string[3:]) stock_transaction_table = StockTransactionTable() stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id(trans_id) self.entryTransId.delete(0, END) self.entryTransId.insert(END, stock_transaction.get_trans_id()) self.entrySymbol.delete(0, END) self.entrySymbol.insert(END, stock_transaction.get_symbol()) self.entryBuyOrSell.delete(0, END) self.entryBuyOrSell.insert(END, stock_transaction.get_buy_or_sell()) self.entryQuantity.delete(0, END) self.entryQuantity.insert(END, stock_transaction.get_quantity()) self.entryPrice.delete(0, END) self.entryPrice.insert(END, stock_transaction.get_price()) self.entryDate.delete(0, END) self.entryDate.insert(END, stock_transaction.get_date()) return
def test_lowest_buy_price_quantity(self): ''' test lowest buy price quantity ''' stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) stock_transaction_table = StockTransactionTable(stock_db_connection) # init transaction 1 stock_transaction_1 = StockTransaction() stock_transaction_1.symbol = "601398" stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG stock_transaction_1.date = date(2016, 5, 15) stock_transaction_1.quantity = 200 stock_transaction_1.price = 4.9 stock_transaction_table.add_stock_transaction(stock_transaction_1) stock_transaction_1.trans_id # init transaction 2 stock_transaction_2 = StockTransaction() stock_transaction_2.symbol = "601398" stock_transaction_2.buy_or_sell = StockTransaction.BUY_FLAG stock_transaction_2.date = date(2016, 5, 16) stock_transaction_2.quantity = 100 stock_transaction_2.price = 4.81 stock_transaction_table.add_stock_transaction(stock_transaction_2) stock_transaction_2.trans_id quantity = StockTransaction.get_lowest_buy_price_quantity("601398") self.assertEqual(quantity, 100) return
def add_transaction(self): symbol = self.cbbSymbol.get() if (not symbol): self.set_status("Symbol is empty.") return buy_or_sell = self.cbbBuyOrSell.get() if (not buy_or_sell): self.set_status("Buy/Sell is empty.") return quantity = self.entryQuantity.get() if (not quantity): self.set_status("Quantity is empty.") return price = self.entryPrice.get() if (not price): self.set_status("Price is empty.") return # date = self.entryDate.get() # if (not date): # self.set_status("Date is empty.") # return stock_transaction = StockTransaction() stock_transaction.set_symbol(symbol) stock_transaction.set_buy_or_sell(buy_or_sell) stock_transaction.set_quantity(quantity) stock_transaction.set_price(price) # stock_transaction.set_date(date) stock_transaction.set_date(datetime.datetime.now()) stock_transaction_table = StockTransactionTable() stock_transaction_table.add_stock_transaction(stock_transaction) self.set_status("Added") return
def test_close_stock_transaction(self): ''' test_close_stock_transaction ''' stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) stock_transaction_table = StockTransactionTable(stock_db_connection) # init transaction 1 stock_transaction_1 = StockTransaction() stock_transaction_1.symbol = "601398" stock_transaction_1.buy_or_sell = StockTransaction.BUY_FLAG stock_transaction_1.date = datetime(2016, 5, 15, 0, 0, 0) stock_transaction_1.quantity = 200 stock_transaction_1.price = 4.51 stock_transaction_table.add_stock_transaction(stock_transaction_1) trans_id_1 = stock_transaction_1.trans_id # init transaction 2 stock_transaction_2 = StockTransaction() stock_transaction_2.symbol = "601398" stock_transaction_2.buy_or_sell = StockTransaction.SELL_FLAG stock_transaction_2.date = datetime(2016, 5, 16, 0, 0, 0) stock_transaction_2.quantity = 200 stock_transaction_2.price = 4.81 stock_transaction_table.add_stock_transaction(stock_transaction_2) trans_id_2 = stock_transaction_2.trans_id stock_closed_transaction = \ StockClosedTransactionTable.close_transaction(stock_transaction_1, stock_transaction_2) self.assertEqual(stock_closed_transaction.symbol, "601398") self.assertEqual(stock_closed_transaction.buy_price, 4.51) self.assertEqual(stock_closed_transaction.sell_price, 4.81) self.assertEqual(stock_closed_transaction.buy_date, datetime(2016, 5, 15, 0, 0, 0)) self.assertEqual(stock_closed_transaction.sell_date, datetime(2016, 5, 16, 0, 0, 0)) self.assertEqual(stock_closed_transaction.quantity, 200) stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id( trans_id_1) self.assertIsNone(stock_transaction, "stock_transaction_1 is not deleted") stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id( trans_id_2) self.assertIsNone(stock_transaction, "stock_transaction_2 is not deleted") return
def test_lowest_buy_price_quantity2(self): ''' test lowest buy price quantity ''' stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) StockTransactionTable(stock_db_connection) quantity = StockTransaction.get_lowest_buy_price_quantity("601398") self.assertEqual(quantity, 0) return
def test_lowest_buy_price2(self): ''' test lowest buy price ''' stock_db_connection = get_default_db_connection() reset_table(stock_db_connection) StockTransactionTable(stock_db_connection) lowest_price = StockTransaction.get_lowest_buy_price("601398") self.assertEqual(lowest_price, 9999.00) return
def refresh_list_box(self): self.lstboxStockTransaction.delete(0, END) stock_transaction_table = StockTransactionTable() stock_transaction_list = \ stock_transaction_table.get_all_stock_transaction() for stock_transaction in stock_transaction_list: list_box_string = "ID:{0},Symbol:{1},Buy_or_Sell:{2}".format( stock_transaction.get_trans_id(), stock_transaction.get_symbol(), stock_transaction.get_buy_or_sell()) self.lstboxStockTransaction.insert(END, \ list_box_string) return
def get_stock_quantity_from_db(self): stock_transaction_table = StockTransactionTable(self.conn) stock_transaction_list = \ stock_transaction_table.get_stock_transaction_list_by_symbol( self.symbol) quantity = 0 for stock_transaction in stock_transaction_list: buy_or_sell = stock_transaction.get_buy_or_sell() if (buy_or_sell == "Buy"): quantity = quantity + stock_transaction.get_quantity() elif (buy_or_sell == "Sell"): quantity = quantity - stock_transaction.get_quantity() else: # Need to raise an error return None return quantity
def delete_stock_cash(self): index = self.lstboxStockTransaction.curselection() if len(index) == 0: return list_box_string = self.lstboxStockTransaction.get(index[0]) list_box_string_list = list_box_string.split(",") id_string = list_box_string_list[0] trans_id = int(id_string[3:]) stock_transaction_table = StockTransactionTable() stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id(trans_id) stock_transaction_table.delete_stock_transaction(stock_transaction) self.refresh_list_box() return
def update_stock_transaction(self): trans_id = int(self.entryTransId.get()) stock_transaction_table = StockTransactionTable() stock_transaction = \ stock_transaction_table.get_stock_transaction_by_trans_id(trans_id) symbol = self.entrySymbol.get() buy_or_sell = self.entryBuyOrSell.get() quantity = int(self.entryQuantity.get()) price = float(self.entryPrice.get()) date = self.entryDate.get() stock_transaction.set_symbol(symbol) stock_transaction.set_buy_or_sell(buy_or_sell) stock_transaction.set_quantity(quantity) stock_transaction.set_price(price) stock_transaction_table.update_stock_transaction(stock_transaction) self.refresh_list_box() return