def setUp(self):
        self.fake = Faker()  # Generate fake data using a faker generator

        self.factory = RequestFactory()
        self.project_category = ProjectCategory.objects.create(pk=1)

        self.first_user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())

        self.profile = Profile.objects.get(user=self.first_user)

        self.project = Project.objects.create(pk=1,
                                              user=self.profile,
                                              category=self.project_category)

        self.task = Task.objects.create(project=self.project)

        self.task_offer = TaskOffer(task=self.task, offerer=self.profile)
        self.task_offer.save()
    def setUp(self):
        self.fake = Faker()  # Generate fake data using a faker generator

        self.factory = RequestFactory()
        self.project_category = ProjectCategory.objects.create(pk=1)

        # Firs user is project owner and second user creates offer
        self.first_user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())

        self.first_profile = Profile.objects.get(user=self.first_user)
        self.second_profile = Profile.objects.get(user=self.second_user)

        self.project = Project.objects.create(pk=1,
                                              user=self.first_profile,
                                              category=self.project_category)

        self.first_task = Task.objects.create(project=self.project)

        self.first_task_offer = TaskOffer(task=self.first_task,
                                          offerer=self.second_profile,
                                          status='a')

        self.first_task_offer.save()

        self.delivery = Delivery.objects.create(
            task=self.first_task, delivery_user=self.second_profile)
class TestProjectView(TestCase):
    def setUp(self):
        self.fake = Faker()  # Generate fake data using a faker generator

        self.factory = RequestFactory()
        self.project_category = ProjectCategory.objects.create(pk=1)

        self.first_user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())

        self.profile = Profile.objects.get(user=self.first_user)

        self.project = Project.objects.create(pk=1,
                                              user=self.profile,
                                              category=self.project_category)

        self.task = Task.objects.create(project=self.project)

        self.task_offer = TaskOffer(task=self.task, offerer=self.profile)
        self.task_offer.save()

    def test_offer_response(self):
        request = self.factory.post(
            PROJECTS_ALL, {
                'offer_response': '',
                'taskofferid': 1,
                'status': 'a',
                'feedback': self.fake.sentence(nb_words=10)
            })
        request.user = self.first_user
        response = project_view.project_view(request, 1)
        self.assertEqual(response.status_code, 200)

    def test_status_change(self):
        request = self.factory.post(PROJECTS_ALL, {
            'status_change': '',
            'status': self.project.status
        })
        request.user = self.first_user
        response = project_view.project_view(request, 1)
        self.assertEqual(response.status_code, 200)

    def test_offer_submit(self):
        request = self.factory.post(
            PROJECTS_ALL, {
                'offer_submit': '',
                'title': self.fake.sentence(nb_words=3),
                'description': self.fake.sentence(nb_words=5),
                'price': self.fake.random_int(min=10, max=100000, step=10),
                'taskvalue': 1
            })
        request.user = self.second_user
        response = project_view.project_view(request, 1)
        self.assertEqual(response.status_code, 200)
class TestUploadFile(TestCase):
    def setUp(self):
        self.fake = Faker()  # Generate fake data using a faker generator

        self.factory = RequestFactory()
        self.project_category = ProjectCategory.objects.create(pk=1)

        # Firs user is project owner and second user creates offer
        self.first_user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())

        self.first_profile = Profile.objects.get(user=self.first_user)
        self.second_profile = Profile.objects.get(user=self.second_user)

        self.project = Project.objects.create(pk=1,
                                              user=self.first_profile,
                                              category=self.project_category)

        self.first_task = Task.objects.create(project=self.project)

        self.first_task_offer = TaskOffer(task=self.first_task,
                                          offerer=self.second_profile,
                                          status='a')

        self.first_task_offer.save()

        self.delivery = Delivery.objects.create(
            task=self.first_task, delivery_user=self.second_profile)

    def test_upload_file(self):
        f = open("projects/tests/demofile.txt", "r")
        request = self.factory.post(
            '/projects/' + str(self.project.id) + '/tasks/' +
            str(self.first_task.id) + '/upload/', {'file': f})
        request.user = self.first_user
        upload_file_to_task(request, self.project.id, self.first_task.id)
        db_file = None
        try:
            db_delivery = TaskFile.objects.get(task=self.first_task)
            db_file = db_delivery.file
        except:
            pass
        self.assertEquals(
            db_file, "static/uploads/tasks/" + str(self.first_task.id) +
            "/demofile.txt")
Beispiel #5
0
    def setUp(self):
        self.fake = Faker() # Generate fake data using a faker generator

        self.factory = RequestFactory()
        
        self.project_category = ProjectCategory.objects.create(pk=1)

        self.user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())
        
        self.profile = Profile.objects.get(user=self.user)
        self.second_profile = Profile.objects.get(user=self.second_user)
        

        self.project = Project.objects.create(
            pk=1,
            user=self.profile,
            category=self.project_category)
        self.task = Task.objects.create(
            id=1,
            project=self.project
        )

        self.task_offer = TaskOffer(
            task=self.task,
            offerer=self.profile,
            status = 'a')
        self.task_offer.save()

        self.request_str = ('/projects/' + str(self.project.pk) 
            + "/tasks/" + str(self.task.id) + "/")
Beispiel #6
0
class TestAcceptingOffers(TestCase):
    def setUp(self):
        self.fake = Faker()  # Generate fake data using a faker generator

        self.factory = RequestFactory()
        self.project_category = ProjectCategory.objects.create(pk=1)

        # First user is project owner and second user creates offer
        self.first_user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())

        self.first_profile = Profile.objects.get(user=self.first_user)
        self.second_profile = Profile.objects.get(user=self.second_user)

        self.project = Project.objects.create(pk=1,
                                              user=self.first_profile,
                                              category=self.project_category)

        self.first_task = Task.objects.create(project=self.project)

        self.first_task_offer = TaskOffer(task=self.first_task,
                                          offerer=self.second_profile,
                                          status='o')

        self.first_task_offer.save()

    def test_accepted_output(self):
        status = "a"
        feedback = self.fake.sentence(nb_words=6)
        post_response(self, status, feedback)
        offer = TaskOffer.objects.get(task_id=self.first_task.pk)

        self.assertEqual(offer.status, status)
        self.assertEqual(offer.feedback, feedback)

    @skip("Should not be possible to submit a pending response")
    def test_pending_output(self):
        status = "p"
        feedback = self.fake.sentence(nb_words=6)
        post_response(self, status, feedback)
        offer = TaskOffer.objects.get(task_id=self.first_task.pk)

        self.assertNotEqual(offer.status, status)
        self.assertNotEqual(offer.feedback, feedback)

    def test_declined_output(self):
        status = "d"
        feedback = self.fake.sentence(nb_words=6)
        post_response(self, status, feedback)
        offer = TaskOffer.objects.get(task_id=self.first_task.pk)

        self.assertEqual(offer.status, status)
        self.assertEqual(offer.feedback, feedback)

    def test_not_existing_offer_output(self):
        status = "a"
        feedback = self.fake.sentence(nb_words=6)

        request = self.factory.post(
            '/projects/' + str(self.first_task.pk) + "/", {
                'status': status,
                'feedback': feedback,
                'taskofferid': self.fake.random_int(min=100),
                'offer_response': ''
            })
        request.user = self.first_user
        success = True
        try:
            project_view.project_view(request, self.project.pk)
        except Http404:
            success = False
        self.assertFalse(success)
Beispiel #7
0
class TestTaskView(TestCase):
    def setUp(self):
        self.fake = Faker() # Generate fake data using a faker generator

        self.factory = RequestFactory()
        
        self.project_category = ProjectCategory.objects.create(pk=1)

        self.user = User.objects.create_user(
            pk=1,
            username=self.fake.user_name(),
            password=self.fake.password())
        self.second_user = User.objects.create_user(
            pk=2,
            username=self.fake.user_name(),
            password=self.fake.password())
        
        self.profile = Profile.objects.get(user=self.user)
        self.second_profile = Profile.objects.get(user=self.second_user)
        

        self.project = Project.objects.create(
            pk=1,
            user=self.profile,
            category=self.project_category)
        self.task = Task.objects.create(
            id=1,
            project=self.project
        )

        self.task_offer = TaskOffer(
            task=self.task,
            offerer=self.profile,
            status = 'a')
        self.task_offer.save()

        self.request_str = ('/projects/' + str(self.project.pk) 
            + "/tasks/" + str(self.task.id) + "/")
    
    # Task view general
    def test_task_view(self):
        request = self.factory.post(self.request_str)
        request.user = self.user
        response = task_view.task_view(request, self.project.pk, self.task.id)
        self.assertEqual(response.status_code, 200)

    # Task view 'delivery'
    def test_task_view_delivery(self):
        test_file = SimpleUploadedFile(
            self.fake.file_name(extension="md"), 
            self.fake.binary(length=64), 'text/markdown')
        request = self.factory.post(self.request_str, {
                "comment": self.fake.sentence(),
                "file": test_file,
                "delivery": ""
            })
        
        request.user = self.user
        response = task_view.task_view(request, self.project.pk, self.task.id)
        self.assertEqual(response.status_code, 200)
    
    # Task view 'team'
    def test_task_view_team(self):
        request = self.factory.post(self.request_str, {
                "team": ""
            })
        request.user = self.user
        response = task_view.task_view(request, self.project.pk, self.task.id)
        self.assertEqual(response.status_code, 200)
    
    # Task view 'team-add'
    def test_task_view_team_add(self):
        # Create team
        self.team = Team.objects.create(
            id=1,
            name=self.fake.name(),
            task=self.task
        )

        request = self.factory.post(self.request_str, {
                "team-id": 1,
                "team-add": ""
            })
        request.user = self.user
        response = task_view.task_view(request, self.project.pk, self.task.id)
        self.assertEqual(response.status_code, 200)
    
    # Task view 'permissions'
    def test_task_view_permissions(self):
        # Add team to task
        self.team = Team.objects.create(
            id=1,
            name=self.fake.name(),
            task=self.task
        )
        # Add file to task
        test_file = SimpleUploadedFile(
            self.fake.file_name(extension="md"), 
            self.fake.binary(length=64), 'text/markdown')
        task_file = TaskFile.objects.create(task=self.task, file=test_file)
        self.task.files.add(task_file)

        # Create task file team
        TaskFileTeam.objects.create(
            file = task_file,
            team = self.team,
            name = self.fake.name()
        )
        task_file_team_string = 'permission-perobj-' + str(task_file.id) + '-' + str(self.team.id)
        request = self.factory.post(self.request_str, {
                task_file_team_string: 1,
                "permissions": ""
            })
        request.user = self.user
        response = task_view.task_view(request, self.project.pk, self.task.id)
        self.assertEqual(response.status_code, 200)