def test_get_order_info_account_not_found(self): mock_order = MockModel(id=12) self.view.request.dbsession.query_return_values = { Order: mock_order, Product.id: MockModel(id=25), Account.name: exc.SQLAlchemyError } self.assertEqual( {'status': f'account not found for order id {mock_order.id}'}, self.view.get_order_info())
def test_get_account_info(self): mock_acc = MockModel(name='Abc', number='123') self.view.request.dbsession.return_value = MockQuery(first_=mock_acc) self.assertEqual( { 'account_name': mock_acc.name, 'account_number': mock_acc.number }, self.view.get_account_info())
def test_get_order_info(self): mock_order = MockModel(id=12, number=5) mock_product = MockModel(id=25) mock_account = MockModel(name='acc345') query_return_values = { Order: mock_order, Product.id: mock_product, Account.name: mock_account } self.view.request.dbsession.query_return_values = query_return_values expected_output = { 'status': 'ok', 'order_number': mock_order.number, 'product_id': mock_product[0], 'account_name': mock_account[0], } self.assertEqual(expected_output, self.view.get_order_info())
def test_get_orders_for_account_with_product_char_falsey(self): mock_orders = [ MockModel(**{ 'id': ind, 'reference': ref }) for ind, ref in enumerate(['ab', 'cd']) ] self.view.request.dbsession.return_value = MockQuery( all_=mock_orders, ) self.assertEqual({'orders': [f'{a[0]} - {a[1]}' for a in mock_orders]}, self.view.get_orders_for_account())
def test_get_account_and_product_number_lookup_fail(self): acc_name, acc_num = 'foo', '242' self.view.request.dbsession.side_effect = [ MockQuery(one_=MockModel(name=acc_name, acc_num=acc_num)), MockQuery(raise_exc=exc.SQLAlchemyError) ] self.assertEqual( { 'account_name': acc_name, 'account_number': acc_num, 'product_number': None }, self.view.get_account_and_product_number())
def test_get_account_and_product_number_with_mocked_product_query(self): self.view.request.params = {'account_id': self.accounts[0].id} mock_product = MockModel(id=32) self.view.request.dbsession = PartialMockDbSession( query_return_values={Product.number: mock_product}, dbsession=self.session ) self.assertEqual( {'account_name': self.accounts[0].name, 'account_number': self.accounts[0].number, 'product_number': mock_product[0]}, self.view.get_account_and_product_number() )
def test_get_account_and_product_number(self): acc_name, acc_num = 'foo', '242' pn = '123' self.view.request.dbsession.side_effect = [ MockQuery(one_=MockModel(name=acc_name, acc_num=acc_num)), MockQuery(one_=[pn]) ] self.assertEqual( { 'account_name': acc_name, 'account_number': acc_num, 'product_number': pn }, self.view.get_account_and_product_number())
def test_get_account_and_product_number_with_mocked_account_query(self): self.view.request.params = {'account_id': self.accounts[0].id} acc_data = {'name': 'foo', 'acc_num': 45} mock_account = MockModel(**acc_data) self.view.request.dbsession = PartialMockDbSession( query_return_values={Account.number.label('acc_num'): mock_account}, dbsession=self.session ) self.assertEqual( {'account_name': acc_data['name'], 'account_number': acc_data['acc_num'], 'product_number': None}, self.view.get_account_and_product_number() )
def test_get_orders_for_account_with_product_char_truthy(self): mock_orders = [ MockModel(**{ 'id': ind, 'reference': ref }) for ind, ref in enumerate(['ab', 'cd']) ] mock_products = [ MockModel(**{ 'id': ind, 'number': num }) for ind, num in enumerate(['123', '345']) ] self.view.request.dbsession.side_effect = [ MockQuery(all_=mock_orders), MockQuery(all_=mock_products) ] self.view.request.params.update({'product_char': '2'}) self.assertEqual( { 'orders': [f'{a[0]} - {a[1]}' for a in mock_orders], 'product_results': [f'{a[0]} - {a[1]}' for a in mock_products] }, self.view.get_orders_for_account())
def test_get_orders_for_account_order_ids_query_mocked(self): self.view.request.params.update({ 'product_char': self.products[0].number[0] }) mocked_order_results = [MockModel(id=i, reference=s) for i, s in enumerate(['ab', 'bc', 'cd'])] self.view.request.dbsession = PartialMockDbSession( query_return_values={Order.id: mocked_order_results}, dbsession=self.session ) expected_output = { 'orders': [f'{a.id} - {a.reference}' for a in mocked_order_results], 'product_results': [f'{a.id} - {a.number}' for a in self.products if self.view.request.params['product_char'] in a.number] } self.assertEqual(expected_output, self.view.get_orders_for_account())
def test_get_orders_for_account_product_results_query_mocked(self): self.view.request.params.update({ 'account_name': self.accounts[0].name, 'product_char': self.products[0].number[0] }) mocked_product_results = [MockModel(id=i, number=s) for i, s in enumerate(['12', '34', '56'])] self.view.request.dbsession = PartialMockDbSession( query_return_values={Product.id: mocked_product_results}, dbsession=self.session ) expected_output = { 'orders': [f'{a.id} - {a.reference}' for a in self.orders if a.account_id == self.accounts[0].id], 'product_results': [f'{a.id} - {a.number}' for a in mocked_product_results] } self.assertEqual(expected_output, self.view.get_orders_for_account())
def setUp(self): self.mock_account = MockModel(number=123, name='foo')