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)
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)
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)
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)
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)
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()
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)