def test_get_stats(self): event = EventFactory.create(initiative=self.initiative, status='succeeded') ParticipantFactory.create_batch(3, activity=event, status='succeeded', time_spent=3) assignment = AssignmentFactory.create(initiative=self.initiative, status='succeeded', duration=3) ApplicantFactory.create_batch(3, activity=assignment, status='succeeded', time_spent=3) funding = FundingFactory.create(initiative=self.initiative, status='succeeded') DonationFactory.create_batch(3, activity=funding, status='succeeded', amount=Money(10, 'EUR')) DonationFactory.create_batch(3, activity=funding, status='succeeded', amount=Money(10, 'USD')) response = self.client.get(self.url, user=self.owner) self.assertEqual(response.status_code, status.HTTP_200_OK) stats = response.json()['data']['meta']['stats'] self.assertEqual(stats['hours'], 18) self.assertEqual(stats['activities'], 3) self.assertEqual(stats['contributions'], 12) self.assertEqual(stats['amount'], 75.0)
def setUp(self): self.initiative = InitiativeFactory.create() self.initiative.states.submit() self.initiative.states.approve(save=True) self.funding = FundingFactory.create( initiative=self.initiative, duration=30, target=Money(1000, 'EUR') ) BudgetLineFactory.create(activity=self.funding) payout_account = StripePayoutAccountFactory.create(reviewed=True, status='verified') self.bank_account = ExternalAccountFactory.create(connect_account=payout_account, status='verified') self.funding.bank_account = self.bank_account self.funding.states.submit() self.funding.states.approve(save=True) for donation in DonationFactory.create_batch( 3, amount=Money(150, 'EUR'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) for donation in DonationFactory.create_batch( 2, amount=Money(200, 'USD'), payout_amount=(150, 'EUR'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) for donation in DonationFactory.create_batch( 5, amount=Money(100, 'USD'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) donation = DonationFactory.create( amount=Money(750, 'EUR'), activity=self.funding, status='succeeded') PledgePaymentFactory.create(donation=donation) self.donation = donation for donation in DonationFactory.create_batch( 5, amount=Money(150, 'EUR'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) for donation in DonationFactory.create_batch( 5, amount=Money(100, 'USD'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation)
def setUp(self): super(ContributionListAPITestCase, self).setUp() self.client = JSONAPITestClient() self.user = BlueBottleUserFactory.create() ParticipantFactory.create_batch(2, user=self.user) ApplicantFactory.create_batch(2, user=self.user) DonationFactory.create_batch(2, user=self.user, status='succeeded') DonationFactory.create_batch(2, user=self.user, status='new') ParticipantFactory.create() ApplicantFactory.create() DonationFactory.create() self.url = reverse('contribution-list')
def setUp(self): super(TestPayoutApi, self).setUp() self.client = JSONAPITestClient() self.plain_user = BlueBottleUserFactory.create() self.plain_token = Token.objects.create(user=self.plain_user) self.finance_user = BlueBottleUserFactory.create() self.token = Token.objects.create(user=self.finance_user) financial = Group.objects.get(name='Financial') financial.user_set.add(self.finance_user) yesterday = now() - timedelta(days=1) payout_account = StripePayoutAccountFactory.create(status='verified') self.bank_account = ExternalAccountFactory.create( connect_account=payout_account) self.funding = FundingFactory.create(deadline=yesterday, status='open') self.funding.bank_account = self.bank_account self.funding.save() donations = DonationFactory.create_batch(4, activity=self.funding, amount=Money(35, 'EUR'), status='succeeded') for donation in donations: StripePaymentFactory.create(status='succeeded', donation=donation) self.funding.states.succeed(save=True) self.payout = self.funding.payouts.first() self.payout_url = reverse('payout-details', kwargs={'pk': self.payout.id})
def test_member_export(self): member = BlueBottleUserFactory.create(username='******') CustomMemberFieldSettings.objects.create(name='Extra Info') field = CustomMemberFieldSettings.objects.create(name='How are you') CustomMemberField.objects.create(member=member, value='Fine', field=field) ParticipantFactory.create(time_spent=5, user=member, status='succeeded') ParticipantFactory.create(time_spent=12, user=member, status='succeeded') ApplicantFactory.create_batch(3, time_spent=10, user=member, status='succeeded') DonationFactory.create_batch(7, amount=Money(5, 'EUR'), user=member, status='succeeded') export_action = self.member_admin.actions[0] response = export_action(self.member_admin, self.request, self.member_admin.get_queryset(self.request)) data = response.content.decode('utf-8').split("\r\n") headers = data[0].split(",") user_data = [] for row in data: if row.startswith('malle-eppie'): user_data = row.split(',') # Test basic info and extra field are in the csv export self.assertEqual(headers, [ 'username', 'email', 'remote_id', 'first_name', 'last name', 'date joined', 'is initiator', 'is supporter', 'is volunteer', 'amount donated', 'time spent', 'subscribed to matching projects', 'Extra Info', 'How are you' ]) self.assertEqual(user_data[0], 'malle-eppie') self.assertEqual(user_data[7], 'True') self.assertEqual(user_data[8], 'True') self.assertEqual(user_data[9], u'35.00 €') self.assertEqual(user_data[10], '47.0') self.assertEqual(user_data[13], 'Fine')
def test_generate_payouts(self): Payout.generate(self.funding) self.assertEqual(self.funding.payouts.count(), 3) payout_amounts = [p.total_amount for p in self.funding.payouts.all()] self.assertTrue(Money(1000, 'USD') in payout_amounts) self.assertTrue(Money(1500, 'EUR') in payout_amounts) self.assertTrue(Money(750, 'EUR') in payout_amounts) # More donations for donation in DonationFactory.create_batch(5, amount=Money(150, 'EUR'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) # Recalculate should generate new payouts. One should be higher now. Payout.generate(self.funding) self.assertEqual(self.funding.payouts.count(), 3) payout_amounts = [p.total_amount for p in self.funding.payouts.all()] self.assertTrue(Money(1000, 'USD') in payout_amounts) self.assertTrue(Money(2250, 'EUR') in payout_amounts) self.assertTrue(Money(750, 'EUR') in payout_amounts) with mock.patch('bluebottle.payouts_dorado.adapters.DoradoPayoutAdapter.trigger_payout'): for payout in self.funding.payouts.all(): payout.states.approve() payout.save() # More donations after approved payouts for donation in DonationFactory.create_batch(8, amount=Money(250, 'EUR'), activity=self.funding, status='succeeded'): StripePaymentFactory.create(donation=donation) # Recalculate should generate an additional payout Payout.generate(self.funding) self.assertEqual(self.funding.payouts.count(), 4) payout_amounts = [p.total_amount for p in self.funding.payouts.all()] self.assertTrue(Money(1000, 'USD') in payout_amounts) self.assertTrue(Money(2000, 'EUR') in payout_amounts) self.assertTrue(Money(2250, 'EUR') in payout_amounts) self.assertTrue(Money(750, 'EUR') in payout_amounts)
def test_donation_total(self): for donation in DonationFactory.create_batch(2, activity=self.funding, amount=Money(100, 'NGN')): PledgePaymentFactory.create(donation=donation) self.client.force_login(self.superuser) response = self.client.get(self.admin_url) self.assertTrue(u'Total amount: <b>0.60 €</b>'.encode('utf-8') in response.content)
def test_donation_admin_pledge_filter(self): for donation in DonationFactory.create_batch(2, activity=self.funding): PledgePaymentFactory.create(donation=donation) for donation in DonationFactory.create_batch(7, activity=self.funding): StripePaymentFactory.create(donation=donation) self.client.force_login(self.superuser) response = self.client.get(self.admin_url, {'status__exact': 'all'}) self.assertContains(response, '9 Donations') response = self.client.get(self.admin_url, { 'status__exact': 'all', 'pledge': 'paid' }) self.assertContains(response, '7 Donations') response = self.client.get(self.admin_url, { 'status__exact': 'all', 'pledge': 'pledged' }) self.assertContains(response, '2 Donations')
def setUp(self): super(TestPayoutAdapter, self).setUp() self.funding = FundingFactory.create(target=Money(500, 'EUR'), status='open') donations = DonationFactory.create_batch(7, activity=self.funding, amount=Money(100, 'EUR')) for donation in donations: PledgePaymentFactory.create(donation=donation) yesterday = now() - timedelta(days=1) self.funding.deadline = yesterday self.funding.save() self.mock_response = requests.Response() self.mock_response.status_code = 200 self.adapter = DoradoPayoutAdapter(self.funding)