def test_widget_field_initialization(self): """Should be able to initialize a new WidgetField""" register.widget(TestWidget) # Create article and image for testing article = DispatchTestHelpers.create_article(self.client) image = DispatchTestHelpers.create_image(self.client) testwidget = TestWidget() field_data = { 'id': 'test-widget', 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'] } } # a test Widget is now initialized, initilize a widget field to put the test Widget in testfield = WidgetField('Title', [TestWidgetSub]) try: testfield.validate(field_data) except InvalidField: self.fail('Widget should be valid')
def test_get_widget_from_widget_field(self): """Should be able to validate and get widget from widgetfield""" register.widget(TestWidget) testwidget = TestWidget() testfield = WidgetField('Title', [TestWidgetSub]) # Create article and image for testing article = DispatchTestHelpers.create_article(self.client) image = DispatchTestHelpers.create_image(self.client) field_data = { 'id': testwidget.id, 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'] } } widget = testfield.get_widget(field_data['id']) self.assertEqual(type(widget), type(testwidget))
def test_widget_field_prepare_data(self): """Prepare_data should return widget""" register.widget(TestWidget) # Create article and image for testing article = DispatchTestHelpers.create_article(self.client) image = DispatchTestHelpers.create_image(self.client) widget = TestWidget() testfield = WidgetField('Title', [TestWidgetSub]) field_data = { 'id': 'test-widget', 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'] } } prepared_data = testfield.prepare_data(field_data) self.assertEqual(type(prepared_data), type(widget))
def test_widget_to_json_no_data(self): """Using to_json with no data should return None for data""" data = None widget = WidgetField('Title', [TestWidgetSub]) self.assertEqual(widget.to_json(data), None)
def test_widget_field_prepare_data_no_data(self): """Test the case where None data is passed to 'prepare_data' """ widget = WidgetField('Title', [TestWidgetSub]) data = None self.assertEqual(widget.prepare_data(data), None)
def test_get_non_existant_widget(self): """Using get_widget with non-existant widget_id should fail""" widget = WidgetField('Title', [TestWidgetSub]) try: widget.get_widget('this_is_not_a_widget_id') self.fail('WidgetNotFound Error should have been raised') except WidgetNotFound: pass
class Election2018(Widget): id = 'ams_election_2018' name = 'AMS Election 2018' template = 'widgets/frontpage/election_2018.html' zones = (FrontPage, ) accepted_keywords = ('articles', ) video_url = CharField('Facebook Live Video URL') top_story = WidgetField('Top Story', [TopStoryDefault, TopStoryLive], required=True) sidebar = WidgetField('Sidebar', [TwitterFrontPage], required=True)
def test_get_all_widgets(self): """Get all the widgets associated with a field""" register.widget(TestWidget) register.widget(TestWidget2) register.widget(TestWidget3) # Create article and image for testing article = DispatchTestHelpers.create_article(self.client) image = DispatchTestHelpers.create_image(self.client) widget1 = TestWidget() widget2 = TestWidget2() widget3 = TestWidget3() testfield = WidgetField('Title', [TestWidgetSub]) field_data = { 'id': 'test-widget', 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'], 'widget': { 'id': 'test-widget-2', 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'], 'widget': { 'id': 'test-widget-3', 'data': { 'title': 'Test widget 3' } } } } } } json = testfield.to_json(field_data) prepared_data = testfield.prepare_data(field_data).data self.assertEqual(json['id'], 'test-widget') self.assertEqual(json['data']['widget']['id'], 'test-widget-2') self.assertEqual(json['data']['widget']['data']['widget']['id'], 'test-widget-3') self.assertEqual(prepared_data['widget']['id'], 'test-widget-2') self.assertEqual(prepared_data['widget']['data']['widget']['id'], 'test-widget-3')
def test_validate_widget_field_required_no_data(self): """Trying to validate invalid data (no data) should result in InvalidField error""" testfield = WidgetField('Title', [TestWidgetSub], required=True) # The data to be validated - valid data are basestrings field_data = '' try: testfield.validate(field_data) self.fail('Widget data was invalid - validate method should have raised Invalid Field') except InvalidField: pass
class FrontPageDefault(Widget): id = 'frontpage-default' name = 'Default Front Page' template = 'widgets/frontpage/default.html' zones = (FrontPage, ) accepted_keywords = ('articles', ) # top_story is unused as of now top_story = WidgetField('Top Story', [TopStoryDefault, TopStoryLive], required=True) sidebar = WidgetField('Sidebar', [UpcomingEventsWidget, TwitterFrontPage], required=True)
def test_get_widget_json_no_widget(self): """Test the case where None widget is passed to 'get_widget_json' """ register.widget(TestWidget) testwidget = TestWidget() testfield = WidgetField('Title', [TestWidgetSub]) field_data = {'id': None} widget = testfield.get_widget_json(field_data) self.assertEqual(widget, None)
def test_get_widget_from_widget_field_no_id(self): """Test the case where None id is passed to 'get_widget' """ register.widget(TestWidget) testwidget = TestWidget() testfield = WidgetField('Title', [TestWidgetSub]) field_data = {'id': None} widget = testfield.get_widget(field_data['id']) self.assertEqual(widget, None)
def test_widget_field_invalid_data(self): """Initilaizing a widget field with invalid data should raise an error""" try: widget = WidgetField(6, [TestWidgetSub]) self.fail('InvalidField Error should have been raised') except InvalidField: pass
def test_validate_widget_field_no_id(self): """Trying to validate invalid data (no id) should result in InvalidField error""" testfield = WidgetField('Title', [TestWidgetSub]) # The data to be validated - valid data are basestrings field_data = { 'id': '', 'data': { 'title': 'test title', 'description': 'test description', } } try: testfield.validate(field_data) self.fail('Widget ID was invalid - validate method should have raised Invalid Field') except InvalidField: pass
class TestWidget2(Widget): id = 'test-widget-2' name = 'Test widget 2' template = 'widgets/test-widget.html' zones = [TestZone] title = CharField('Title 2') description = TextField('Description 2') article = ArticleField('Featured article 2') image = ImageField('Featured image 2') widget = WidgetField('Featured Widget 2', [TestWidgetSub])
class TestWidgetR(Widget): id = 'test-widget-r' name = 'Test Widget R' template = 'widget/test-widget.html' zones = [TestZone] title = CharField('Title', required=True) description = TextField('Description', required=True) article = ArticleField('Featured article', required=True) image = ImageField('Featured image', required=True) widget = WidgetField('Featured Widget', [TestWidgetSub], required=True)
def test_widget_field_to_json(self): """Should be able to get to_json from field""" register.widget(TestWidget) # Create article and image for testing article = DispatchTestHelpers.create_article(self.client) image = DispatchTestHelpers.create_image(self.client) testfield = WidgetField('Title', [TestWidgetSub]) field_data = { 'id': 'test-widget', 'data': { 'title': 'test title', 'description': 'test description', 'article': article.data['id'], 'image': image.data['id'] } } json = testfield.to_json(field_data) self.assertEqual(json['id'], 'test-widget')