def test_api_create_generic_project(self):
        # PREPARE DATA
        url = reverse('api:project:create-service')
        customer = FakeCustomerFactory.create()
        duration = random.randint(1, 100)
        data = {
            'type_project': settings.PROJECT_CH_TYPE_GENERIC_PROJECT,
            'name': faker.name(),
            'duration': duration,
            'lapse': settings.PROJECT_LAPSE_PERIOD,
            'customer': customer.id,
        }
        self.client.login(username=self.super_user.username, password='******')

        # DO ACTION
        response = self.client.post(url, data=data)

        # ASSERTS
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        generic_project = GenericProject.objects.get(id=response.data.get('id'))
        self.assertEqual(generic_project.name, data.get('name'))
        self.assertEqual(generic_project.duration, duration)
        self.assertEqual(generic_project.lapse, settings.PROJECT_LAPSE_PERIOD)
        self.assertEqual(generic_project.customer.pk, customer.pk)
        self.assertEqual(generic_project.settings.version, settings.PROJECT_CH_VERSION_2)
Exemplo n.º 2
0
    def test_filter_by_user_or_organization(self):
        # PREPARE DATA
        name = settings.BRAND_NAME
        users = FakeUserFactory.create_batch(size=2, is_active=True)
        customer = FakeCustomerFactory.create()
        organization = InternalOrganization.objects.get(name=name)
        for user in users:
            user.user_permissions.add(
                Permission.objects.get(
                    codename=settings.PROJECT_PERMS_ADD_PROJECT))
            user.user_permissions.add(
                Permission.objects.get(
                    codename=settings.SPRINT_AUTOMATED_ADD_SPRINT))
            organization.users_roles.get_or_create(user=user)

        FakeSprintAutomatedFactory.create_batch(
            size=3, created_by=users[0], internal_organization=organization)

        customer.create_sprint_automated(
            user_from=users[1],
            name=faker.name(),
            description=faker.text(),
            duration=settings.SPRINT_AUTOMATED_STEPS_COUNT,
        )
        # DO ACTION and ASSERTS
        for user in users:
            projects = Project.objects.filter_by_user_or_organization(
                user).count()
            self.assertEqual(projects, 4)

        self.assertEqual(
            Project.objects.filter_by_user_or_organization(
                FakeUserFactory.create(is_active=True)).count(), 0)
Exemplo n.º 3
0
    def test_send_notification_email_for_new_typeform_response_data_is_correct(
            self, send_mail_task):
        # PREPARE DATA
        customer = FakeCustomerFactory()
        self.create_user()

        generic_typeform = GenericTypeformFeedback.create_typeform(
            linked_object=customer,
            slug=random_string(),
            typeform_id=random_string(5),
        )
        user_typeform = UserGenericTypeformFeedback(
            feedback=generic_typeform,
            user=self.user,
        )
        user_typeform.save()

        # DO ACTION
        new_user_typeform_response.send(
            sender=UserGenericTypeformFeedback,
            uuid=user_typeform.uuid.__str__(),
            response={},
        )

        # ASSERTIONS
        self.assertTrue(send_mail_task.called)
        self.assertEqual(
            send_mail_task.call_args.kwargs.get('recipients'),
            settings.TYPEFORMFEEDBACK_NOTIFY_EMAILS_LIST,
        )
        self.assertEqual(
            send_mail_task.call_args.kwargs.get('public_url'), '{}{}'.format(
                settings.ROOT,
                reverse('typeform:typeform_feedback:validate',
                        kwargs={'uuid': user_typeform.uuid.__str__()})))
Exemplo n.º 4
0
    def test_send_notification_email_for_new_typeform_response(
            self, typeform_task):
        # PREPARE DATA
        customer = FakeCustomerFactory()
        self.create_user()

        generic_typeform = GenericTypeformFeedback.create_typeform(
            linked_object=customer,
            slug=random_string(),
            typeform_id=random_string(5),
        )
        user_typeform = UserGenericTypeformFeedback(
            feedback=generic_typeform,
            user=self.user,
        )
        user_typeform.save()

        # DO ACTION
        new_user_typeform_response.send(
            sender=UserGenericTypeformFeedback,
            uuid=user_typeform.uuid.__str__(),
            response={},
        )

        # ASSERTIONS
        self.assertTrue(typeform_task.called)
Exemplo n.º 5
0
    def create_customer(self, name, industry, website, place, timezone):
        customer = FakeCustomerFactory(
            name=name,
            industry=Industry.objects.get(name=industry),
            website=website,
            location=place.get('name'),
            place_id=place.get('place_id'),
            timezone=timezone)

        return customer
 def _create_api_service(
         self, type_project=settings.PROJECT_CH_TYPE_SPRINT_AUTOMATED,
         duration=13, lapse=settings.PROJECT_LAPSE_PERIOD):
     customer = FakeCustomerFactory()
     data = {
         'name': faker.name(),
         'customer': customer.id,
         'type_project': type_project,
         'duration': duration,
         'lapse': lapse,
         'partner': '',
     }
     response = self._send_api_post(data)
     return response, data
Exemplo n.º 7
0
    def setUp(self):
        super().setUp()
        self.customer = FakeCustomerFactory.create()
        self.user1 = FakeUserFactory.create(is_active=True)
        self.user2 = FakeUserFactory.create(is_active=True)
        self.user3 = FakeUserFactory.create(is_active=True)

        self.role1 = FakeCustomerUserRoleFactory.create(
            customer=self.customer,
            user=self.user1,
        )
        self.role2 = FakeCustomerUserRoleFactory.create(
            customer=self.customer,
            user=self.user2,
        )
Exemplo n.º 8
0
    def test_create_sprint(self):
        # Prepare data
        name = faker.first_name()
        start = timezone.now()
        customer = FakeCustomerFactory.create()

        # Do action
        sprint = Project.objects.create_sprint_automated(self.super_user,
                                                         name,
                                                         start,
                                                         customer,
                                                         duration=1)

        # Asserts
        self.assertIsNotNone(sprint)
    def test_type_project(self):
        # PREPARE DATA
        customer = FakeCustomerFactory()
        self.client.login(username=self.super_user.username, password='******')
        url = reverse('api:project:create-service')
        data = {
            'name': faker.name(),
            'customer': customer.id,
            'type_project': faker.name(),
        }

        # DO ACTION
        response = self.client.post(url, data=data, format='json')

        # ASSERTS
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertTrue('type_project' in response.data.keys())
    def test_api_create_sprint_automated(self):
        # PREPARE DATA
        url = reverse('api:project:create-service')
        customer = FakeCustomerFactory.create()
        data = {
            'type_project': settings.PROJECT_CH_TYPE_SPRINT_AUTOMATED,
            'name': faker.name(),
            'description': faker.text(),
            'customer': customer.id,
        }
        self.client.login(username=self.super_user.username, password='******')

        # DO ACTION
        response = self.client.post(url, data=data)

        # ASSERTS
        sprint = SprintAutomated.objects.get(id=response.data.get('id'))
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(sprint.name, data.get('name'))
        self.assertEqual(sprint.description, data.get('description'))
        self.assertEqual(sprint.customer, customer)
Exemplo n.º 11
0
    def test_jobs_for_projects_with_training_customer(self):
        # PREPARE DATA
        customer = FakeCustomerFactory.create(
            customer_type=settings.CUSTOMER_CH_TRAINING)
        project = FakeProjectFactory.create(
            customer=customer,
            status=settings.PROJECT_CH_PROJECT_STATUS_STARTED)

        for code in ExORole.objects.all().filter_by_category_code(
                settings.EXO_ROLE_CATEGORY_EXO_SPRINT).values_list('code',
                                                                   flat=True):
            exo_role = ExORole.objects.get(code=code)

            # DO ACTION
            c_project_role = FakeConsultantProjectRoleFactory.create(
                consultant=self.consultant,
                project=project,
                exo_role=exo_role,
                visible=True,
                status=settings.RELATION_ROLE_CH_ACTIVE)

            # ASSERTS
            self.assertTrue(CoreJob.objects.all().filter_by_instance(
                c_project_role).exists())