def _create_object_stub(self, with_relations=False, size=1, **kwargs):
        """
        Create an object dict with relation dicts using factories.
        """
        # Set a default tenant of the user.
        kwargs['tenant'] = self.user_obj.tenant if not kwargs.get('tenant') else kwargs['tenant']

        object_list = []
        account = AccountFactory(**kwargs)
        assigned_to = LilyUserFactory(**kwargs)
        next_step = DealNextStepFactory(**kwargs)
        why_customer = DealWhyCustomerFactory(**kwargs)
        found_through = DealFoundThroughFactory(**kwargs)
        contacted_by = DealContactedByFactory(**kwargs)
        status = DealStatusFactory(**kwargs)
        why_lost = DealWhyLostFactory(**kwargs)

        for iteration in range(0, size):
            obj = self.factory_cls.stub(**kwargs).__dict__
            del obj['tenant']
            del obj['contact']

            # The minimum viable deal instance needs these relations, so always make them.
            obj['account'] = {
                'id': account.pk,
            }
            obj['assigned_to'] = {
                'id': assigned_to.pk,
            }
            obj['next_step'] = {
                'id': next_step.pk,
            }
            obj['why_customer'] = {
                'id': why_customer.pk,
            }
            obj['found_through'] = {
                'id': found_through.pk,
            }
            obj['contacted_by'] = {
                'id': contacted_by.pk,
            }
            obj['status'] = {
                'id': status.pk,
            }
            obj['why_lost'] = {
                'id': why_lost.pk,
            }

            if with_relations:
                # If relations are needed, override them, because a dict is needed instead of an instance.
                obj['tags'] = [TagFactory.stub().__dict__, ]
                obj['notes'] = [NoteFactory.stub().__dict__, ]

            object_list.append(obj)

        if size > 1:
            return object_list
        else:
            # If required size is 1, just give the object instead of a list.
            return object_list[0]
Exemple #2
0
 def notes(self, size, tenant):
     NoteFactory.create_batch(size, tenant=tenant)
     # create multiple notes for single subject and multi author
     NoteFactory.create_batch(size,
                              tenant=tenant,
                              subject=AccountFactory(tenant=tenant))
     # create multiple notes for single subject and single author
     NoteFactory.create_batch(size,
                              tenant=tenant,
                              author=LilyUserFactory(tenant=tenant),
                              subject=AccountFactory(tenant=tenant))
Exemple #3
0
 def _get_logged_in_user(self):
     tenant = TenantFactory()
     current_user = get_current_user()
     # Ugly!
     if current_user:
         current_user.tenant = tenant
     user = LilyUserFactory(tenant=tenant)
     user.set_password('test')
     user.save()
     self.client.login(username=user.primary_email.email_address,
                       password='******')
     return user
Exemple #4
0
 def contacts_and_accounts(self, size, tenant):
     # create various contacts
     ContactFactory.create_batch(size, tenant=tenant)
     # create accounts with zero contact
     AccountFactory.create_batch(size, tenant=tenant)
     # create account with multi contacts
     function_factory(tenant).create_batch(
         size, account=AccountFactory(tenant=tenant))
     # create account with assigned_to
     function_factory(tenant).create_batch(
         size,
         account=AccountFactory(tenant=tenant,
                                assigned_to=LilyUserFactory(tenant=tenant)))
Exemple #5
0
    def test_no_errors(self):
        """
        Test that the stats pages give no errors.
        """
        user_obj = LilyUserFactory(is_active=True)
        team = TeamFactory()
        self.client.login(email=user_obj.email, password='******')

        for pattern in case_patterns:
            # Loop over case patterns, these need the team_id kwarg.
            response = self.client.get(
                reverse(pattern.name, kwargs={
                    'team_id': team.id,
                }))

            self.assertEqual(response.status_code, 200)

        for pattern in deal_patterns:
            # Loop over deal patterns, these need no kwargs.
            response = self.client.get(reverse(pattern.name))
            self.assertEqual(response.status_code, 200)