def setUp(self): self.clean_database() self.property_service = RunPropertyService()
class TestGetRunPropertiesController(TestController): def setUp(self): self.clean_database() self.property_service = RunPropertyService() def test_GIVEN_database_is_empty_WHEN_request_run_properties_THEN_return_empty_list(self): result = self.property_service.list() assert_that(result, is_([])) def test_GIVEN_database_has_one_row_WHEN_request_run_properties_THEN_return_list_with_item_in(self): username = "******" last_status_change = datetime(2015, 5, 3, 2, 1, tzinfo=pytz.utc) status = MODEL_RUN_STATUS_COMPLETED model_id = self.add_model_run(username, last_status_change, status) result = self.property_service.list() assert_that(result, has_length(1), "model run count") result_dict = result[0].__json__() self.assert_model_run_json_is(result_dict, model_id, last_status_change, username, False, False) def test_GIVEN_database_has_two_rows_one_published_WHEN_request_run_properties_THEN_return_list_with_both_items_in_ordered_by_change_date(self): usernames = ["username", "username2"] last_status_changes = [datetime(2015, 5, 3, 2, 1), datetime(2014, 6, 4, 3, 2)] statuses = [MODEL_RUN_STATUS_COMPLETED, MODEL_RUN_STATUS_PUBLISHED] expected_is_published = [False, True] expected_is_public = [False, False] model_ids = [] for username, last_status_change, status in zip(usernames, last_status_changes, statuses): model_id = self.add_model_run(username, last_status_change, status) model_ids.append(model_id) result = self.property_service.list() assert_that(result, has_length(2), "model run count") self.assert_model_run_json_is(result[0].__json__(), model_ids[1], last_status_changes[1], usernames[1], expected_is_published[1], expected_is_public[1]) self.assert_model_run_json_is(result[1].__json__(), model_ids[0], last_status_changes[0], usernames[0], expected_is_published[0], expected_is_public[0]) def test_GIVEN_database_has_multiple_rows_with_different_statuses_WHEN_request_run_properties_THEN_return_list_with_only_completed_and_published_and_public_rows(self): username = "******" last_status_change = datetime(2015, 5, 3, 2, 1) statuses = [ MODEL_RUN_STATUS_COMPLETED, MODEL_RUN_STATUS_PUBLISHED, MODEL_RUN_STATUS_PUBLIC, MODEL_RUN_STATUS_CREATED, MODEL_RUN_STATUS_FAILED, MODEL_RUN_STATUS_PENDING, MODEL_RUN_STATUS_RUNNING, MODEL_RUN_STATUS_SUBMIT_FAILED, MODEL_RUN_STATUS_SUBMITTED, MODEL_RUN_STATUS_UNKNOWN, None] expected_is_published = [False, True, True] expected_is_public = [False, False, True] model_ids = [] for status in statuses: model_id = self.add_model_run(username, last_status_change, status) model_ids.append(model_id) result = self.property_service.list() assert_that(result, has_length(3), "model run count") self.assert_model_run_json_is(result[0].__json__(), model_ids[0], last_status_change, username, expected_is_published[0], expected_is_public[0]) self.assert_model_run_json_is(result[1].__json__(), model_ids[1], last_status_change, username, expected_is_published[1], expected_is_public[1]) self.assert_model_run_json_is(result[2].__json__(), model_ids[2], last_status_change, username, expected_is_published[2], expected_is_public[2])