def setUpTestData(cls): cls.survey = SurveyFactory.create() cls.question = SurveyQuestionFactory.create(survey=cls.survey, level=1) cls.empty_survey = SurveyFactory.create() cls.grantee = UserFactory.create() cls.grantor = UserFactory.create() cls.other = UserFactory.create()
def test_display_by_options(self): dep = DepartmentFactory() su = SurveyFactory() se = SectionFactory(survey=su) trigger_question = QuestionFactory(parent_section=se, text='trigger') last_option = None first_option = None for opi in range(4): last_option = OptionFactory(question=trigger_question) if not first_option: first_option = last_option shown_element = QuestionFactory(parent_section=se, text='show') dl = DisplayByOptionsFactory(trigger_question=trigger_question, shown_element=shown_element) dl.options.add(last_option) # not yet triggered - no answer has been provided assert (not shown_element.triggered(dep)) ans = Answer.objects.create(question=trigger_question, department=dep) ans.options.add(last_option) # now there is an answer including the option, so the shown_element is triggered assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different option, and the Q is again not triggered dl.options.clear() dl.options.add(first_option) assert (not shown_element.triggered(dep))
def setUp(self): self.user = UserFactory.create(password=self.password) assign_role(self.user, 'admin') self.survey = SurveyFactory.create() self.section1_1 = SurveySectionFactory.create(number=1, ) self.section1_2 = SurveySectionFactory.create(number=2, ) self.section1_3 = SurveySectionFactory.create(number=3, ) self.q1 = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section1_1) self.q2 = SurveyQuestionFactory.create(survey=self.survey, level=2, section=self.section1_1) self.q3 = SurveyQuestionFactory.create(survey=self.survey, level=2, section=self.section1_1) self.q4 = SurveyQuestionFactory.create(survey=self.survey, level=3, section=self.section1_2) self.q5 = SurveyQuestionFactory.create(survey=self.survey, level=4, section=self.section1_3) package_invitation_allowed = 10 self.package = AssessmentPackageFactory.create( name="10 invitations Package", number_included=package_invitation_allowed, price=900.00) self.login(self.user.email, self.password) self.assertIn(self.title, self.browser.title)
def test_display_by_value_conditions(self): dep = DepartmentFactory() su = SurveyFactory() se = SectionFactory(survey=su) trigger_question = QuestionFactory(parent_section=se, text='trigger') shown_element = QuestionFactory(parent_section=se, text='show') dl = DisplayByValueFactory(trigger_question=trigger_question, shown_element=shown_element, value='42', condition='==') # not yet triggered - no answer assert (not shown_element.triggered(dep)) ans = Answer.objects.create(question=trigger_question, department=dep) ans.value = Value.objects.create(text='42') ans.save() # now there is an answer including the option, so the shown_element is triggered assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different value, and the Q is again not triggered dl.value = '43' dl.save() assert (not shown_element.triggered(dep)) # now let's change the dl, to trigger on a different condition dl.condition = '<=' dl.save() assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different condition dl.condition = '>=' dl.save() ans.value = Value.objects.create(text='44') ans.save() assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different condition dl.condition = 'contains' dl.value = '4' dl.save() assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different condition dl.condition = 'containsNoCase' dl.value = 'abc' dl.save() ans.value = Value.objects.create(text='XXYABCDEFG') ans.save() assert (shown_element.triggered(dep)) # now let's change the dl, to trigger on a different condition dl.condition = 'containsNoCase' dl.value = 'abc' dl.save() ans.value = Value.objects.create(text='PPPPPP') ans.save() assert (not shown_element.triggered(dep))
def test_attach_document_from_previously_saved_in_library(self): self.survey = SurveyFactory.create() self.section1_1 = SurveySectionFactory.create(number=1, ) self.q1 = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section1_1) self.q1.upload_type = 'policy' self.q1.save() library_document_name = "library_document" DocumentFactory.create( name=library_document_name, organisation=self.user.organisation, ) self.click_and_wait_for_page_load( self.browser.find_element_by_link_text("Assessments"), ) self.click_and_wait_for_page_load( self.browser.find_element_by_link_text("Start assessment"), ) bronze_level = self.browser_wait.until( lambda browser: self.browser.find_element_by_id("level_1")) question_area = bronze_level.find_element_by_class_name( "js-answer-value") qs1 = question_area.find_elements_by_css_selector( "label[class='ui-check']") self.click_and_wait_for_page_load(qs1[0]) with self.wait_for_page_load(): self.browser.find_element_by_css_selector( "span[id*='attach_document']").click() attach_doc = self.browser_wait.until( lambda browser: browser.find_element_by_css_selector( "li[id*='attach_document-result']")) attach_doc.click() doc_explanation_text = self.browser_wait.until( lambda browser: self.browser.find_element_by_css_selector( "textarea[id*='attach_explanation']")) doc_explanation_input = "Test for Survey." doc_explanation_text.send_keys(doc_explanation_input) attach = self.browser.find_element_by_css_selector( "button[value='attach_document']") self.click_and_wait_for_page_load(attach) self.browser_wait.until( EC.visibility_of(self.browser.find_element_by_tag_name("button"))) # View Summary save = self.browser.find_element_by_link_text("View summary") self.click_and_wait_for_page_load(save) db_survey = SurveyAnswerDocument.objects.get() self.assertEqual(db_survey.document.name, library_document_name)
def test_view_submitted_assessment_report_by_grantee(self): self.grantee = UserFactory.create(password=self.password) assign_role(self.grantee, "admin") assign_role(self.user, "admin") self.survey = SurveyFactory.create() self.survey_response = SurveyResponseFactory.create( organisation=self.grantee.organisation, survey=self.survey, level=1, submitted=timezone.now()) self.section = SurveySectionFactory.create(number=1, ) self.question = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section) self.answer = SurveyAnswerFactory.create(response=self.survey_response, question=self.question) self.invitation = InvitationFactory.create( survey=self.survey, grantee=self.survey_response.organisation, status=3, accepted=True, grantor=self.user.organisation) grantor_org = self.user.organisation order = OrderFactory.create(organisation=grantor_org, status=Order.STATUS_APPROVED) SubscriptionFactory.create(order=order) package = AssessmentPackageFactory.create(number_included=1, price=900.00) AssessmentPurchaseFactory.create( package=package, order=order, order__organisation=grantor_org, order__status=Order.STATUS_APPROVED, number_included=1, ) self.login(self.user.email, self.password) self.click_and_wait_for_page_load( self.browser.find_element_by_link_text("Invitations"), ) self.assertTrue(EC.presence_of_element_located((By.LINK_TEXT, "View"))) view_submitted_survey = self.browser.find_element_by_link_text("View") self.click_and_wait_for_page_load(view_submitted_survey) self.assertTrue( self.browser_wait.until( lambda browser: browser.find_element_by_link_text( "Print report").is_enabled())) completion_percentage = self.browser_wait.until( lambda browser: self.browser.find_element_by_css_selector( ".number._700")) report_header = self.browser.find_element_by_tag_name("h2").text self.assertEquals(completion_percentage.text, "100%") self.assertIn("Full report", report_header)
def test_upload_new_document_for_assessment_survey_with_bronze_tier(self): self.survey = SurveyFactory.create() self.section1_1 = SurveySectionFactory.create(number=1, ) self.q1 = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section1_1) self.q1.upload_type = 'policy' self.q1.save() self.click_and_wait_for_page_load( self.browser.find_element_by_link_text("Assessments"), ) start_assessment = self.browser_wait.until( lambda browser: browser.find_element_by_link_text( "Start assessment")) self.click_and_wait_for_page_load(start_assessment) bronze_level = self.browser_wait.until( lambda browser: self.browser.find_element_by_id("level_1")) question_area = bronze_level.find_element_by_class_name( "js-answer-value") qs1 = question_area.find_elements_by_css_selector( "label[class='ui-check']") self.click_and_wait_for_page_load(qs1[0]) self.browser.find_element_by_link_text("Upload new document").click() upload_file = self.browser.find_element_by_css_selector( "input[id*='upload_file']") upload_file.send_keys(UPLOAD_FILE_PATH) upload_file_name = self.browser.find_element_by_css_selector( "input[id*='upload_name']") self.browser.execute_script( "return arguments[0].scrollIntoView();", upload_file_name, ) file_name = "Test file" upload_file_name.send_keys(file_name) upload_file_explanation = self.browser.find_element_by_css_selector( "textarea[id*='upload_explanation']") upload_file_explanation.send_keys("Upload test file for testing..") upload_button = self.browser.find_element_by_css_selector( "button[value='upload_document']") self.click_and_wait_for_page_load(upload_button) # View Summary save = self.browser.find_element_by_link_text("View summary") self.click_and_wait_for_page_load(save) db_doc = SurveyAnswerDocument.objects.get() self.assertEqual(db_doc.document.name, file_name) db_doc.document.file.delete()
def setUp(self): self.user = UserFactory.create(password=self.password) assign_role(self.user, 'manager') self.survey = SurveyFactory.create() self.section4_1 = SurveySectionFactory.create(number=1, ) self.section4_2 = SurveySectionFactory.create(number=2, ) self.section4_3 = SurveySectionFactory.create(number=3, ) self.q1 = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section4_1) self.q2 = SurveyQuestionFactory.create(survey=self.survey, level=2, section=self.section4_1) self.q3 = SurveyQuestionFactory.create(survey=self.survey, level=2, section=self.section4_1) self.q4 = SurveyQuestionFactory.create(survey=self.survey, level=3, section=self.section4_2) self.q5 = SurveyQuestionFactory.create(survey=self.survey, level=4, section=self.section4_3) self.grantor_org = self.user.organisation order = OrderFactory.create(organisation=self.grantor_org, status=Order.STATUS_APPROVED) SubscriptionFactory.create(order=order) package = AssessmentPackageFactory.create(number_included=1, price=900.00) AssessmentPurchaseFactory.create( package=package, order=order, order__organisation=self.grantor_org, order__status=Order.STATUS_APPROVED, number_included=10, ) self.login(self.user.email, self.password) self.assertIn(self.title, self.browser.title)
def test_user_cannot_view_assessments_with_expired_subscription(self): self.grantor_org = self.user.organisation order = OrderFactory.create(organisation=self.grantor_org, status=Order.STATUS_APPROVED) current_date = date.today() SubscriptionFactory.create(order=order, end_date=current_date) self.grantee = UserFactory.create(password=self.password) assign_role(self.user, "admin") self.survey = SurveyFactory.create() self.survey_response = SurveyResponseFactory.create( organisation=self.grantee.organisation, survey=self.survey, level=1, submitted=timezone.now()) self.section = SurveySectionFactory.create(number=1, ) self.question = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section) self.answer = SurveyAnswerFactory.create(response=self.survey_response, question=self.question) self.invitation = InvitationFactory.create( survey=self.survey, grantee=self.survey_response.organisation, status=3, accepted=True, grantor=self.user.organisation) with self.wait_for_page_load(): self.browser.find_element_by_link_text("Assessments").click() renew_subscription_field = self.browser.find_element_by_link_text( "Renew subscription") self.assertTrue(renew_subscription_field.is_enabled()) assessment_notification = self.browser.find_element_by_class_name( "notification-header.pjax-update").text view_assessments_info_text = "Your subscription expires in 0 days" self.assertIn(view_assessments_info_text, assessment_notification)
def test_user_can_view_assessments_with_active_subscription(self): self.grantor_org = self.user.organisation order = OrderFactory.create(organisation=self.grantor_org, status=Order.STATUS_APPROVED) print("Order is", order) SubscriptionFactory.create(order=order) self.grantee = UserFactory.create(password=self.password) assign_role(self.user, "admin") self.survey = SurveyFactory.create() self.survey_response = SurveyResponseFactory.create( organisation=self.grantee.organisation, survey=self.survey, level=1, submitted=timezone.now()) print("Survey response is", self.survey_response) self.section = SurveySectionFactory.create(number=1, ) print("Section is", self.section) self.question = SurveyQuestionFactory.create(survey=self.survey, level=1, section=self.section) print("Queston is", self.question) self.answer = SurveyAnswerFactory.create(response=self.survey_response, question=self.question) print("Answer is", self.answer) self.invitation = InvitationFactory.create( survey=self.survey, grantee=self.survey_response.organisation, status=3, accepted=True, grantor=self.user.organisation) print("Invitation is", self.invitation) with self.wait_for_page_load(): self.browser.find_element_by_link_text("Assessments").click() import time time.sleep(10) self.assertTrue(EC.presence_of_element_located((By.LINK_TEXT, "View"))) view_submitted_survey = self.browser.find_element_by_link_text("View") self.assertTrue(view_submitted_survey.is_enabled())
def setUp(self): self.user = UserFactory.create(password=self.password) assign_role(self.user, 'admin') self.browser.get(self.live_server_url) self.grantor = self.user.organisation new_order = OrderFactory.create(organisation=self.grantor, status=Order.STATUS_APPROVED) SubscriptionFactory.create(order=new_order, price=1500.00) new_package = AssessmentPackageFactory.create(name=str(self.user), number_included=2, price=900.00) self.assess = AssessmentPurchaseFactory.create(order=new_order, package=new_package, number_included=2, price=900.00) self.user1 = UserFactory.create(password=self.password) self.grantee = self.user1.organisation self.survey_list = SurveyFactory.create(name="Survey 0")
def survey() -> Survey: return SurveyFactory()
def setUpTestData(cls): cls.user = UserFactory() cls.survey = SurveyFactory.create() cls.question = SurveyQuestionFactory.create(survey=cls.survey, level=1)