def setUp(self): """ Create 26 Project instances. """ self.init_projects() self.user = BlueBottleUserFactory.create() organization = OrganizationFactory.create() organization.save() self.campaign_phase = ProjectPhase.objects.get(slug='campaign') self.plan_phase = ProjectPhase.objects.get(slug='done-complete') for char in 'abcdefghijklmnopqrstuvwxyz': # Put half of the projects in the campaign phase. if ord(char) % 2 == 1: project = OnePercentProjectFactory.create(title=char * 3, slug=char * 3, status=self.campaign_phase, organization=organization) else: project = OnePercentProjectFactory.create(title=char * 3, slug=char * 3, status=self.plan_phase, organization=organization) project.save() self.projects_url = reverse('project_list')
def setUp(self): # Required by Project model save method self.init_projects() self.some_project = OnePercentProjectFactory.create(amount_asked=5000) self.another_project = OnePercentProjectFactory.create(amount_asked=5000) self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create()
def test_change_project_goal(self): plan_phase = ProjectPhase.objects.get(slug='plan-new') project = OnePercentProjectFactory.create(title='Project Goal Changes', owner=self.user, status=plan_phase) self.visit_path('/my/projects/{0}/goal'.format(project.slug)) # Check that deadline is set to 30 days now days_left = self.browser.find_by_css('.project-days-left strong').first self.assertEqual(days_left.text, '30') # Let's pick a date # Click Next to get a date in the future self.assertTrue(self.scroll_to_and_click_by_css(".btn-date-picker")) self.browser.find_by_css("[title=Prev]").first.click() self.browser.find_by_css("[title=Prev]").first.click() self.browser.find_by_css("[title=Prev]").first.click() self.browser.find_by_css("[title=Next]").first.click() self.assertTrue(self.browser.is_text_present("4")) self.browser.find_link_by_text("4").first.click() # remember the days left now days_left1 = self.browser.find_by_css('.project-days-left strong').first.text time.sleep(2) self.assertTrue(self.scroll_to_and_click_by_css(".btn-date-picker")) self.assertTrue(self.browser.is_text_present("14")) self.browser.find_link_by_text("14").first.click() days_left2 = self.browser.find_by_css('.project-days-left strong').first.text days_diff = int(days_left2) - int(days_left1) self.assertEqual(days_diff, 10)
def setUp(self): self.init_projects() self.user = BlueBottleUserFactory.create() campaign_phase = ProjectPhase.objects.get(name='Campaign') for title in [u'Mobile payments for everyone!', u'Schools for children', u'Women first']: project = OnePercentProjectFactory.create(title=title, owner=self.user, amount_asked=1000, status=campaign_phase) self.visit_path('/projects/schools-for-children') # Assert visual donation elements on project page self.assert_css(".amount-donated") self.assert_css(".project-fund-amount-slider") # Bring up the donation modal self.assert_css('a[data-action-type="donate"]') self.scroll_to_and_click_by_css('a[data-action-type=donate]') # Verify the elements of the donation modal self.wait_for_element_css('input.donation-input') donation_input = self.browser.find_by_css("input.donation-input").first # Make a donation of 55 euros (default is 25) donation_input.fill('55') self.assertEqual(int(donation_input.value), 55) self.assert_css(".donation-buttons") self.assert_css("#hideMyName") # Jump to next step self.scroll_to_and_click_by_css(".donate-btn")
def setUp(self): self.init_projects() self.phase_campaign = ProjectPhase.objects.get(slug='campaign') self._projects = [] self.projects = dict([(slugify(title), title) for title in [ u'Women first', u'Mobile payments for everyone!', u'Schools for children' ]]) for slug, title in self.projects.items(): project = OnePercentProjectFactory.create(title=title, slug=slug, amount_asked=500) self._projects.append(project) project.amount_donated = 500 # EUR 5.00 project.status = self.phase_campaign project.save() self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create() self.donate_details = {'firstname': 'Pietje', 'lastname': 'Paulusma', 'email': '*****@*****.**', 'address': 'Herengracht 416', 'postcode': '1017BZ', 'city': 'Amsterdam', 'country': 'NL'}
def setUp(self): self.init_projects() self.phase_campaign = ProjectPhase.objects.get(slug='campaign') self.country = CountryFactory() self.projects = [] for amount in [500, 100, 1500, 300, 200]: self.projects.append(OnePercentProjectFactory.create(amount_asked=amount, status=self.phase_campaign)) # Some donations to get the popularity going # Top 3 after this should be projects 4, 3, 0 order = OrderFactory() DonationFactory(order=order, project=self.projects[3], amount=10) DonationFactory(order=order, project=self.projects[3], amount=100) DonationFactory(order=order, project=self.projects[3], amount=20) DonationFactory(order=order, project=self.projects[4], amount=10) DonationFactory(order=order, project=self.projects[4], amount=70) DonationFactory(order=order, project=self.projects[0], amount=10) order.locked() order.succeeded() # Since we force the transitions update_amounts isn't triggered by signal, so we run it manually here. for project in self.projects: project.update_amounts() self.user1 = BlueBottleUserFactory.create() self.user2 = BlueBottleUserFactory.create()
def test_homepage_with_campaign(self): now = timezone.now() start, end = now - timedelta(hours=8), now + timedelta(weeks=1) Campaign.objects.create(start=start, end=end, title='FooBarCaMpAIgN', target=100000) # make a donation before the campaign starts order = Order.objects.create(user=self.user, order_number=1) Donation.objects.create(amount=1000, user=self.user, project=self.project, status=DonationStatuses.paid, order=order, ready=now-timedelta(days=1)) # and a couple of donations in campaign, for a total amount of 2000+3000+4000 cents = 90 euros for i in range(1,4): amount = (i+1)*1000 Donation.objects.create(amount=amount, user=self.user, project=self.project, status=DonationStatuses.paid, order=order, ready=now+timedelta(days=i)) # and one after the campaign Donation.objects.create(amount=5000, user=self.user, project=self.project, status=DonationStatuses.paid, order=order, ready=now+timedelta(weeks=2)) self.project_with_fundraiser = OnePercentProjectFactory.create(amount_asked=50000) self.project_with_fundraiser.is_campaign = True self.project_with_fundraiser.save() self.fundraiser = FundRaiserFactory.create(owner=self.user, project=self.project_with_fundraiser) response = self.client.get(self.homepage_url) self.assertNotEqual(None, response.data['campaign']) self.assertEqual(response.data['campaign']['amount_donated'], '90.00')
def setUp(self): self.init_projects() self.some_project = OnePercentProjectFactory.create(slug='someproject') self.another_project = OnePercentProjectFactory.create(slug='anotherproject') self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create() self.some_photo = 'apps/projects/test_images/loading.gif' self.another_photo = 'apps/projects/test_images/upload.png' self.media_wallposts_url = reverse('media_wallpost_list') self.media_wallpost_photos_url = reverse('mediawallpost_photo_list') self.text_wallposts_url = reverse('text_wallpost_list') self.wallposts_url = reverse('wallpost_list')
def setUp(self): """ Create two project instances """ self.init_projects() self.campaign_phase = ProjectPhase.objects.get(slug='campaign') self.some_project = OnePercentProjectFactory.create(amount_asked=50000, status=self.campaign_phase) self.another_project = OnePercentProjectFactory.create(amount_asked=75000, status=self.campaign_phase) self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create() self.fundraiser = FundRaiserFactory.create(owner=self.some_user, project=self.some_project) self.fundraiser2 = FundRaiserFactory.create(owner=self.another_user, project=self.another_project) self.current_donations_url = reverse('fund-order-current-donation-list') self.current_order_url = reverse('fund-order-current-detail') self.fundraiser_list_url = reverse('fundraiser-list') self.fundraiser_url = reverse('fundraiser-detail', kwargs={'pk': self.fundraiser.pk}) self.fundraiser2_url = reverse('fundraiser-detail', kwargs={'pk': self.fundraiser2.pk})
def test_homepage_with_campaign(self): start, end = timezone.now() - timedelta(hours=8), timezone.now() + timedelta(weeks=1) Campaign.objects.create(start=start, end=end, title='FooBarCaMpAIgN', target=100000) self.project_with_fundraiser = OnePercentProjectFactory.create(amount_asked=50000) self.project_with_fundraiser.is_campaign = True self.project_with_fundraiser.save() self.fundraiser = FundRaiserFactory.create(owner=self.user, project=self.project_with_fundraiser) self.visit_homepage() self.assertTrue(self.browser.is_text_present('OUR CRAZY FUND-RACERS'))
def setUp(self): """ Create initial data. """ self.project_with_fundraiser = OnePercentProjectFactory.create(amount_asked=50000) self.project_without_fundraiser = OnePercentProjectFactory.create(amount_asked=75000) self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create() self.fundraiser = FundRaiserFactory.create(owner=self.some_user, project=self.project_with_fundraiser) self.project_with_fundraiser_url = '/projects/{0}'.format(self.project_with_fundraiser.slug) self.project_without_fundraiser_url = '/projects/{0}'.format(self.project_without_fundraiser.slug) self.fundraiser_url = '/fundraisers/{0}'.format(self.fundraiser.pk) self.new_fundraiser_url = '/project/{0}/new-fundraiser'.format(self.project_without_fundraiser.slug) # Force reload by visiting the home self.visit_path('')
def setUp(self): self.init_projects() self.user = BlueBottleUserFactory.create() campaign_phase = ProjectPhase.objects.get(name='Campaign') for title in [u'Mobile payments for everyone!', u'Schools for children', u'Women first']: project = OnePercentProjectFactory.create(title=title, owner=self.user, amount_asked=1000, status=campaign_phase) self.login(self.user.email, 'testing')
def setUp(self): self.init_projects() self.phase_campaign = ProjectPhase.objects.get(slug='campaign') self.country = CountryFactory() self.some_project = OnePercentProjectFactory.create(amount_asked=500, status=self.phase_campaign) self.another_project = OnePercentProjectFactory.create(amount_asked=750, status=self.phase_campaign) self.some_user = BlueBottleUserFactory.create() self.some_user_token = "JWT {0}".format(self.some_user.get_jwt_token()) self.another_user = BlueBottleUserFactory.create() self.another_user_token = "JWT {0}".format(self.another_user.get_jwt_token()) self.monthly_donation_url = reverse('monthly-donation-list') self.monthly_donation_project_url = reverse('monthly-donation-project-list') self.monthly_profile = {'iban': 'NL13TEST0123456789', 'bic': 'TESTNL2A', 'name': 'Nijntje het Konijntje', 'city': 'Amsterdam', 'country': self.country.id, 'amount': 50}
def test_change_status_to_campaign(self): """ Changing project status to campaign sets the campaign_started field """ project = OnePercentProjectFactory.create(title="testproject", slug="testproject", status=ProjectPhase.objects.get(slug='plan-new')) self.assertTrue(project.date_submitted is None) self.assertTrue(project.campaign_started is None) project.status = ProjectPhase.objects.get(slug="campaign") project.save() self.assertTrue(project.campaign_started is not None)
def setUp(self): self.init_projects() self.projects = dict([(slugify(title), title) for title in [ u'Mobile payments for everyone 2!', u'Schools for children 2', u'Women first 2' ]]) self.user = BlueBottleUserFactory.create(email='*****@*****.**', primary_language='en') campaign_phase = ProjectPhase.objects.get(slug='campaign') for slug, title in self.projects.items(): project = OnePercentProjectFactory.create(title=title, slug=slug, owner=self.user, amount_asked=1000, status=campaign_phase)
def setUp(self): self.init_projects() # Create and activate user. self.user = BlueBottleUserFactory.create(email='*****@*****.**', primary_language='en') title = u'Mobile payments for everyone 2!' self.project = OnePercentProjectFactory.create(title=title, slug=slugify(title), amount_asked=100000, owner=self.user) self.project.status = ProjectPhase.objects.get(slug='campaign') self.project.is_campaign = True self.project.money_donated = 0 self.project.save() self.homepage_url = '/api/homepage/en'
def setUp(self): self.init_projects() self.phase_campaign = ProjectPhase.objects.get(slug='campaign') self.some_project = OnePercentProjectFactory.create(amount_asked=500, status=self.phase_campaign) self.another_project = OnePercentProjectFactory.create(amount_asked=750, status=self.phase_campaign) self.some_user = BlueBottleUserFactory.create() self.another_user = BlueBottleUserFactory.create() self.recurring_order_url_base = '/api/fund/recurring/orders/' self.recurring_donation_url_base = '/api/fund/recurring/donations/' self.recurring_payment_url_base = '/api/fund/recurring/directdebitpayments/' self.some_profile = {'first_name': 'Nijntje', 'last_name': 'het Konijnje', 'email': '*****@*****.**', 'address': 'Dam 1', 'postal_code': '1001AM', 'city': 'Amsterdam', 'country': 'NL', 'account': '123456789'}
def setUp(self): self.init_projects() self.projects = dict([(slugify(title), title) for title in [ u'Mobile payments for everyone 2!', u'Schools for children 2', u'Women first 2' ]]) User = get_user_model() # Create and activate user. self.user = BlueBottleUserFactory.create(email='*****@*****.**', primary_language='en') for slug, title in self.projects.items(): project = OnePercentProjectFactory.create(title=title, slug=slug, amount_asked=100000, owner=self.user) project.amount_donated = 0 project.save()
def _create_donation(self, user=None, amount=None, project=None, status=DonationStatuses.new): """ Helper method for creating donations.""" if not project: project = OnePercentProjectFactory.create() project.save() if not user: user = BlueBottleUserFactory.create() if not amount: amount = Decimal('10.00') order = Order.objects.create() donation = Donation.objects.create(user=user, amount=amount, status=status, project=project, order=order) return donation
def test_campaign_project_got_funded_allow_overfunding(self): """ A project gets funded and allows overfunding. The project status does not change, the campaign_funded field is populated but the campaign_ended field is not populated """ project = OnePercentProjectFactory.create(title="testproject", slug="testproject", status=ProjectPhase.objects.get(slug="campaign"), amount_asked=100) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is None) donation = DonationFactory.create(user=self.user, project=project, amount=10000) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is not None) self.assertEquals(project.status, ProjectPhase.objects.get(slug="campaign"))
def test_campaign_project_not_funded(self): """ A donation is made but the project is not funded. The status doesn't change and neither the campaign_ended or campaign_funded are populated. """ project = OnePercentProjectFactory.create(title="testproject", slug="testproject", status=ProjectPhase.objects.get(slug="campaign"), amount_asked=100) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is None) donation = DonationFactory.create(user=self.user, project=project, amount=99) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is None) self.assertEquals(project.status, ProjectPhase.objects.get(slug="campaign"))
def setUp(self): self.init_projects() self.projects = dict([(slugify(title), title) for title in [ u'Women first', u'Mobile payments for everyone!', u'Schools for children ' ]]) for slug, title in self.projects.items(): project = OnePercentProjectFactory.create(title=title, slug=slug) project.status = ProjectPhase.objects.get(slug="campaign") project.save() self.some_project = project self.project_list_url = '{0}/en/?_escaped_fragment_=/projects'.format(self.live_server_url) self.project_url = '{0}/en/?_escaped_fragment_=/projects/{1}'.format(self.live_server_url, self.some_project.slug) self.crawl_client = self.client_class(SERVER_NAME=self.server_thread.host, SERVER_PORT=self.server_thread.port)
def setUp(self): self.init_projects() self.skill = SkillFactory.create() self.project = OnePercentProjectFactory.create() self.project.owner = BlueBottleUserFactory.create() self.project.save() self.login(username=self.project.owner.email, password='******') self.task1 = { 'title': 'Hora est labora', 'description': 'In nec convallis felis. Quisque iaculis augue nec eros convallis, non rutrum velit mattis.', 'location': 'Vestibulum nisi dui', 'end_goal': 'World peace', 'people_needed': 8, 'time_needed': 4, 'skill': self.skill.id }
def test_campaign_project_got_funded_no_overfunding(self): """ A project gets a donation and gets funded. The project does not allow overfunding so the status changes, the campaign funded field is populated and campaign_ended field is populated """ organization = OrganizationFactory.create() project = OnePercentProjectFactory.create(title="testproject", slug="testproject", organization=organization, status=ProjectPhase.objects.get(slug="campaign"), amount_asked=100, allow_overfunding=False) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is None) donation = DonationFactory.create(user=self.user, project=project, amount=10000) loaded_project = Project.objects.get(pk=project.pk)
def test_project_expired(self): """ The deadline of a project expires but its not funded. The status changes, the campaign_ended field is populated with the deadline, the campaign_funded field is empty. """ project = OnePercentProjectFactory.create(title="testproject", slug="testproject", status=ProjectPhase.objects.get(slug="campaign"), amount_asked=100) self.assertTrue(project.campaign_ended is None) self.assertTrue(project.campaign_funded is None) project.deadline = timezone.now() - timedelta(days=10) project.save() self.assertEquals(project.campaign_ended, project.deadline) self.assertTrue(project.campaign_funded is None) self.assertEquals(project.status, ProjectPhase.objects.get(slug="done-incomplete"))
def setUp(self): self.init_projects() super(ProjectWallPostSeleniumTests, self).setUp() self.user = BlueBottleUserFactory.create() owner = BlueBottleUserFactory.create() self.project = OnePercentProjectFactory.create(owner=owner) self.project.save() self.post1 = { 'text': 'Ziltch emit doler omit et dametis!' } self.post2 = { 'title': 'Hora est', 'text': 'Rolum dohar in amuet redicer...' }
def setUp(self): super(PayoutTestCase, self).setUp() # Set up a project ready for payout organization = OrganizationFactory.create() organization.save() self.project = OnePercentProjectFactory.create(organization=organization, amount_asked=50) # Update phase to campaign. self.project.status = ProjectPhase.objects.get(slug='campaign') self.project.save() self.order = OrderFactory.create() self.donation = DonationFactory.create( project=self.project, order=self.order, amount=60 ) self.donation.save()
from ..choices import PayoutRules, PayoutLineStatuses from onepercentclub.tests.factory_models.donation_factories import DonationFactory from onepercentclub.tests.factory_models.project_factories import OnePercentProjectFactory from onepercentclub.tests.utils import OnePercentTestCase from ..utils import date_timezone_aware class PayoutTestCase(SepaXMLTestMixin, OnePercentTestCase): """ Testcase for Payouts. """ def setUp(self): """ Setup a project ready for payout. """ self.init_projects() self.project = OnePercentProjectFactory.create() # Update phase to campaign. self.project.status = ProjectPhase.objects.get(slug='campaign') self.project.save() self.donation = DonationFactory.create( project=self.project, voucher=None, donation_type=Donation.DonationTypes.one_off, amount=1500 ) super(PayoutTestCase, self).setUp() def test_save(self):
def setUp(self): self.project_owner = BlueBottleUserFactory.create(email='*****@*****.**', primary_language='en') self.project = OnePercentProjectFactory.create(amount_asked=50000, owner=self.project_owner) self.user = BlueBottleUserFactory.create(first_name='Jane')