def test_partial_translation_uses_default_trans_for_empty_fields(self): self.test_project, self.test_user = create_canned_project() # Arrange self.update_project_with_info() locales = [] test_info = ProjectInfoDTO() test_info.locale = "it" locales.append(test_info) test_dto = ProjectDTO() test_dto.project_status = ProjectStatus.PUBLISHED.name test_dto.project_priority = ProjectPriority.MEDIUM.name test_dto.default_locale = "en" test_dto.project_info_locales = locales test_dto.mapper_level = "BEGINNER" test_dto.mapping_types = ["ROADS"] test_dto.mapping_editors = ["JOSM", "ID"] test_dto.validation_editors = ["JOSM"] # Act - Create empty italian translation self.test_project.update(test_dto) dto = self.test_project.as_dto_for_mapping(locale="it") # Assert self.assertEqual( dto.project_info["name"], "Thinkwhere Test", "English translation should be returned as Italian name was not provided", )
def setUp(self): if self.skip_tests: return self.app = create_app() self.ctx = self.app.app_context() self.ctx.push() self.test_project, self.test_user = create_canned_project()
def setUp(self): """ Setup test context so we can connect to database """ self.app = create_app() self.ctx = self.app.app_context() self.ctx.push() if self.skip_tests: return self.test_project, self.test_user = create_canned_project()
def test_task_can_generate_valid_feature_collection(self): self.test_project, self.test_user = create_canned_project() # Act feature_collection = Task.get_tasks_as_geojson_feature_collection( self.test_project.id, "1") self.assertIsInstance(feature_collection, geojson.FeatureCollection) self.assertEqual(1, len(feature_collection.features)) feature_collection = Task.get_tasks_as_geojson_feature_collection( self.test_project.id, None) self.assertIsInstance(feature_collection, geojson.FeatureCollection) self.assertEqual(2, len(feature_collection.features))
def test_upsert_inserts_project_if_not_exists(self): self.test_project, self.test_user = create_canned_project() # Arrange UserService.upsert_mapped_projects(self.test_user.id, self.test_project.id) # Act projects = UserService.get_mapped_projects(self.test_user.username, "en") # Assert mapped_project = projects.mapped_projects[0] self.assertEqual( mapped_project.project_id, self.test_project.id ) # We should find we've mapped the test project
def test_update_project_adds_project_info(self): self.test_project, self.test_user = create_canned_project() # Act self.update_project_with_info() # Assert self.assertEqual(self.test_project.status, ProjectStatus.PUBLISHED.value) self.assertEqual(self.test_project.priority, ProjectPriority.MEDIUM.value) self.assertEqual(self.test_project.default_locale, "en") self.assertEqual(self.test_project.project_info[0].name, "Thinkwhere Test")
def test_project_can_be_generated_as_dto(self): self.test_project, self.test_user = create_canned_project() # Arrange self.update_project_with_info() # Act project_dto = self.test_project.as_dto_for_mapping() # Assert self.assertIsInstance(project_dto.area_of_interest, geojson.MultiPolygon) self.assertIsInstance(project_dto.tasks, geojson.FeatureCollection) # TODO test for project info # self.assertEqual(project_dto.project_name, 'Test') self.assertEqual(project_dto.project_id, self.test_project.id)
def test_project_can_be_cloned(self): self.test_project, self.test_user = create_canned_project() # Arrange self.update_project_with_info() # Act original_id = copy.copy(self.test_project.id) cloned_project = Project.clone(original_id, self.test_user.id) self.assertTrue(cloned_project) self.assertEqual(cloned_project.project_info[0].name, "Thinkwhere Test") # Tidy Up cloned_project.delete() original_project = Project.get( original_id ) # SQLAlchemy is hanging on to a ref to the old project original_project.delete()
def test_featured_projects_service(self): self.test_project, self.test_user = create_canned_project() # Featured a not created project. with self.assertRaises(NotFound): ProjectService.set_project_as_featured(project_id=100) # Feature an already created project. ProjectService.set_project_as_featured(project_id=self.test_project.id) # List all featured projects. featured_projects = ProjectService.get_featured_projects(None) self.assertEqual(len(featured_projects.results), 1) # Unfeature project. ProjectService.unset_project_as_featured( project_id=self.test_project.id) # List all featured projects. featured_projects = ProjectService.get_featured_projects(None) self.assertEqual(len(featured_projects.results), 0)
def update_project_with_info(self): self.test_project, self.test_user = create_canned_project() locales = [] test_info = ProjectInfoDTO() test_info.locale = "en" test_info.name = "Thinkwhere Test" test_info.description = "Test Description" test_info.short_description = "Short description" test_info.instructions = "Instructions" locales.append(test_info) test_dto = ProjectDTO() test_dto.project_status = ProjectStatus.PUBLISHED.name test_dto.project_priority = ProjectPriority.MEDIUM.name test_dto.default_locale = "en" test_dto.project_info_locales = locales test_dto.mapper_level = "BEGINNER" test_dto.mapping_types = ["ROADS"] test_dto.mapping_editors = ["JOSM", "ID"] test_dto.validation_editors = ["JOSM"] self.test_project.update(test_dto)
def test_project_favorite(self): self.test_project, self.test_user = create_canned_project() # Validate that project has not been favorited by user. fav = ProjectService.is_favorited(self.test_project.id, self.test_user.id) self.assertFalse(fav) # Get project favorites from user. favorites = UserService.get_projects_favorited(self.test_user.id) json_data = favorites.to_primitive() self.assertEqual(len(json_data["favoritedProjects"]), 0) # Now favorite a new project. ProjectService.favorite(self.test_project.id, self.test_user.id) fav = ProjectService.is_favorited(self.test_project.id, self.test_user.id) self.assertTrue(fav) # Get project favorites from user. favorites = UserService.get_projects_favorited(self.test_user.id) json_data = favorites.to_primitive() self.assertEqual(len(json_data["favoritedProjects"]), 1) # Now unfavorite it. ProjectService.unfavorite(self.test_project.id, self.test_user.id) fav = ProjectService.is_favorited(self.test_project.id, self.test_user.id) self.assertFalse(fav) # Unfavorite a project not been favorited previously. with self.assertRaises(ValueError): ProjectService.unfavorite(self.test_project.id, self.test_user.id) # Verify that NotFound exists. with self.assertRaises(NotFound): ProjectService.is_favorited(100, self.test_user.id) ProjectService.favorite(100, self.test_user.id) ProjectService.unfavorite(100, self.test_user.id)
def setUp(self): super().setUp() self.test_project, self.test_user = create_canned_project()
def test_project_can_be_persisted_to_db(self): self.test_project, self.test_user = create_canned_project() # Checks that code we ran in setUp actually created a project in the DB self.assertIsNotNone( self.test_project.id, "ID should be set if project successfully persisted")