예제 #1
0
    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 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
예제 #3
0
    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 test_reset_table(self):
        # test
        logging.info("new StockDbConnection")
        stock_db_connection = get_default_db_connection()
        logging.info("reset table")
        reset_table(stock_db_connection)

        stock_info_table = StockInfoTable(stock_db_connection)
        stock_info_list = stock_info_table.get_all_stock_info()
        self.assertEqual(len(stock_info_list), 7)
        return
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
    def test_stock_closed_transaction_sanity(self):
        '''
            test_stock_closed_transaction_sanity()
        '''
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        transaction_table = StockClosedTransactionTable(stock_db_connection)
        # new a stock closed transaction
        stock_closed_transaction = StockClosedTransaction()
        stock_closed_transaction.symbol = "601398"
        stock_closed_transaction.buy_price = 4.51
        stock_closed_transaction.sell_price = 4.61
        stock_closed_transaction.buy_date = datetime(2015, 11, 10, 0, 0, 0)
        stock_closed_transaction.sell_date = datetime(2015, 12, 30, 0, 0, 0)
        stock_closed_transaction.quantity = 200
        transaction_table.add_stock_closed_transaction(
            stock_closed_transaction)

        # query and compare
        stock_closed_transaction_list = \
            transaction_table.get_all_stock_closed_transaction()
        self.assertEqual(len(stock_closed_transaction_list), 1,
                         "There should be only 1 item")
        stock_closed_transaction = stock_closed_transaction_list[0]
        self.assertEqual(stock_closed_transaction.symbol, "601398")
        self.assertEqual(stock_closed_transaction.buy_price, 4.51)
        self.assertEqual(stock_closed_transaction.sell_price, 4.61)
        self.assertEqual(stock_closed_transaction.buy_date,
                         datetime(2015, 11, 10, 0, 0, 0))
        self.assertEqual(stock_closed_transaction.sell_date,
                         datetime(2015, 12, 30, 0, 0, 0))
        self.assertEqual(stock_closed_transaction.quantity, 200)

        # delete the newly created item
        transaction_table.delete_stock_closed_transaction(
            stock_closed_transaction)
        stock_closed_transaction_list = \
            transaction_table.get_all_stock_closed_transaction()
        self.assertEqual(len(stock_closed_transaction_list), 0,
                         "The list should be an empty list")

        return
    def test_stock_cash_sanity(self):
        stock_db_connection = get_default_db_connection()
        reset_table(stock_db_connection)
        stock_cash_table = StockCashTable(stock_db_connection)
        stock_cash = StockCash("601398", 1000)
        stock_cash_table.add_stock_cash(stock_cash)

        # test the new created line
        stock_cash = stock_cash_table.get_stock_cash_by_symbol("601398")
        self.assertEqual(stock_cash.get_symbol(), "601398")
        self.assertEqual(stock_cash.get_amount(), 1000)

        # test update stock cash
        stock_cash.set_amount(23.456)
        stock_cash_table.update_stock_cash(stock_cash)
        stock_cash = stock_cash_table.get_stock_cash_by_symbol("601398")
        self.assertEqual(stock_cash.get_amount(), 23.456)

        # test an unavailable line
        stock_cash = stock_cash_table.get_stock_cash_by_symbol("XXXXXX")
        self.assertEqual(stock_cash, None)

        # insert a new line, and test get_all function
        stock_cash = StockCash("601857", 5000)
        stock_cash_table.add_stock_cash(stock_cash)
        stock_cash_list = stock_cash_table.get_all_stock_cash()
        self.assertEqual(len(stock_cash_list), 2)
        stock_cash = stock_cash_list[0]
        self.assertEqual(stock_cash.get_symbol(), "601398")
        self.assertEqual(stock_cash.get_amount(), 23.456)
        stock_cash = stock_cash_list[1]
        self.assertEqual(stock_cash.get_symbol(), "601857")
        self.assertEqual(stock_cash.get_amount(), 5000)

        # delete a line
        stock_cash = StockCash("601398", 0)
        stock_cash_table.delete_stock_cash(stock_cash)
        stock_cash = stock_cash_table.get_stock_cash_by_symbol("601398")
        self.assertEqual(stock_cash, None)