def setUp(self): super(OrganizationsEndpointTestCase, self).setUp() self.client = JSONAPITestClient() self.user_1 = BlueBottleUserFactory.create() self.user_1_token = "JWT {0}".format(self.user_1.get_jwt_token()) self.user_2 = BlueBottleUserFactory.create() self.organization_1 = OrganizationFactory.create( owner=self.user_1, name='Evil Knight' ) self.organization_2 = OrganizationFactory.create( owner=self.user_1, name='Evel Knievel' ) self.organization_3 = OrganizationFactory.create( owner=self.user_1, name='Hanson Kids' ) self.organization_4 = OrganizationFactory.create( owner=self.user_1, name='Knight Rider' ) self.organization_5 = OrganizationFactory.create( owner=self.user_2, name='Kids Club' )
def setUp(self): super(PayoutBaseTestCase, self).setUp() self.init_projects() # Set up a project ready for payout self.organization = OrganizationFactory.create() self.organization.save() self.project = ProjectFactory.create(organization=self.organization, amount_asked=50) self.project_incomplete = ProjectFactory.create( organization=self.organization, amount_asked=100) # Update phase to campaign. self.project.status = ProjectPhase.objects.get(slug='campaign') self.project.save() self.project_incomplete.status = ProjectPhase.objects.get( slug='campaign') self.project_incomplete.save() self.order = OrderFactory.create() self.donation = DonationFactory.create(project=self.project, order=self.order, amount=60) self.donation.save() self.donation2 = DonationFactory.create( project=self.project_incomplete, order=self.order, amount=60) self.donation2.save()
def setUp(self): super(OrganizationContactTest, self).setUp() self.user = BlueBottleUserFactory.create() self.organization = OrganizationFactory.create() self.contact = OrganizationContactFactory.create( organization=self.organization, owner=self.user)
def test_member_organization_no_organizatoin(self): member = BlueBottleUserFactory.create( partner_organization=OrganizationFactory.create()) initiative = InitiativeFactory(has_organization=False, organization=None, owner=member) self.assertIsNone(initiative.organization)
def test_member_organization(self): member = BlueBottleUserFactory.create( partner_organization=OrganizationFactory.create()) initiative = InitiativeFactory(has_organization=True, organization=None, owner=member) self.assertEqual(initiative.organization, member.partner_organization)
def setUp(self): super(PayoutBaseTestCase, self).setUp() self.init_projects() # Set up a project ready for payout self.organization = OrganizationFactory.create() self.organization.save() self.project = ProjectFactory.create(organization=self.organization, amount_asked=50) self.project_incomplete = ProjectFactory.create(organization=self.organization, amount_asked=100) # Update phase to campaign. self.project.status = ProjectPhase.objects.get(slug='campaign') self.project.save() self.project_incomplete.status = ProjectPhase.objects.get(slug='campaign') self.project_incomplete.save() self.order = OrderFactory.create() self.donation = DonationFactory.create( project=self.project, order=self.order, amount=60 ) self.donation.save() self.donation2 = DonationFactory.create( project=self.project_incomplete, order=self.order, amount=60 ) self.donation2.save()
def test_create_validation_organization_website(self): organization = OrganizationFactory.create(website='') data = { 'data': { 'type': 'initiatives', 'attributes': { 'title': 'Some title', 'has_organization': True }, 'relationships': { 'organization': { 'data': { 'type': 'organizations', 'id': organization.pk }, } } } } response = self.client.post(self.url, json.dumps(data), user=self.owner) self.assertEqual(response.status_code, status.HTTP_201_CREATED) organization = get_include(response, 'organizations') self.assertTrue('/data/attributes/website' in ( error['source']['pointer'] for error in organization['meta']['required']))
def setUp(self): super(UserApiIntegrationTest, self).setUp() self.user_1 = BlueBottleUserFactory.create() self.user_1_token = "JWT {0}".format(self.user_1.get_jwt_token()) self.user_2 = BlueBottleUserFactory.create() self.user_2_token = "JWT {0}".format(self.user_2.get_jwt_token()) # User with partner organization self.user_with_partner_organization = BlueBottleUserFactory.create() self.user_with_partner_organization_token = "JWT {0}".format(self.user_with_partner_organization.get_jwt_token() ) self.organization = OrganizationFactory.create(name='Partner Organization', slug='partner-organization', website='http://partnerorg.nl') self.organization_contact = OrganizationContactFactory.create(organization=self.organization) self.organization_member = OrganizationMemberFactory.create(organization=self.organization) self.user_with_partner_organization.partner_organization = self.organization self.user_with_partner_organization.save() self.current_user_api_url = reverse('user-current') self.manage_profile_url = reverse('manage-profile', args=(self.user_1.pk, )) self.user_create_api_url = reverse('user-user-create') self.user_password_reset_api_url = reverse('password-reset')
def setUp(self): super(TestPledgeMails, self).setUp() self.init_projects() self.user = BlueBottleUserFactory(can_pledge=True) self.project_owner = BlueBottleUserFactory(username='******', email='*****@*****.**', password='******') self.organization = OrganizationFactory.create(name='test_org', slug='test_org') self.project = ProjectFactory(owner=self.project_owner, organization=self.organization, title='Project 1', amount_needed=1111, amount_asked=1111) self.order = OrderFactory.create(user=self.user) self.donation = DonationFactory(amount=60, order=self.order, project=self.project, fundraiser=None) self.order_payment = OrderPaymentFactory.create( order=self.order, payment_method='pledgeStandard') self.order_payment.pledged() self.order_payment.save()
def test_organization_contact_already_set(self): organization_contact = OrganizationContactFactory.create() initiative = InitiativeFactory( has_organization=True, organization=OrganizationFactory.create(), organization_contact=organization_contact) self.assertEqual(initiative.organization_contact.pk, organization_contact.pk)
def setUp(self): super(OrganizationModelTest, self).setUp() self.init_projects() for name in ['test', 'tast', 'tist', 'tust']: organization = OrganizationFactory.create(name=name) ProjectFactory(organization=organization) OrganizationMemberFactory.create(organization=organization)
def setUp(self): super(OrganizationsEndpointTestCase, self).setUp() self.user_1 = BlueBottleUserFactory.create() self.user_1_token = "JWT {0}".format(self.user_1.get_jwt_token()) self.user_2 = BlueBottleUserFactory.create() self.organization_1 = OrganizationFactory.create() self.organization_2 = OrganizationFactory.create() self.organization_3 = OrganizationFactory.create() self.member_1 = OrganizationMemberFactory.create( user=self.user_1, organization=self.organization_1) self.member_2 = OrganizationMemberFactory.create( user=self.user_1, organization=self.organization_2) self.member_3 = OrganizationMemberFactory.create( user=self.user_2, organization=self.organization_3)
def test_current_user_organization(self): """ Test retrieving the currently logged in user with partner organization """ organization = OrganizationFactory.create(name='GoodUp') self.user_1.partner_organization = organization self.user_1.save() response = self.client.get(self.current_user_api_url, token=self.user_1_token) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) self.assertEqual(response.data['organization']['name'], 'GoodUp')
def test_has_organization_no_phone(self): self.initiative = InitiativeFactory.create( has_organization=True, owner=self.user, organization=OrganizationFactory.create(), organization_contact=OrganizationContactFactory.create(phone=None) ) self.initiative.states.submit() self.assertEqual( self.initiative.status, ReviewStateMachine.submitted.value )
def test_initiative_admin_with_organization_contact(self): self.initiative.contact = OrganizationFactory.create() self.initiative.organization_contact = OrganizationContactFactory.create( ) self.initiative.has_organization = True self.initiative.save() self.assertIsNotNone(self.initiative.organization_contact) self.client.force_login(self.superuser) admin_url = reverse('admin:initiatives_initiative_change', args=(self.initiative.id, )) response = self.client.get(admin_url) self.assertEqual(response.status_code, status.HTTP_200_OK)
def setUp(self): super(AdminMergeOrganizationsTest, self).setUp() self.init_projects() for name in ['test', 'tast', 'tist']: organization = OrganizationFactory.create(name=name) ProjectFactory( title='project for {}'.format(name), organization=organization ) self.admin_url = reverse('admin:organizations_organization_changelist') self.client.force_login(BlueBottleUserFactory.create(is_staff=True, is_superuser=True))
def test_complete_with_organization(self): self.project.organization = OrganizationFactory.create(email='*****@*****.**') self.project.status = self.complete self.project.save() self.assertEquals(len(mail.outbox), 2) initiator_email = mail.outbox[0] self.assertEqual(initiator_email.to, [self.project.owner.email]) self.assertTrue('has been realised' in initiator_email.subject) self.assertTrue(Survey.url(self.project, user_type='initiator') in initiator_email.body) organization_email = mail.outbox[1] self.assertEqual(organization_email.to, [self.project.organization.email]) self.assertTrue('has been realised' in organization_email.subject) self.assertTrue(Survey.url(self.project, user_type='organization') in organization_email.body)
def test_missing_organization_contact(self): self.initiative = InitiativeFactory.create( has_organization=True, owner=self.user, organization=OrganizationFactory.create(), organization_contact=None ) self.assertEqual( self.initiative.status, ReviewStateMachine.draft.value ) self.assertRaises( TransitionNotPossible, self.initiative.states.submit )
def test_partner_project(self): """ BB-3671 - serialization fails using bluebottle.projects' serializer because it depends on certain annotations being present """ organization = OrganizationFactory.create() organization.save() po = PartnerOrganization.objects.create(name="OPC", slug="opc", description="1%") project = ProjectFactory.create(title="Project with partner org", partner_organization=po, organization=organization, status=self.campaign_phase) url = reverse('partner-detail', kwargs={'slug':po.slug}) response = self.client.get(url) self.assertEquals(response.status_code, status.HTTP_200_OK)
def test_dont_create_payout(self): """ Test that a payout is not generated when the campaign never started """ organization = OrganizationFactory.create() project = ProjectFactory.create(organization=organization, amount_asked=50) # No payouts should exist yet as project is not in act phase yet self.assertFalse(ProjectPayout.objects.exists()) self.assertEqual(project.status, ProjectPhase.objects.get(slug='plan-new')) # Payout should not have been created self.assertEquals(ProjectPayout.objects.count(), 0)
def test_dont_create_payout(self): """ Test that a payout is not generated when the campaign never started """ organization = OrganizationFactory.create() project = ProjectFactory.create( organization=organization, amount_asked=50) # No payouts should exist yet as project is not in act phase yet self.assertFalse(ProjectPayout.objects.exists()) self.assertEqual(project.status, ProjectPhase.objects.get(slug='plan-new')) # Payout should not have been created self.assertEquals(ProjectPayout.objects.count(), 0)
def test_complete_inactive_survey_with_organization(self): self.survey = SurveyFactory(link='https://example.com/survey/1/', active=False) self.project.organization = OrganizationFactory.create( email='*****@*****.**') self.project.status = self.complete self.project.save() self.assertEquals(len(mail.outbox), 2) initiator_email = mail.outbox[0] self.assertEqual(initiator_email.to, [self.project.owner.email]) self.assertTrue('has been realised' in initiator_email.subject) self.assertFalse('survey' in initiator_email.body) organization_email = mail.outbox[1] self.assertEqual(organization_email.to, [self.project.organization.email]) self.assertTrue('has been realised' in organization_email.subject) self.assertFalse('survey' in organization_email.body)
def test_partner_project(self): organization = OrganizationFactory.create() organization.save() po = PartnerOrganization.objects.create(name="OPC", slug="opc", description="1%") project = ProjectFactory.create(title="Project with partner org", partner_organization=po, organization=organization, status=self.campaign_phase) url = reverse('partner-preview-list') response = self.client.get(url) self.assertEquals(response.status_code, status.HTTP_200_OK) data = json.loads(response.content) self.assertEquals(len(data), 1) self.assertIn('id', data[0]) self.assertIn('name', data[0]) self.assertNotIn('projects', data[0])
def setUp(self): super(TestPledgeMails, self).setUp() self.init_projects() self.user = BlueBottleUserFactory(can_pledge=True) self.project_owner = BlueBottleUserFactory(username="******", email="*****@*****.**", password="******") self.organization = OrganizationFactory.create(name="test_org", slug="test_org") self.project = ProjectFactory( owner=self.project_owner, organization=self.organization, title="Project 1", amount_needed=1111, amount_asked=1111, ) self.order = OrderFactory.create(user=self.user) self.donation = DonationFactory(amount=60, order=self.order, project=self.project, fundraiser=None) self.order_payment = OrderPaymentFactory.create(order=self.order, payment_method="pledgeStandard") self.order_payment.pledged() self.order_payment.save()
def setUp(self): super(AccountingStatisticsTests, self).setUp() self.today = timezone.now() last_year = self.today.year - 1 self.last_year = datetime.datetime(last_year, 1, 1, tzinfo=pytz.timezone('Europe/Amsterdam')) self.middle_date = datetime.datetime(last_year, 6, 1, tzinfo=pytz.timezone('Europe/Amsterdam')) # other categories from the fixtures are [u'Checking to savings', u'Savings to checking', # u'Bank costs', u'Donations to be transferred', u'Interest', u'Settle Bank costs', u'Total'] self.CAMPAIGN_PAYOUT = BankTransactionCategory.objects.get(name='Campaign Payout') self.DOCDATA_PAYOUT = BankTransactionCategory.objects.get(name='Docdata payout') self.DOCDATA_PAYMENT = BankTransactionCategory.objects.get(name='Docdata payment') self.status = BankTransaction.IntegrityStatus # .Valid .UnknownTransaction .AmountMismatch self.creditdebit = BankTransaction.CreditDebit # .credit .debit # ##### One organization has 2 projects ##### # self.organization = OrganizationFactory.create(name='test_org', slug='test_org') self.project1_owner = BlueBottleUserFactory(username='******', email='*****@*****.**', password='******') self.project2_owner = BlueBottleUserFactory(username='******', email='*****@*****.**', password='******') # deadline defaults to timezone.now() + timedelta(days=100) # allow_overfunding defaults to True self.project1 = ProjectFactory(owner=self.project1_owner, organization=self.organization, title='Project 1', amount_needed=1111, amount_asked=1111) self.project2 = ProjectFactory(owner=self.project2_owner, organization=self.organization, title='Project 2', amount_needed=2222, amount_asked=2222) # ##### Person 1 makes 1 order that contains 2 donations for both projects ##### # self.person1 = BlueBottleUserFactory(username='******', email='*****@*****.**', password='******') self.order1 = OrderFactory.create(user=self.person1) self.donation1_person1 = DonationFactory(order=self.order1, project=self.project1, amount=111) self.donation2_person1 = DonationFactory(order=self.order1, project=self.project2, amount=222) # ##### Person 2 makes 1 donations for project 1 ##### # self.person2 = BlueBottleUserFactory(username='******', email='*****@*****.**', password='******') self.order2 = OrderFactory.create(user=self.person2, status='success') self.donation1_person2 = DonationFactory(order=self.order2, project=self.project1, amount=1000) # ##### ORDER PAYMENT AND PAYMENT ##### # self.assertEqual(self.order1.status, 'created') self.order_payment = OrderPaymentFactory.create(order=self.order1) self.assertEqual(self.order1.status, 'locked') self.assertEqual(Payment.objects.all().count(), 0) self.order_payment.started() self.order_payment.save() self.payment = PaymentFactory.create(order_payment=self.order_payment) self.assertEqual(Payment.objects.all().count(), 1) self.assertEqual(self.order1.status, StatusDefinition.LOCKED) self.order_payment.authorized() self.order_payment.save() self.assertEqual(self.order1.status, StatusDefinition.PENDING) self.order_payment.settled() self.order_payment.save() self.assertEqual(self.order1.status, StatusDefinition.SUCCESS) # ##### # ##### make Docdata Payout and Payment ##### # self.remoteDDPayout = RemoteDocdataPayoutFactory.create(collected_amount=Decimal('123.45'), payout_amount=Decimal('20')) self.remoteDDPayment = RemoteDocdataPaymentFactory.create(remote_payout=self.remoteDDPayout, local_payment=self.payment, amount_collected=Decimal('123.45'), docdata_fee=Decimal('0.33')) self.assertEqual(self.remoteDDPayout.collected_amount, Decimal('123.45')) self.assertEqual(self.remoteDDPayout.payout_amount, Decimal('20')) self.assertEqual(self.remoteDDPayment.amount_collected, Decimal('123.45')) self.assertEqual(self.remoteDDPayment.docdata_fee, Decimal('0.33')) self.assertEqual(self.remoteDDPayment.status, 'valid') # completed should be between start and end to appear in the statistics self.project1_payout = ProjectPayoutFactory.create( completed=self.middle_date, status = StatusDefinition.SETTLED, project=self.project1, amount_raised=333, organization_fee=0, amount_payable=333) self.project2_payout = ProjectPayoutFactory.create( completed=self.middle_date, status = StatusDefinition.SETTLED, project=self.project2, amount_raised=1000, organization_fee=50, amount_payable=950) BankTransactionFactory.create(amount=Decimal('1000'), category=self.CAMPAIGN_PAYOUT, credit_debit=self.creditdebit.credit, status=self.status.Valid, payout=self.project2_payout, remote_payout=None, remote_payment=None, )