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()
示例#2
0
    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)
示例#4
0
    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")
示例#12
0
文件: conftest.py 项目: szrnk/umfrage
def survey() -> Survey:
    return SurveyFactory()
 def setUpTestData(cls):
     cls.user = UserFactory()
     cls.survey = SurveyFactory.create()
     cls.question = SurveyQuestionFactory.create(survey=cls.survey, level=1)