def test_extraction_empty_value(self): widget = factory('cron', name='cronwidget') request = { 'cronwidget.month': '', 'cronwidget.dom': '', 'cronwidget.hour': '', 'cronwidget.minute': '', 'cronwidget.dow': '', 'cronwidget.year': '' } data = widget.extract(request) self.assertEqual(data.extracted, EMPTY_VALUE) widget = factory('cron', name='cronwidget', props={'emptyvalue': None}) data = widget.extract(request) self.assertEqual(data.extracted, None)
def test_extraction_empty_request(self): widget = factory('cron', name='cronwidget') data = widget.extract({}) self.assertEqual([data.name, data.value, data.extracted, data.errors], ['cronwidget', UNSET, UNSET, []]) minute = data['minute'] self.assertEqual( [minute.name, minute.value, minute.extracted, minute.errors], ['minute', UNSET, UNSET, []]) hour = data['hour'] self.assertEqual([hour.name, hour.value, hour.extracted, hour.errors], ['hour', UNSET, UNSET, []]) dom = data['dom'] self.assertEqual([dom.name, dom.value, dom.extracted, dom.errors], ['dom', UNSET, UNSET, []]) month = data['month'] self.assertEqual( [month.name, month.value, month.extracted, month.errors], ['month', UNSET, UNSET, []]) dow = data['dow'] self.assertEqual([dow.name, dow.value, dow.extracted, dow.errors], ['dow', UNSET, UNSET, []]) year = data['year'] self.assertEqual([year.name, year.value, year.extracted, year.errors], ['year', UNSET, UNSET, []])
def test_extraction_required_value(self): widget = factory('cron', name='cronwidget', props={'required': True}) request = { 'cronwidget.month': '', 'cronwidget.dom': '', 'cronwidget.hour': '', 'cronwidget.minute': '', 'cronwidget.dow': '', 'cronwidget.year': '' } data = widget.extract(request) msg = 'Mandatory field was empty' self.assertEqual( [data.name, data.value, data.extracted, data.errors], ['cronwidget', UNSET, EMPTY_VALUE, [ExtractionError(msg)]])
def test_extraction_invalid_value(self): widget = factory('cron', name='cronwidget') request = { 'cronwidget.month': '*', 'cronwidget.dom': '', 'cronwidget.hour': '', 'cronwidget.minute': '', 'cronwidget.dow': '', 'cronwidget.year': '' } data = widget.extract(request) msg = ('Invalid cron rule. You must at least ' 'select one item for each criteria') self.assertEqual([data.name, data.value, data.extracted, data.errors], ['cronwidget', UNSET, UNSET, [ExtractionError(msg)]])
def test_in_conjunction_with_hybrid_blueprint(self): value = '0,10,20,30,40,50 0,6,12,18 1,15,30 3,6,9,12 1,3,5 2017,2018,2019' widget = factory('div:cron', name='cronwidget', value=value, props={ 'leaf': True, 'div.class': 'wrapper-div' }) self.check_output( """ <div class="wrapper-div"><div class="crontab widget" ...>...</div></div> """, widget()) request = { 'cronwidget.month': u'1', 'cronwidget.dom': u'2', 'cronwidget.hour': u'3', 'cronwidget.minute': u'4', 'cronwidget.dow': u'5', 'cronwidget.year': u'*' } data = widget.extract(request) self.assertEqual([data.name, data.value, data.extracted, data.errors], ['cronwidget', value, '4 3 2 1 5 *', []]) minute = data['minute'] self.assertEqual( [minute.name, minute.value, minute.extracted, minute.errors], ['minute', '0,10,20,30,40,50', '4', []]) hour = data['hour'] self.assertEqual([hour.name, hour.value, hour.extracted, hour.errors], ['hour', '0,6,12,18', '3', []]) dom = data['dom'] self.assertEqual([dom.name, dom.value, dom.extracted, dom.errors], ['dom', '1,15,30', '2', []]) month = data['month'] self.assertEqual( [month.name, month.value, month.extracted, month.errors], ['month', '3,6,9,12', '1', []]) dow = data['dow'] self.assertEqual([dow.name, dow.value, dow.extracted, dow.errors], ['dow', '1,3,5', '5', []]) year = data['year'] self.assertEqual([year.name, year.value, year.extracted, year.errors], ['year', '2017,2018,2019', '*', []])
def test_extraction_request_values(self): # Valid widget extraction. Returns a datastructure, whic can be used # with python-crontab widget = factory('cron', name='cronwidget') request = { 'cronwidget.month': u'3,6,9,12', 'cronwidget.dom': u'1,15,30', 'cronwidget.hour': u'0,6,12,18', 'cronwidget.minute': u'0,10,20,30,40,50', 'cronwidget.dow': u'1,3,5', 'cronwidget.year': u'2017' } data = widget.extract(request) extracted = '0,10,20,30,40,50 0,6,12,18 1,15,30 3,6,9,12 1,3,5 2017' self.assertEqual([data.name, data.value, data.extracted, data.errors], ['cronwidget', UNSET, extracted, []]) minute = data['minute'] self.assertEqual( [minute.name, minute.value, minute.extracted, minute.errors], ['minute', UNSET, '0,10,20,30,40,50', []]) hour = data['hour'] self.assertEqual([hour.name, hour.value, hour.extracted, hour.errors], ['hour', UNSET, '0,6,12,18', []]) dom = data['dom'] self.assertEqual([dom.name, dom.value, dom.extracted, dom.errors], ['dom', UNSET, '1,15,30', []]) month = data['month'] self.assertEqual( [month.name, month.value, month.extracted, month.errors], ['month', UNSET, '3,6,9,12', []]) dow = data['dow'] self.assertEqual([dow.name, dow.value, dow.extracted, dow.errors], ['dow', UNSET, '1,3,5', []]) year = data['year'] self.assertEqual([year.name, year.value, year.extracted, year.errors], ['year', UNSET, '2017', []])
def test_preset_values(self): value = '0,10,20,30,40,50 0,6,12,18 1,15,30 3,6,9,12 1,3,5 2017' widget = factory('cron', name='cronwidget', value=value) self.check_output( """ ...name="cronwidget.minute" type="hidden" value="0,10,20,30,40,50" ...name="cronwidget.hour" type="hidden" value="0,6,12,18" ...name="cronwidget.dom" type="hidden" value="1,15,30" ...name="cronwidget.month" type="hidden" value="3,6,9,12" ...name="cronwidget.dow" type="hidden" value="1,3,5" ...name="cronwidget.year" type="hidden" value="2017" ... """, widget()) data = widget.extract({}) self.assertEqual([data.name, data.value, data.extracted, data.errors], ['cronwidget', value, UNSET, []]) minute = data['minute'] self.assertEqual( [minute.name, minute.value, minute.extracted, minute.errors], ['minute', '0,10,20,30,40,50', UNSET, []]) hour = data['hour'] self.assertEqual([hour.name, hour.value, hour.extracted, hour.errors], ['hour', '0,6,12,18', UNSET, []]) dom = data['dom'] self.assertEqual([dom.name, dom.value, dom.extracted, dom.errors], ['dom', '1,15,30', UNSET, []]) month = data['month'] self.assertEqual( [month.name, month.value, month.extracted, month.errors], ['month', '3,6,9,12', UNSET, []]) dow = data['dow'] self.assertEqual([dow.name, dow.value, dow.extracted, dow.errors], ['dow', '1,3,5', UNSET, []]) year = data['year'] self.assertEqual([year.name, year.value, year.extracted, year.errors], ['year', '2017', UNSET, []]) request = { 'cronwidget.month': u'3,6', 'cronwidget.dom': u'1,15', 'cronwidget.hour': u'12,18', 'cronwidget.minute': u'0,10,20', 'cronwidget.dow': u'1', 'cronwidget.year': u'*' } data = widget.extract(request) self.assertEqual( [data.name, data.value, data.extracted, data.errors], ['cronwidget', value, '0,10,20 12,18 1,15 3,6 1 *', []]) minute = data['minute'] self.assertEqual( [minute.name, minute.value, minute.extracted, minute.errors], ['minute', '0,10,20,30,40,50', '0,10,20', []]) hour = data['hour'] self.assertEqual([hour.name, hour.value, hour.extracted, hour.errors], ['hour', '0,6,12,18', '12,18', []]) dom = data['dom'] self.assertEqual([dom.name, dom.value, dom.extracted, dom.errors], ['dom', '1,15,30', '1,15', []]) month = data['month'] self.assertEqual( [month.name, month.value, month.extracted, month.errors], ['month', '3,6,9,12', '3,6', []]) dow = data['dow'] self.assertEqual([dow.name, dow.value, dow.extracted, dow.errors], ['dow', '1,3,5', '1', []]) year = data['year'] self.assertEqual([year.name, year.value, year.extracted, year.errors], ['year', '2017', '*', []]) value = '1 2 3 4 5' widget = factory('cron', name='cronwidget', value=value) self.check_output( """ ...name="cronwidget.minute" type="hidden" value="1" ...name="cronwidget.hour" type="hidden" value="2" ...name="cronwidget.dom" type="hidden" value="3" ...name="cronwidget.month" type="hidden" value="4" ...name="cronwidget.dow" type="hidden" value="5" ...name="cronwidget.year" type="hidden" value="*" ... """, widget()) value = '1 2 3 4' widget = factory('cron', name='cronwidget', value=value) with self.assertRaises(ValueError): widget()