Beispiel #1
0
 def setUp(self):
     super(SeleniumXBlockTest, self).setUp()
     # Delete all scenarios from the workbench:
     import workbench.urls  # Trigger initial scenario load. pylint: disable=unused-variable
     SCENARIOS.clear()
     # Disable CSRF checks on XBlock handlers:
     import workbench.views
     workbench.views.handler.csrf_exempt = True
Beispiel #2
0
 def setUp(self):
     super(SeleniumXBlockTest, self).setUp()
     # Delete all scenarios from the workbench:
     # Trigger initial scenario load.
     import workbench.urls  # pylint: disable=import-outside-toplevel
     SCENARIOS.clear()
     # Disable CSRF checks on XBlock handlers:
     import workbench.views  # pylint: disable=import-outside-toplevel
     workbench.views.handler.csrf_exempt = True
Beispiel #3
0
 def load_scenario(self, xml, view_name=None, student_id='tester1'):
     """
     Load a scenario into the workbench and fetch it using self.client
     """
     import workbench.urls  # Trigger scenario load. pylint: disable=unused-variable
     from workbench.scenarios import SCENARIOS, add_xml_scenario
     SCENARIOS.clear()
     add_xml_scenario("test", "Test Scenario", xml)
     scenario_url = '/scenario/test/'
     if view_name:
         scenario_url += view_name + '/'
     scenario_url += '?student_id=' + student_id
     return self.client.get(scenario_url)
Beispiel #4
0
 def load_scenario(self, xml, view_name=None, student_id='tester1'):
     """
     Load a scenario into the workbench and fetch it using self.client
     """
     import workbench.urls  # Trigger scenario load. pylint: disable=unused-variable
     from workbench.scenarios import SCENARIOS, add_xml_scenario
     SCENARIOS.clear()
     add_xml_scenario("test", "Test Scenario", xml)
     scenario_url = '/scenario/test/'
     if view_name:
         scenario_url += view_name + '/'
     scenario_url += '?student_id=' + student_id
     return self.client.get(scenario_url)
Beispiel #5
0
    def test_studio_view(self):
        """
        Test the studio edit view for grade leaderboards.
        """
        # We need <generic> XBlock in order to do this test, as we need a
        # hierarchy and the normal SDK demo blocks don't support studio_view.
        # However, <generic> is not usually registered, so if we put it in the
        # xml folder it will cause issues. Instead, we create the scenario now:
        import workbench.urls  # Trigger scenario load. pylint: disable=unused-variable
        from workbench.scenarios import SCENARIOS, add_xml_scenario
        SCENARIOS.clear()
        add_xml_scenario(
            "test", "Test Scenario", """
            <generic>
                <generic display_name="Problem1" />
                <generic display_name="Problem2" />
                <generic-no-score display_name="has_score False container">
                    <generic display_name="Problem3"/>
                </generic-no-score>
                <generic-no-score display_name="has_score False leaf"/>
                <grade_leaderboard count="93"/>
             </generic>
            """)
        scenario_url = self.live_server_url + '/scenario/test/studio_view/'
        self.browser.get(scenario_url)

        count_field = self.browser.find_element_by_css_selector(
            'input[id=count]')
        self.assertEqual(count_field.get_attribute('value'), "93")

        select = self.browser.find_element_by_css_selector(
            'select#graded_target_id')
        option_elements = select.find_elements_by_css_selector('option')
        options = {}
        for opt in option_elements:
            desc = opt.text.strip()
            value = opt.get_attribute("value")
            enabled = not opt.get_attribute("disabled")
            options[desc] = (value, enabled)

        for display_name in ("Problem1", "Problem2", "Problem3",
                             "has_score False container"):
            self.assertIn(display_name, options)
            self.assertTrue(options[display_name][1])  # Should be enabled
        for display_name in ("has_score False leaf",
                             "Grade Leaderboard (This leaderboard)"):
            self.assertIn(display_name, options)
            # The current block and any blocks that don't contain a has_score problem
            # should not be selectable:
            self.assertFalse(options[display_name][1])
    def test_studio_view(self):
        """
        Test the studio edit view for grade leaderboards.
        """
        # We need <generic> XBlock in order to do this test, as we need a
        # hierarchy and the normal SDK demo blocks don't support studio_view.
        # However, <generic> is not usually registered, so if we put it in the
        # xml folder it will cause issues. Instead, we create the scenario now:
        import workbench.urls  # Trigger scenario load. pylint: disable=unused-variable
        from workbench.scenarios import SCENARIOS, add_xml_scenario
        SCENARIOS.clear()
        add_xml_scenario(
            "test", "Test Scenario",
            """
            <generic>
                <generic display_name="Problem1" />
                <generic display_name="Problem2" />
                <generic-no-score display_name="has_score False container">
                    <generic display_name="Problem3"/>
                </generic-no-score>
                <generic-no-score display_name="has_score False leaf"/>
                <grade_leaderboard count="93"/>
             </generic>
            """
        )
        scenario_url = self.live_server_url + '/scenario/test/studio_view/'
        self.browser.get(scenario_url)

        count_field = self.browser.find_element_by_css_selector('input[id=count]')
        self.assertEqual(count_field.get_attribute('value'), "93")

        select = self.browser.find_element_by_css_selector('select#graded_target_id')
        option_elements = select.find_elements_by_css_selector('option')
        options = {}
        for opt in option_elements:
            desc = opt.text.strip()
            value = opt.get_attribute("value")
            enabled = not opt.get_attribute("disabled")
            options[desc] = (value, enabled)

        for display_name in ("Problem1", "Problem2", "Problem3", "has_score False container"):
            self.assertIn(display_name, options)
            self.assertTrue(options[display_name][1])  # Should be enabled
        for display_name in ("has_score False leaf", "Grade Leaderboard (This leaderboard)"):
            self.assertIn(display_name, options)
            # The current block and any blocks that don't contain a has_score problem
            # should not be selectable:
            self.assertFalse(options[display_name][1])
Beispiel #7
0
 def set_scenario_xml(xml):
     """ Reset the workbench to have only one scenario with the specified XML """
     SCENARIOS.clear()
     add_xml_scenario("test", "Test Scenario", xml)