Beispiel #1
0
    def test_create_call(self):
        funding_instrument = database_population.create_funding_instrument()
        career_stage = database_population.create_career_stage()

        call_data = dict_to_multivalue_dict({
            'call_open_date':
            '01-01-2020 10:00',
            'submission_deadline':
            (datetime.datetime.now() +
             datetime.timedelta(days=10)).strftime('%d-%m-%Y 12:00'),
            'finance_year':
            2020,
            'long_name':
            'GreenLAnd Circumnavigation Expedition 2',
            'description':
            'Cool, cold',
            'budget_maximum':
            '100000',
        })

        call_data.setlist(
            'budget_categories',
            [self._budget_categories[0].id, self._budget_categories[1].id])
        call_data.setlist('funding_instrument', [funding_instrument.id])
        call_data.setlist('career_stages', [career_stage.id])

        print('HERE')
        call_form = CallForm(data=call_data)
        print('ERRORS')
        print(call_form.errors)
        self.assertTrue(call_form.is_valid())
        new_call = call_form.save()

        self.assertTrue(new_call.id)
Beispiel #2
0
    def test_post(self):
        data = dict_to_multivalue_dict({
            'call_evaluation_form-call':
            self._proposal.call.id,
            'call_evaluation_form-panel_date':
            '16-03-2020',
            'call_evaluation_form-evaluation_sheet': [''],
            'call_evaluation_form-reviewers': [self._reviewer.id],
            'call_evaluation_form-criteria': [self._criteria[0].id],
            'save':
            'Save Call Evaluation'
        })

        self.assertEqual(CallEvaluation.objects.all().count(), 0)

        response = self._client_management.post(
            reverse('logged-call-evaluation-add') +
            f'?call={self._proposal.call.id}',
            data=data)

        call_evaluation = self._proposal.call.callevaluation

        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            response.url,
            reverse('logged-call-evaluation-detail',
                    kwargs={'pk': call_evaluation.id}))
        self.assertEqual(CallEvaluation.objects.all().count(), 1)
        self.assertEqual(call_evaluation.panel_date, date(2020, 3, 16))
    def test_post(self):
        # Lay Summary Type needs to exist because during the invoice checking it does
        # a lookup for the settings.LAY_SUMMARY_ORIGINAL
        lay_summary_type = LaySummaryType.objects.create(name=settings.LAY_SUMMARY_ORIGINAL,
                                                         description='Original')

        data = dict_to_multivalue_dict({'FORM_SET-TOTAL_FORMS': 1,
                                        'FORM_SET-INITIAL_FORMS': 0,
                                        'FORM_SET-MIN_NUM_FORMS': 1,
                                        'FORM_SET-MAX_NUM_FORMS': 1000,
                                        'FORM_SET-0-project': self._project.id,
                                        'FORM_SET-0-id': '',
                                        'FORM_SET-0-DELETE': '',
                                        'FORM_SET-0-can_be_deleted': 0,
                                        'FORM_SET-0-due_date': date(2020, 5, 14).strftime('%d-%m-%Y'),
                                        'FORM_SET-0-lay_summary_type': lay_summary_type.id
                                        })

        self.assertEqual(LaySummary.objects.all().count(), 0)
        response = self._client_management.post(
            reverse('logged-grant_management-lay_summaries-update', kwargs={'project': self._project.id}),
            data=data
        )
        self.assertEqual(response.status_code, 302)
        self.assertEqual(LaySummary.objects.all().count(), 1)
Beispiel #4
0
    def test_post(self):
        self.assertEqual(self._proposal.eligibility,
                         Proposal.ELIGIBILITYNOTCHECKED)

        # Makes self._proposal not-eligible
        data = dict_to_multivalue_dict({
            'eligibility_decision_form-eligible': False,
            'eligibility_decision_form-comment':
            'Not in the scope of the call',
            'save': 'Save Eligibility'
        })

        response = self._client_management.post(reverse(
            'logged-proposal-eligibility-update',
            kwargs={'pk': self._proposal.id}),
                                                data=data)

        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            response.url,
            reverse('logged-call-evaluation-proposal-detail',
                    kwargs={'pk': self._proposal.id}))

        self._proposal.refresh_from_db()
        self.assertEqual(self._proposal.eligibility, Proposal.NOTELIGIBLE)
        self.assertEqual(self._proposal.eligibility_comment,
                         'Not in the scope of the call')

        # Makes self._proposal eligible
        data = dict_to_multivalue_dict({
            'eligibility_decision_form-eligible': True,
            'eligibility_decision_form-comment': 'Good proposal!',
            'save': 'Save Eligibility'
        })
        response = self._client_management.post(reverse(
            'logged-proposal-eligibility-update',
            kwargs={'pk': self._proposal.id}),
                                                data=data)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            response.url,
            reverse('logged-call-evaluation-proposal-detail',
                    kwargs={'pk': self._proposal.id}))

        self._proposal.refresh_from_db()
        self.assertEqual(self._proposal.eligibility, Proposal.ELIGIBLE)
        self.assertEqual(self._proposal.eligibility_comment, 'Good proposal!')
    def test_no_details_with_amount(self):
        budget_item_data = dict_to_multivalue_dict({
            'category':
            self._budget_categories[0].id,
            'amount':
            '100'
        })

        budget_item_form = BudgetItemForm(data=budget_item_data)

        self.assertFalse(budget_item_form.is_valid())
        self.assertIn('details', budget_item_form.errors)
    def test_create_call_part(self):
        call_part_data = dict_to_multivalue_dict(
            {'call': self._call,
             'title': 'Weather information',
             'introductory_text': 'Please explain weather information that might be important during the expedition'
             })

        call_part_form = CallPartForm(data=call_part_data, call_pk=self._call.pk, instance=None)
        self.assertTrue(call_part_form.is_valid())
        new_call_part = call_part_form.save()

        self.assertTrue(new_call_part.id)
        self.assertTrue(new_call_part.order, 10)
    def test_valid_budget(self):
        budget_item_data = dict_to_multivalue_dict({
            'category':
            self._budget_categories[0].id,
            'details':
            'Trips',
            'amount':
            100
        })

        budget_item_form = BudgetItemForm(data=budget_item_data)

        self.assertTrue(budget_item_form.is_valid())
    def test_invalid_amount(self):
        budget_item_data = dict_to_multivalue_dict({
            'category':
            self._budget_categories[0].id,
            'details':
            'Trips',
            'amount':
            'Some Invalid Number'
        })

        budget_item_form = BudgetItemForm(data=budget_item_data)

        self.assertFalse(budget_item_form.is_valid())
        self.assertIn('amount', budget_item_form.errors)
Beispiel #9
0
    def test_proposal_evaluation_create(self):
        reviewer = database_population.create_reviewer()

        data = dict_to_multivalue_dict({
            'proposal_evaluation_form-proposal':
            self._proposal.id,
            'proposal_evaluation_form-reviewers': [reviewer.id]
        })

        response = self._client_management.post(reverse(
            'logged-proposal-evaluation-update',
            kwargs={'pk': self._proposal.id}),
                                                data=data)

        self.assertEqual(response.status_code, 200)
Beispiel #10
0
    def test_create_call_part(self):
        call_part_file_data = dict_to_multivalue_dict({
            'name': 'form_for_logistics',
            'description': 'Please download the form and upload it later',
            'call_part': self._call_part
        })

        files = {'file': SimpleUploadedFile('form_for_logistics.docx',
                                            b'This is a good form')}

        call_part_file = CallPartFileForm(data=call_part_file_data, files=files, call_part_pk=self._call_part.pk,
                                          instance=None)
        self.assertTrue(call_part_file.is_valid())
        new_call_part = call_part_file.save()

        self.assertTrue(new_call_part.id)
        self.assertEqual(new_call_part.order, 10)
Beispiel #11
0
    def test_post_permission_denied(self):
        reviewer_client = database_population.create_reviewer_logged_client()

        data = dict_to_multivalue_dict({
            'call_evaluation_form-call':
            self._proposal.call.id,
            'call_evaluation_form-panel_date':
            '16-03-2020',
            'call_evaluation_form-evaluation_sheet': [''],
            'save':
            'Save Call Evaluation'
        })

        response = reviewer_client.post(reverse('logged-call-evaluation-add') +
                                        f'?call={self._proposal.call.id}',
                                        data=data)

        self.assertEqual(response.status_code, 302)
        self.assertTrue(response.url.startswith(reverse('accounts-login')))
    def test_post_valid(self):
        data = dict_to_multivalue_dict({'FORM_SET-TOTAL_FORMS': 1,
                                        'FORM_SET-INITIAL_FORMS': 0,
                                        'FORM_SET-MIN_NUM_FORMS': 1,
                                        'FORM_SET-MAX_NUM_FORMS': 1000,
                                        'FORM_SET-0-project': self._project.id,
                                        'FORM_SET-0-id': '',
                                        'FORM_SET-0-DELETE': '',
                                        'FORM_SET-0-can_be_deleted': 0,
                                        'FORM_SET-0-due_date': date(2020, 5, 14).strftime('%d-%m-%Y'),
                                        'FORM_SET-0-amount': 50
                                        })

        self.assertEqual(Installment.objects.all().count(), 0)
        response = self._client_management.post(
            reverse('logged-grant_management-installments-update', kwargs={'project': self._project.id}),
            data=data
        )
        self.assertEqual(response.status_code, 302)
        self.assertEqual(Installment.objects.all().count(), 1)
    def test_proposal_form(self):
        data = {'title': 'Collect algae around Greenland',
                'start_date': self._call.submission_deadline + timedelta(days=10),
                'end_date': self._call.submission_deadline + timedelta(days=20),
                'duration_months': '3',
                'call_id': self._call.id}

        data = dict_to_multivalue_dict(data)
        data.setlist('geographical_areas', [self._geographical_areas[0]])

        data.setlist('keywords', self._keywords)

        proposal_form = ProposalForm(call=self._call,
                                     data=data)

        self.assertTrue(proposal_form.is_valid())

        proposal = proposal_form.save(commit=False)
        proposal.applicant = create_person_position()
        proposal.proposal_status = self._proposal_status_submitted
        proposal.save()
Beispiel #14
0
    def test_deadline_too_early(self):
        call_data = dict_to_multivalue_dict({
            'call_open_date': '15-01-2022 10:00',
            'submission_deadline': '01-01-2022 12:00',
            'long_name': 'GreenLAnd Circumnavigation Expedition 2',
            'description': 'Cool, cold',
            'budget_maximum': '100000',
        })

        call_data.setlist(
            'budget_categories',
            [self._budget_categories[0].id, self._budget_categories[1].id])

        call_data.setlist('template_questions', [self._template_questions[0]])

        call_form = CallForm(data=call_data)
        self.assertFalse(call_form.is_valid())

        self.assertEqual(
            call_form.errors['call_open_date'],
            ['Call open date needs to be before the submission deadline'])
    def test_create_call_part(self):
        call_question = database_population.create_call_question(
            self._call_part)

        new_question_text = 'How far will you walk - edited?'

        call_question_data = dict_to_multivalue_dict({
            'call': self._call,
            'call_part': self._call_part,
            'question_text': new_question_text,
            'question_description': 'In meters please',
            'order': 10
        })

        call_question_form = CallQuestionForm(data=call_question_data,
                                              instance=call_question,
                                              call_part_pk=self._call_part.pk)
        self.assertTrue(call_question_form.is_valid())
        call_question = call_question_form.save()

        call_question.refresh_from_db()

        self.assertEqual(call_question.question_text, new_question_text)