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'
        )
Exemple #2
0
    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()
Exemple #3
0
    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)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
    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()
Exemple #7
0
    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']))
Exemple #8
0
    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')
Exemple #9
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()
Exemple #10
0
 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)
Exemple #11
0
    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)
Exemple #12
0
    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)
Exemple #13
0
 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')
Exemple #14
0
    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)
Exemple #16
0
    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))
Exemple #17
0
    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)
Exemple #18
0
    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
        )
Exemple #19
0
    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)
Exemple #20
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)
Exemple #21
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)
Exemple #22
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)
Exemple #23
0
    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])
Exemple #24
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,
                                      )