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()
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()
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)
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()
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()
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()
def tearDown(self): self.user.delete() InteractiveWidget.delete_all_widgets() explorations = exp_services.get_all_explorations() for exploration in explorations: exploration.delete()
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()