def test_request_filter_by_site_multiple_sites(self): site_in_both_packages = SeoSiteFactory(domain='secondsite.jobs', id=7) single_site_package = SitePackageFactory(owner=self.company) single_site_package.make_unique_for_site(site_in_both_packages) both_sites_package = SitePackageFactory(owner=self.company) both_sites_package.sites.add(site_in_both_packages) both_sites_package.sites.add(self.site) both_sites_package.save() single_site_product = ProductFactory(package=single_site_package, owner=self.company) single_site_purchasedproduct = PurchasedProductFactory( product=single_site_product, owner=self.company) # Unapproved PurchasedJobs generate Requests. PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=single_site_purchasedproduct) both_sites_product = ProductFactory(package=both_sites_package, owner=self.company) both_sites_purchasedproduct = PurchasedProductFactory( product=both_sites_product, owner=self.company) PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=both_sites_purchasedproduct) self.assertEqual(Request.objects.all().count(), 2) # Confirm that filtering by both sites gets both products. both_sites = [site_in_both_packages, self.site] count = Request.objects.filter_by_sites(both_sites).count() self.assertEqual(count, 2) # Confirm that filtering by the site that only has one product only # gets one product. count = Request.objects.filter_by_sites([self.site]).count() self.assertEqual(count, 1) # Confirm that filtering by the site the site that has both products # gets both jobs. count = (Request.objects.filter_by_sites([site_in_both_packages ]).count()) self.assertEqual(count, 2)
def test_purchasedjob_filter_by_sites(self): for x in range(8800, 8815): domain = 'testsite-%s.jobs' % x site = SeoSiteFactory(id=x, domain=domain, name=domain) site_package = SitePackageFactory(owner=self.company) site_package.make_unique_for_site(site) product = ProductFactory(package=site_package, owner=self.company) purchased_product = PurchasedProductFactory(product=product, owner=self.company) for y in range(1, 5): job = PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=purchased_product) job.site_packages.add(site_package) job.save() count = PurchasedJob.objects.filter_by_sites([site]).count() self.assertEqual(count, 4) self.assertEqual(PurchasedJob.objects.all().count(), 60)
def test_unexpire_expired_purchased_job(self): product = PurchasedProductFactory( product=self.product, owner=self.company) job = PurchasedJobFactory( owner=self.company, created_by=self.user, purchased_product=product) kwargs = {'pk': job.pk} self.assertFalse(job.is_expired) job.is_expired = True job.date_expired = date.today() job.max_expired_date = date.today() - timedelta(1) job.save() data = dict(self.purchasedjob_form_data) data['is_expired'] = False response = self.client.post(reverse('purchasedjob_update', kwargs=kwargs), data=self.purchasedjob_form_data, follow=True) self.assertEqual(response.status_code, 200) # Confirm that the job remains expired despite the attempt to # change it. job = Job.objects.get() self.assertTrue(job.is_expired)
def create_purchased_job(self, pk=None): if not hasattr(self, 'package'): self.package = SitePackageFactory(owner=self.company) if not hasattr(self, 'product'): self.product = ProductFactory(package=self.package, owner=self.company) if not hasattr(self, 'purchased_product'): self.purchased_product = PurchasedProductFactory( product=self.product, owner=self.company) exp_date = date.today() + timedelta(self.product.posting_window_length) self.assertEqual(self.purchased_product.expiration_date, exp_date) return PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=self.purchased_product, pk=pk)
def test_request_filter_by_sites(self): for x in range(8800, 8815): domain = 'testsite-%s.jobs' % x site = SeoSiteFactory(id=x, domain=domain, name=domain) site_package = SitePackageFactory(owner=self.company) site_package.make_unique_for_site(site) product = ProductFactory(package=site_package, owner=self.company) purchased_product = PurchasedProductFactory(product=product, owner=self.company) for y in range(1, 5): # Unapproved purchased jobs should create Requests. PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=purchased_product) self.assertEqual( Request.objects.filter_by_sites([site]).count(), 4) self.assertEqual(Request.objects.all().count(), 60)
def test_purchasedjobs_active_expired(self): purchased_product = PurchasedProductFactory(product=self.product, owner=self.company) PurchasedJobFactory.create_batch( 3, purchased_product=purchased_product, owner=self.company, created_by=self.user ) expired_job = PurchasedJobFactory(purchased_product=purchased_product, owner=self.company, created_by=self.user) expired_job.is_expired = True expired_job.save() response = self.client.post(reverse("purchasedjobs", kwargs={"purchased_product": purchased_product.id})) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context["active_jobs"]), 3) self.assertEqual(len(response.context["expired_jobs"]), 1)
def test_request_generation(self): role = RoleFactory(company=self.company) self.user.roles.add(role) self.user.make_purchased_microsite_admin() self.create_purchased_job() self.assertEqual(PurchasedJob.objects.all().count(), 1) self.assertEqual(Request.objects.all().count(), 1) self.assertEqual(len(mail.outbox), 1) self.assertItemsEqual(mail.outbox[0].from_email, '*****@*****.**') mail.outbox = [] # Already approved jobs should not generate an additional request. PurchasedJobFactory(owner=self.company, created_by=self.user, purchased_product=self.purchased_product, is_approved=True) self.assertEqual(PurchasedJob.objects.all().count(), 2) self.assertEqual(Request.objects.all().count(), 1) self.assertEqual(len(mail.outbox), 0)
def test_request_on_purchasedjob_update(self): # Creating a PurchasedJob for a Product that requires approval # creates a Request job = PurchasedJobFactory(owner=self.company, created_by=self.user) self.assertEqual(Request.objects.count(), 1) # Re-saving that job should not create a new request. job.save() self.assertEqual(Request.objects.count(), 1) # Approving the job should also not create a new request. job.is_approved = True job.save() self.assertEqual(Request.objects.count(), 1) # Marking the job as not approved and saving it should not create # a new request if no action was taken on the old request. job.is_approved = False job.save() self.assertEqual(Request.objects.count(), 1) # Marking the job as not approved and saving it should create # a new request if there is no pending request. request = Request.objects.get() request.action_taken = True request.save() job.save() self.assertEqual(Request.objects.count(), 2)