Exemple #1
0
 def tearDown(self):
     """Deletes all widgets and explorations."""
     InteractiveWidget.delete_all_widgets()
     explorations = exp_services.get_all_explorations()
     for exploration in explorations:
         exploration.delete()
     super(ExplorationDomainUnitTests, self).tearDown()
Exemple #2
0
    def test_put_method(self):
        """Test that put() only works when called on a Widget subclass."""
        widget = Widget(
            id='WidgetName', name='Widget Name', category='Category', template='Template')
        with self.assertRaises(NotImplementedError):
            widget.put()

        widget = InteractiveWidget(
            id='WidgetName', name='Widget Name', category='Category', template='Template',
            handlers=[AnswerHandler()])
        widget.put()
        InteractiveWidget.delete_all_widgets()
Exemple #3
0
    def test_loading_and_deletion_of_widgets(self):
        """Test loading and deletion of the default widgets."""
        self.assertEqual(InteractiveWidget.objects.count(), 0)
        self.assertEqual(NonInteractiveWidget.objects.count(), 0)

        InteractiveWidget.load_default_widgets()

        self.assertEqual(InteractiveWidget.objects.count(), 8)
        self.assertEqual(NonInteractiveWidget.objects.count(), 0)

        InteractiveWidget.delete_all_widgets()
        self.assertEqual(InteractiveWidget.objects.count(), 0)
        self.assertEqual(NonInteractiveWidget.objects.count(), 0)
Exemple #4
0
    def test_required_properties(self):
        """Test validation of required widget properties."""
        widget = InteractiveWidget(id='Widget Name', name='Widget Name')
        with self.assertRaises(ValidationError):
            widget.put()

        widget.category = 'Category'
        with self.assertRaises(ValidationError):
            widget.put()

        widget.template = 'Template'
        with self.assertRaises(ValidationError):
            widget.put()

        widget.handlers = [AnswerHandler()]
        widget.put()
        InteractiveWidget.delete_all_widgets()
Exemple #5
0
    def test_pre_put_validation(self):
        """Test pre-put checks for widget handlers."""
        widget = InteractiveWidget(
            id='WidgetName', name='Widget Name', category='Category', template='Template')
        with self.assertRaises(ValidationError):
            widget.handlers = []
            widget.put()

        with self.assertRaises(ValidationError):
            widget.handlers = [AnswerHandler(), AnswerHandler()]
            widget.put()

        widget.handlers = [
            AnswerHandler(name='click'), AnswerHandler(name='click')]
        with self.assertRaises(ValidationError):
            widget.put()

        widget.handlers = [
            AnswerHandler(name='submit'), AnswerHandler(name='click')]
        widget.put()
        InteractiveWidget.delete_all_widgets()
Exemple #6
0
    def test_parameterized_widget(self):
        """Test that parameterized widgets are correctly handled."""
        self.assertEqual(InteractiveWidget.objects.count(), 0)

        Classifier.load_default_classifiers()
        InteractiveWidget.load_default_widgets()

        MUSIC_STAFF_ID = 'interactive-MusicStaff'

        widget = InteractiveWidget.get(MUSIC_STAFF_ID)
        self.assertEqual(widget.id, MUSIC_STAFF_ID)
        self.assertEqual(widget.name, 'Music staff')

        code = InteractiveWidget.get_raw_code(MUSIC_STAFF_ID)
        self.assertIn('GLOBALS.noteToGuess = JSON.parse(\'\\"', code)

        code = InteractiveWidget.get_raw_code(MUSIC_STAFF_ID, {'noteToGuess': 'abc'})

        self.assertIn('GLOBALS.noteToGuess = JSON.parse(\'abc\');', code)

        # The get_with_params() method cannot be called directly on Widget.
        # It must be called on a subclass.
        with self.assertRaises(AttributeError):
            parameterized_widget_dict = Widget.get_with_params(
                MUSIC_STAFF_ID, {'noteToGuess': 'abc'})
        with self.assertRaises(NotImplementedError):
            parameterized_widget_dict = Widget._get_with_params(
                MUSIC_STAFF_ID, {'noteToGuess': 'abc'})

        parameterized_widget_dict = InteractiveWidget.get_with_params(
            MUSIC_STAFF_ID, {'noteToGuess': 'abc'})
        self.assertItemsEqual(parameterized_widget_dict.keys(), [
            'id', 'name', 'category', 'description', 'template',
            'static_template', 'params', 'handlers', 'raw'])
        self.assertEqual(parameterized_widget_dict['id'], MUSIC_STAFF_ID)
        self.assertIn('GLOBALS.noteToGuess = JSON.parse(\'abc\');',
                      parameterized_widget_dict['raw'])
        self.assertEqual(parameterized_widget_dict['params'],
                         {'noteToGuess': 'abc'})
        InteractiveWidget.delete_all_widgets()
Exemple #7
0
 def tearDown(self):
     self.user.delete()
     InteractiveWidget.delete_all_widgets()
     explorations = exp_services.get_all_explorations()
     for exploration in explorations:
         exploration.delete()
Exemple #8
0
 def tearDown(self):
     """Deletes the dummy users and any other widgets and explorations."""
     InteractiveWidget.delete_all_widgets()
     explorations = exp_services.get_all_explorations()
     for exploration in explorations:
         exploration.delete()