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(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_create_hourly_records(self, req_get_patch, get_hourly_data_patch, model_patch): req_get_patch.return_value = namedtuple('req_get', 'content')('') site_id = 5 dbsession = MockDbSession(side_effect=[ MockQuery(raise_exc=SQLAlchemyError), MockQuery(one_=[0]), MockQuery(one_=[site_id]), ]) hourly_data = {'foo': 'bar'} get_hourly_data_patch.side_effect = [{}, hourly_data] create_hourly_records(dbsession) model_patch.assert_called_with(site_id=site_id, **hourly_data) self.assertEqual([model_patch.return_value], dbsession.added_records)
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_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_aurn_sites_all_geo_not_geo_limit(self, haversine_patch, get_query_patch): site_items = ['b', 'c', 'a'] + ['s' for _ in range(20)] sort_keys = ['3', '1', '2'] + ['s' for _ in range(20)] haversine_patch.side_effect = [s for s in sort_keys] get_query_patch.return_value = MockQuery(all_=site_items) output = Query.get_aurn_sites({}, {}, ['lat', 'lon']) self.assertEqual( list( sorted(site_items, key=lambda x: sort_keys[site_items.index(x)])), output)
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_resolve_hourly_data_where_not_site_ids(self, get_times_patch, aurn_hourly_patch, get_query_patch, get_filter_dict_patch, get_sites_patch): get_sites_patch.return_value = [namedtuple('site', 'id')(5)] get_times_patch.return_value = 1, 3 aurn_hourly_patch.time = 2 aurn_hourly_patch.site_id = namedtuple('sa_obj', 'in_')(lambda x: x) test_val = 'expected_return_val' mock_query = MockQuery(all_=test_val) get_query_patch.return_value = mock_query self.assertEqual(test_val, Query.resolve_hourly_data('root', 'info', foo='bar')) self.assertEqual( (aurn_hourly_patch.time >= get_times_patch.return_value[0], aurn_hourly_patch.time <= get_times_patch.return_value[1], [a.id for a in get_sites_patch.return_value]), mock_query.filter_args)
def test_resolve_hourly_data_where_site_ids_provided( self, get_times_patch, aurn_hourly_patch, get_query_patch, get_filter_dict_patch, get_sites_patch): get_times_patch.return_value = 1, 3 aurn_hourly_patch.time = 2 aurn_hourly_patch.site_id = namedtuple('sa_obj', 'in_')(lambda x: x) sites_query_ids = [5, 6, 7] get_sites_patch.return_value = [ namedtuple('site', 'id')(i) for i in sites_query_ids ] test_val = 'expected_return_val' mock_query = MockQuery(all_=test_val) get_query_patch.return_value = mock_query site_ids_queried = [3, 5, 6, 25] self.assertEqual( test_val, Query.resolve_hourly_data('root', 'info', site_ids=site_ids_queried)) self.assertEqual( (aurn_hourly_patch.time >= get_times_patch.return_value[0], aurn_hourly_patch.time <= get_times_patch.return_value[1], [i for i in sites_query_ids if i in site_ids_queried]), mock_query.filter_args)
def test_account_task(self, db_session_patch): db_session_patch.return_value = MockQuery(first_=self.mock_account) self.assertEqual( f'Account: {self.mock_account.number} - {self.mock_account.name}', account_task())
def test_get_aurn_sites_not_all_geo(self, get_query_patch): site_items = 'all' get_query_patch.return_value = MockQuery(all_=site_items) output = Query.get_aurn_sites({}, {}, [0, 0]) self.assertEqual(site_items, output)
def test_get_account_info_account_not_found(self): self.view.request.dbsession.return_value = MockQuery( first_=None, raise_exc=exc.SQLAlchemyError) self.assertEqual({}, self.view.get_account_info())