def test_interests(self):
        if self.skip_tests:
            return

        interests = ["interest_number_{0}".format(i) for i in range(1, 9)]
        [InterestService.create(interest_name=i) for i in interests]
        interests = InterestService.get_all_interests().to_primitive(
        )["interests"]
        self.assertEqual(len(interests), 8)

        # Create new interest.
        new_interest = InterestService.create(
            interest_name="test_new_interest")
        interests = InterestService.get_all_interests().to_primitive(
        )["interests"]
        self.assertEqual(len(interests), 9)

        # Update interest
        new_interest.name = "new_interest_name"
        updated_interest = InterestService.update(new_interest.id,
                                                  new_interest)
        self.assertEqual(new_interest.name, updated_interest.name)

        # Associate users with interest.
        iids, uids = TestInterestService.relationship_user(
            interests, self.test_user.id, [1, 4, 5])
        self.assertEqual(uids, iids)

        # Try again.
        iids, uids = TestInterestService.relationship_user(
            interests, self.test_user.id, [1, 2])
        self.assertEqual(uids, iids)

        # Validate unexistent interest.
        with self.assertRaises(NotFound):
            InterestService.create_or_update_user_interests(
                self.test_user.id, [0])

        # Associate projects with interest.
        iids, pids = TestInterestService.relationship_project(
            interests, self.test_project.id, [1, 2])
        self.assertEqual(pids, iids)

        # Validate unexistent interest.
        with self.assertRaises(NotFound):
            InterestService.create_or_update_project_interests(
                self.test_project.id, [0])

        # Delete one by one.
        for interest in interests:
            InterestService.delete(interest["id"])

        interests = InterestService.get_all_interests().to_primitive(
        )["interests"]
        self.assertEqual(len(interests), 0)
Exemple #2
0
    def delete(self, interest_id):
        """
        Delete a specified interest
        ---
        tags:
            - interests
        produces:
            - application/json
        parameters:
            - in: header
              name: Authorization
              description: Base64 encoded session token
              required: true
              type: string
              default: Token sessionTokenHere==
            - name: interest_id
              in: path
              description: Unique interest ID
              required: true
              type: integer
              default: 1
        responses:
            200:
                description: Interest deleted
            401:
                description: Unauthorized - Invalid credentials
            403:
                description: Forbidden
            404:
                description: Interest not found
            500:
                description: Internal Server Error
        """
        try:
            orgs_dto = OrganisationService.get_organisations_managed_by_user_as_dto(
                tm.authenticated_user_id
            )
            if len(orgs_dto.organisations) < 1:
                raise ValueError("User not a Org Manager")
        except ValueError as e:
            error_msg = f"InterestsAllAPI DELETE: {str(e)}"
            return {"Error": error_msg}, 403

        try:
            InterestService.delete(interest_id)
            return {"Success": "Interest deleted"}, 200
        except NotFound:
            return {"Error": "Interest Not Found"}, 404
        except Exception as e:
            error_msg = f"License DELETE - unhandled error: {str(e)}"
            current_app.logger.critical(error_msg)
            return {"Error": error_msg}, 500