def test_valid_act_payment_received(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Act Reviewers') act = ActFactory() tickets = setup_fees(act.b_conference, is_act=True) act_params = IPN_POST_PARAMS act_params["mc_currency"] = "USD" act_params["receiver_email"] = PayPalSettings.objects.first( ).business_email act_params["custom"] = "%s-%d-User-%d" % ( "Act", act.pk, act.performer.contact.user_object.pk) act_params["mc_gross"] = 10.00 ipn_obj = self.assertGotSignal(valid_ipn_received, params=act_params) purchaser = Purchaser.objects.get( matched_to_user=act.performer.contact.user_object) transaction = Transaction.objects.get(purchaser=purchaser) self.assertEqual(transaction.ticket_item, tickets[0]) self.assertEqual(transaction.invoice, ipn_obj.invoice) self.assertEqual(purchaser.first_name, ipn_obj.first_name) assert_right_mail_right_addresses( 0, 1, "Act Submission Occurred", [privileged_profile.contact_email])
def test_low_donation(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Act Reviewers') act = ActFactory() tickets = setup_fees(act.b_conference, is_act=True) act_params = IPN_POST_PARAMS act_params["mc_currency"] = "USD" act_params["receiver_email"] = PayPalSettings.objects.first( ).business_email act_params["custom"] = "%s-%d-User-%d" % ( "Act", act.pk, act.performer.contact.user_object.pk) act_params["mc_gross"] = "5.00" ipn_obj = self.assertGotSignal(valid_ipn_received, params=act_params) msg = assert_right_mail_right_addresses( 0, 1, "PayPal Purchase Processing Error", [admin[1] for admin in settings.ADMINS]) self.assertTrue("Transaction was not paid" in msg.body) self.assertTrue(reverse("admin:%s_%s_change" % ( "ipn", "paypalipn"), args=(ipn_obj.id, )) in msg.body)
def test_no_main_ticket(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Vendor Reviewers') vendor = VendorFactory() profile = vendor.business.owners.all().first() tickets = setup_fees(vendor.b_conference, is_vendor=True) vendor_params = IPN_POST_PARAMS vendor_params["receiver_email"] = PayPalSettings.objects.first( ).business_email vendor_params["custom"] = "%s-%d-User-%d" % ( "Vendor", vendor.pk, profile.user_object.pk) cost = 0 for ticket in tickets: cost = cost + ticket.cost vendor_params["mc_currency"] = "USD" vendor_params["mc_gross"] = cost vendor_params["item_number"] = str(tickets[1].pk) ipn_obj = self.assertGotSignal(valid_ipn_received, params=vendor_params) msg = assert_right_mail_right_addresses( 0, 1, "PayPal Purchase Processing Error", [admin[1] for admin in settings.ADMINS]) self.assertTrue("Add ons received without a main ticket" in msg.body) self.assertTrue(reverse("admin:%s_%s_change" % ( "ipn", "paypalipn"), args=(ipn_obj.id, )) in msg.body)
def test_act_bid_not_paid(self): '''act_bid, not post, not paid should take us to bid process''' tickets = setup_fees(self.current_conference, is_act=True) login_as(self.performer.performer_profile, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Propose an Act') self.assertContains(response, "Fee (pay what you will)")
def test_act_bid_not_paid_w_fee_outside_date_limit(self): '''act_bid, several viable tickets are before and after current day''' tickets_shown = setup_fees(self.current_conference, is_act=True) ticket_later = setup_fees(self.current_conference, is_act=True) ticket_sooner = setup_fees(self.current_conference, is_act=True) ticket_later[0].start_time = datetime.now() + timedelta(days=3) ticket_later[0].cost = tickets_shown[0].cost - 1 ticket_sooner[0].end_time = datetime.now() - timedelta(days=3) ticket_later[0].cost = tickets_shown[0].cost - 2 ticket_later[0].save() ticket_sooner[0].save() login_as(self.performer.performer_profile, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Propose an Act') self.assertContains(response, "Fee (pay what you will)") self.assertContains(response, 'value="%5.2f"' % tickets_shown[0].cost)
def test_act_bid_post_submit_no_payment(self): '''act_bid, if user has not paid, should take us to please_pay''' login_as(self.performer.performer_profile, self) tickets = setup_fees(self.current_conference, is_act=True) POST = self.get_act_form() POST.update({'submit': '', 'donation': 10}) response = self.client.post(self.url, data=POST) self.assertEqual(response.status_code, 200) self.assertContains(response, "Act Submission Fee")
def test_act_edit_post_form_submit_unpaid(self): act = ActFactory() url = reverse(self.view_name, args=[act.pk], urlconf="gbe.urls") tickets = setup_fees(act.b_conference, is_act=True) login_as(act.performer.performer_profile, self) act_form = self.get_act_form(act, submit=True) act_form['donation'] = 10 response = self.client.post(url, data=act_form) self.assertEqual(response.status_code, 200) self.assertContains(response, "Act Submission Fee") self.assertContains(response, payment_needed_msg)
def test_vendor_edit_post_form_valid_submit_bad_pay_choice(self): vendor = VendorFactory(business=self.business) tickets = setup_fees(vendor.b_conference, is_vendor=True) login_as(self.profile, self) url = reverse(self.view_name, urlconf='gbe.urls', args=[vendor.pk]) data = self.get_vendor_form(submit=True) data['main_ticket'] = tickets[0].pk + 1000 response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, payment_details_error) self.assertContains(response, "Select a valid choice.")
def test_create_vendor_post_form_valid_submit(self): url = reverse(self.view_name, urlconf='gbe.urls') login_as(self.profile, self) tickets = setup_fees(self.conference, is_vendor=True) data = self.get_form(submit=True) data['main_ticket'] = tickets[0].pk response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Fee has not been Paid')
def test_act_bid_not_paid_w_fee_within_date_limit(self): '''act_bid, not post, show the ticket price in active range''' tickets = setup_fees(self.current_conference, is_act=True) tickets[0].start_time = datetime.now() - timedelta(days=5) tickets[0].end_time = datetime.now() + timedelta(days=5) tickets[0].save() login_as(self.performer.performer_profile, self) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Propose an Act') self.assertContains(response, "Fee (pay what you will)") self.assertContains(response, 'value="%5.2f"' % tickets[0].cost)
def test_vendor_edit_post_form_valid_submit_no_main_ticket(self): vendor = VendorFactory(business=self.business) tickets = setup_fees(vendor.b_conference, is_vendor=True) login_as(self.profile, self) url = reverse(self.view_name, urlconf='gbe.urls', args=[vendor.pk]) data = self.get_vendor_form(submit=True) data['add_ons'] = tickets[1].pk response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, payment_details_error) self.assertContains(response, "This field is required.")
def test_act_edit_post_form_submit_bad_pay_choice(self): act = ActFactory() url = reverse(self.view_name, args=[act.pk], urlconf="gbe.urls") tickets = setup_fees(act.b_conference, is_act=True) login_as(act.performer.performer_profile, self) act_form = self.get_act_form(act, submit=True) act_form['donation'] = 5 response = self.client.post(url, data=act_form) self.assertEqual(response.status_code, 200) self.assertContains(response, payment_details_error) self.assertContains( response, "Ensure this value is greater than or equal to 10.00")
def test_act_edit_post_form_submit_paid_other_year(self): act = ActFactory() make_act_app_purchase(ConferenceFactory(status="completed"), act.performer.performer_profile.user_object) tickets = setup_fees(act.b_conference, is_act=True) url = reverse(self.view_name, args=[act.pk], urlconf="gbe.urls") login_as(act.performer.performer_profile, self) act_form = self.get_act_form(act, submit=True) act_form['donation'] = 10 response = self.client.post(url, data=act_form) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Act Payment')
def test_edit_paid_bid_get(self): '''edit_bid, not post, should take us to edit process''' vendor = VendorFactory(business=self.business) tickets = setup_fees(vendor.b_conference, is_vendor=True) make_vendor_app_purchase(vendor.b_conference, self.profile.user_object) login_as(self.profile, self) url = reverse(self.view_name, urlconf='gbe.urls', args=[vendor.pk]) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<h2 class="gbe-title">Vendor Application</h2>', html=True) self.assertContains(response, 'value="Submit For Approval"') self.assertNotContains(response, tickets[0].title) self.assertNotContains(response, tickets[1].title)
def test_vendor_edit_post_form_valid_submit_paid_wrong_conf(self): vendor = VendorFactory(business=self.business) tickets = setup_fees(vendor.b_conference, is_vendor=True) make_vendor_app_purchase(ConferenceFactory(status="completed"), self.profile.user_object) login_as(self.profile, self) url = reverse(self.view_name, urlconf='gbe.urls', args=[vendor.pk]) data = self.get_vendor_form(submit=True) data['main_ticket'] = tickets[0].pk data['add_ons'] = tickets[1].pk response = self.client.post(url, data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Fee has not been Paid') self.assertContains(response, tickets[0].title) self.assertContains(response, tickets[1].title)
def test_act_submit_act_succeed(self): tickets = setup_fees(self.current_conference, is_act=True) response, data = self.post_act_submission() just_made = self.performer.acts.all().first() self.assertRedirects( response, reverse('act_review', urlconf="gbe.urls", args=[just_made.id])) self.assertContains(response, just_made.b_title) assert_alert_exists(response, 'success', 'Success', default_act_submit_msg) self.assertTrue( Transaction.objects.filter( purchaser__matched_to_user=just_made.performer.contact. user_object, ticket_item__ticketing_event__act_submission_event=True, ticket_item__ticketing_event__conference=self. current_conference).exists())
def test_edit_bid_get(self): '''edit_bid, not post, should take us to edit process''' msg = UserMessageFactory(view='MakeVendorView', code='FEE_MESSAGE', summary="Vendor Bid Instructions", description="Test Fee Instructions Message") vendor = VendorFactory(business=self.business) tickets = setup_fees(vendor.b_conference, is_vendor=True) login_as(self.profile, self) url = reverse(self.view_name, urlconf='gbe.urls', args=[vendor.pk]) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<h2 class="gbe-title">Vendor Application</h2>', html=True) self.assertContains(response, "Test Fee Instructions Message") self.assertContains(response, tickets[0].title) self.assertContains(response, tickets[1].cost)
def test_valid_vendor_payment_already_submitted(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Vendor Reviewers') vendor = VendorFactory(submitted=True) profile = vendor.business.owners.all().first() tickets = setup_fees(vendor.b_conference, is_vendor=True) vendor_params = IPN_POST_PARAMS vendor_params["receiver_email"] = PayPalSettings.objects.first( ).business_email vendor_params["custom"] = "%s-%d-User-%d" % ( "Vendor", vendor.pk, profile.user_object.pk) cost = 0 for ticket in tickets: cost = cost + ticket.cost vendor_params["mc_currency"] = "USD" vendor_params["mc_gross"] = cost vendor_params["item_number"] = str(tickets[0].pk) ipn_obj = self.assertGotSignal(valid_ipn_received, params=vendor_params) self.assertEqual(Purchaser.objects.filter( matched_to_user=profile.user_object).count(), 1) self.assertEqual(Transaction.objects.filter( purchaser__matched_to_user=profile.user_object).count(), 1) msg = assert_right_mail_right_addresses( 0, 2, "PayPal Purchase Processing Error", [admin[1] for admin in settings.ADMINS]) self.assertTrue( "Payment recieved for a bid that has already been " + "submitted. Bid name: %s, Bid Type: %s, Bid PK: %s" % ( vendor.b_title, "Vendor", vendor.pk)) self.assertTrue(reverse("admin:%s_%s_change" % ( "ipn", "paypalipn"), args=(ipn_obj.id, )) in msg.body)
def test_valid_vendor_payment_received(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Vendor Reviewers') vendor = VendorFactory() profile = vendor.business.owners.all().first() tickets = setup_fees(vendor.b_conference, is_vendor=True) vendor_params = IPN_POST_PARAMS vendor_params["receiver_email"] = PayPalSettings.objects.first( ).business_email vendor_params["custom"] = "%s-%d-User-%d" % ( "Vendor", vendor.pk, profile.user_object.pk) cost = 0 for ticket in tickets: cost = cost + ticket.cost vendor_params["mc_currency"] = "USD" vendor_params["mc_gross"] = cost vendor_params["item_number"] = "%d %d" % (tickets[0].pk, tickets[1].pk) ipn_obj = self.assertGotSignal(valid_ipn_received, params=vendor_params) self.assertTrue(Purchaser.objects.filter( matched_to_user=profile.user_object).exists()) purchaser = Purchaser.objects.get( matched_to_user=profile.user_object) self.assertEqual(purchaser.first_name, ipn_obj.first_name) transactions = Transaction.objects.filter(purchaser=purchaser) for ticket in tickets: self.assertTrue(transactions.filter(ticket_item=ticket).exists()) self.assertEqual( transactions.filter(ticket_item=ticket).first().invoice, ipn_obj.invoice) assert_right_mail_right_addresses( 0, 1, "Vendor Submission Occurred", [privileged_profile.contact_email])
def test_bad_reciever(self): privileged_profile = ProfileFactory() grant_privilege( privileged_profile.user_object, 'Act Reviewers') act = ActFactory() tickets = setup_fees(act.b_conference, is_act=True) act_params = IPN_POST_PARAMS act_params["mc_currency"] = "USD" act_params["receiver_email"] = "*****@*****.**" ipn_obj = self.assertGotSignal(valid_ipn_received, params=act_params) msg = assert_right_mail_right_addresses( 0, 1, "PayPal Purchase Processing Error", [admin[1] for admin in settings.ADMINS]) self.assertTrue( "Email not valid: %s" % ipn_obj.receiver_email in msg.body) self.assertTrue(reverse("admin:%s_%s_change" % ( "ipn", "paypalipn"), args=(ipn_obj.id, )) in msg.body)