def _test_get(self, table): ''' Aux method for Comment and Data Requests ''' db_response = [MagicMock(), MagicMock(), MagicMock()] query_result = MagicMock() query_result.all.return_value = db_response final_query = MagicMock() final_query.filter_by.return_value = query_result query = MagicMock() query.autoflush = MagicMock(return_value=final_query) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method params = { 'title': 'Default Title', 'organization_id': 'example_uuid_v4' } result = getattr(db, table).get(**params) # Assertions self.assertEquals(db_response, result) final_query.filter_by.assert_called_once_with(**params)
def test_get_open_datarequests_number(self): n_datarequests = 7 count = 'example' db.func = MagicMock() db.func.count.return_value = count filter_by = MagicMock() filter_by.scalar.return_value = n_datarequests query = MagicMock() query.filter_by = MagicMock(return_value=filter_by) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method db.DataRequest.id = 'id' result = db.DataRequest.get_open_datarequests_number() # Assertions self.assertEquals(n_datarequests, result) query.filter_by.assert_called_once_with(closed=False) model.Session.query.assert_called_once_with(count) db.func.count.assert_called_once_with(db.DataRequest.id)
def test_get_datarequests_comments(self): n_comments = 7 count = 'example' db.func = MagicMock() db.func.count.return_value = count filter_by = MagicMock() filter_by.scalar.return_value = n_comments query = MagicMock() query.filter_by = MagicMock(return_value=filter_by) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method params = {'datarequest_id': 'example_uuid_v4'} db.Comment.id = 'id' result = db.Comment.get_datarequest_comments_number(**params) # Assertions self.assertEquals(n_comments, result) query.filter_by.assert_called_once_with(**params) model.Session.query.assert_called_once_with(count) db.func.count.assert_called_once_with(db.Comment.id)
def test_get_datarequest_followers_number(self): n_followers = 7 count = 'example' db.func = MagicMock() db.func.count.return_value = count filter_by = MagicMock() filter_by.scalar.return_value = n_followers query = MagicMock() query.filter_by = MagicMock(return_value=filter_by) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method params = { 'datarequest_id': 'example_uuid_v4' } db.DataRequestFollower.id = 'id' result = db.DataRequestFollower.get_datarequest_followers_number(**params) # Assertions self.assertEquals(n_followers, result) query.filter_by.assert_called_once_with(**params) model.Session.query.assert_called_once_with(count) db.func.count.assert_called_once_with(db.DataRequestFollower.id)
def test_get_datarequest_followers_number(self): n_followers = 7 count = "example" db.func = MagicMock() db.func.count.return_value = count filter_by = MagicMock() filter_by.scalar.return_value = n_followers query = MagicMock() query.filter_by = MagicMock(return_value=filter_by) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method params = {"datarequest_id": "example_uuid_v4"} db.DataRequestFollower.id = "id" result = db.DataRequestFollower.get_datarequest_followers_number( **params) # Assertions self.assertEquals(n_followers, result) query.filter_by.assert_called_once_with(**params) model.Session.query.assert_called_once_with(count) db.func.count.assert_called_once_with(db.DataRequestFollower.id)
def test_datarequest_exist(self, first_result, expected_result): title = 'DataRequest Title' # Prepare the mocks def _lower(text): # If expected_result == true it's because lower is supossed # to return the same result in the two calls if expected_result: return title.lower() else: return text db.func.lower.side_effect = _lower # Query query_result = MagicMock() query_result.first.return_value = first_result final_query = MagicMock() final_query.filter.return_value = query_result query = MagicMock() query.autoflush = MagicMock(return_value=final_query) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Call the method db.DataRequest.title = 'TITLE' result = db.DataRequest.datarequest_exists(title) # Assertion self.assertEquals(expected_result, result) db.func.lower.assert_any_call(db.DataRequest.title) db.func.lower.assert_any_call(title) # If expected_result == true is because lower is supossed # to return the same result in the two calls and the # equalization of these results must be True final_query.filter.assert_called_once_with(expected_result)
def _test_get_ordered_by_date(self, table, time_column): db_response = [MagicMock(), MagicMock(), MagicMock()] query_result = MagicMock() query_result.all.return_value = db_response no_ordered = MagicMock() no_ordered.order_by.return_value = query_result final_query = MagicMock() final_query.filter_by.return_value = no_ordered query = MagicMock() query.autoflush = MagicMock(return_value=final_query) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Mapping table = getattr(db, table) time_column_value = MagicMock() setattr(table, time_column, time_column_value) # Call the method params = { 'title': 'Default Title', 'organization_id': 'example_uuid_v4' } result = table.get_ordered_by_date(**params) # Assertions self.assertEquals(db_response, result) no_ordered.order_by.assert_called_once_with(time_column_value.desc()) final_query.filter_by.assert_called_once_with(**params)
def _test_get_ordered_by_date(self, table, time_column, params): db_response = [MagicMock(), MagicMock(), MagicMock()] query_result = MagicMock() query_result.all.return_value = db_response no_ordered = MagicMock() no_ordered.order_by.return_value = query_result final_query = MagicMock() final_query.filter.return_value = final_query final_query.filter_by.return_value = no_ordered query = MagicMock() query.autoflush = MagicMock(return_value=final_query) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Mapping table = getattr(db, table) time_column_value = MagicMock() title_column_value = MagicMock() description_column_value = MagicMock() setattr(table, time_column, time_column_value) setattr(table, 'title', title_column_value) setattr(table, 'description', description_column_value) # Call the method result = table.get_ordered_by_date(**params) # Calculate expected filter parameters expected_filter_by_params = params.copy() if 'q' in expected_filter_by_params: expected_filter_by_params.pop('q') if 'desc' in expected_filter_by_params: expected_filter_by_params.pop('desc') query = '%{0}%'.format(params['q']) if 'q' in params else None desc = True if 'desc' in params and params['desc'] is True else False # Assertions self.assertEquals(db_response, result) order = time_column_value.desc() if desc else time_column_value.asc() no_ordered.order_by.assert_called_once_with(order) final_query.filter_by.assert_called_once_with(**expected_filter_by_params) # This only happens with the table of data requests if query: title_column_value.ilike.assert_called_once_with(query) description_column_value.ilike.assert_called_once_with(query) db.or_.assert_called_once_with(title_column_value.ilike.return_value, description_column_value.ilike.return_value) final_query.filter.assert_called_once_with(db.or_.return_value)
def _test_get_ordered_by_date(self, table, time_column, params): db_response = [MagicMock(), MagicMock(), MagicMock()] query_result = MagicMock() query_result.all.return_value = db_response no_ordered = MagicMock() no_ordered.order_by.return_value = query_result final_query = MagicMock() final_query.filter.return_value = final_query final_query.filter_by.return_value = no_ordered query = MagicMock() query.autoflush = MagicMock(return_value=final_query) model = MagicMock() model.DomainObject = object model.Session.query = MagicMock(return_value=query) # Init the database db.init_db(model) # Mapping table = getattr(db, table) time_column_value = MagicMock() title_column_value = MagicMock() description_column_value = MagicMock() setattr(table, time_column, time_column_value) setattr(table, "title", title_column_value) setattr(table, "description", description_column_value) # Call the method result = table.get_ordered_by_date(**params) # Calculate expected filter parameters expected_filter_by_params = params.copy() if "q" in expected_filter_by_params: expected_filter_by_params.pop("q") if "desc" in expected_filter_by_params: expected_filter_by_params.pop("desc") query = f'%{params["q"]}%' if "q" in params else None desc = True if "desc" in params and params["desc"] is True else False # Assertions self.assertEquals(db_response, result) order = time_column_value.desc() if desc else time_column_value.asc() no_ordered.order_by.assert_called_once_with(order) final_query.filter_by.assert_called_once_with( **expected_filter_by_params) # This only happens with the table of data requests if query: title_column_value.ilike.assert_called_once_with(query) description_column_value.ilike.assert_called_once_with(query) db.or_.assert_called_once_with( title_column_value.ilike.return_value, description_column_value.ilike.return_value, ) final_query.filter.assert_called_once_with(db.or_.return_value)