コード例 #1
0
    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",
        )
コード例 #2
0
    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()
コード例 #3
0
    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()
コード例 #4
0
    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))
コード例 #5
0
    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
コード例 #6
0
    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")
コード例 #7
0
    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)
コード例 #8
0
    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()
コード例 #9
0
    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)
コード例 #10
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)
コード例 #11
0
    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)
コード例 #12
0
 def setUp(self):
     super().setUp()
     self.test_project, self.test_user = create_canned_project()
コード例 #13
0
 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")