예제 #1
0
파일: admin.py 프로젝트: sunu/oppia-test-4
def reload_widgets():
    """Reload the default classifiers and widgets."""
    Classifier.delete_all_classifiers()
    Classifier.load_default_classifiers()

    Widget.delete_all_widgets()
    InteractiveWidget.load_default_widgets()
    NonInteractiveWidget.load_default_widgets()
예제 #2
0
    def test_setting_and_getting_attrs(self):
        """Test __getattr__ and __setattr__ methods"""
        rspec = RuleSpec(name='test name', checks=['test check'])
        classifier = Classifier(id='test id', rules=[rspec])
        classifier.put()

        classifiers = Classifier.objects.all()
        self.assertEqual(classifiers.count(), 1)
        new_classifier = classifiers[0]
        self.assertEqual(new_classifier.rules, [rspec])
예제 #3
0
    def test_loading_and_deletion_of_classifiers(self):
        """Test loading and deletion of the default classifiers."""
        self.assertEqual(Classifier.objects.count(), 0)

        Classifier.load_default_classifiers()
        classifiers = Classifier.objects.all()
        classifier_ids = [classifier.id for classifier in classifiers]
        self.assertIn('Coord2DClassifier', classifier_ids)
        self.assertEqual(classifiers.count(), 7)

        Classifier.delete_all_classifiers()
        self.assertEqual(Classifier.objects.count(), 0)
예제 #4
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()
예제 #5
0
 def tearDown(self):
     """Delete all the default classifiers."""
     Classifier.delete_all_classifiers()
예제 #6
0
 def setUp(self):
     """Loads the default classifiers."""
     Classifier.load_default_classifiers()
예제 #7
0
파일: models.py 프로젝트: sunu/oppia-test-4
 def rules(self):
     if not self.classifier:
         return []
     return Classifier.get(self.classifier).rules
예제 #8
0
파일: models.py 프로젝트: sunu/oppia-test-4
 def validate_classifier(self):
     classifier_ids = Classifier.get_classifier_ids()
     if self.classifier and self.classifier not in classifier_ids:
         raise ValidationError(
             'Not a valid classifier id: %s'
             % id)