class LimitFeedItemsValidatorTest(DBTestCase, RequestMixin): def setUp(self): super(LimitFeedItemsValidatorTest, self).setUp() self.init_fake_request() # just to be sure all settings have been cleared. assert_none(app_globals.settings.get('default_feed_results')) app_globals.settings['default_feed_results'] = 42 self.validator = LimitFeedItemsValidator() def tearDown(self): self.remove_globals() super(LimitFeedItemsValidatorTest, self).tearDown() def to_python(self, value): return self.validator.to_python(value) def test_specified_value_overrides_default(self): assert_equals(12, self.to_python('12')) def test_returns_default_for_empty_items(self): assert_equals(42, self.to_python('')) assert_equals(42, self.to_python(None)) def test_can_return_unlimited_items(self): app_globals.settings['default_feed_results'] = '' assert_none(self.to_python('')) app_globals.settings['default_feed_results'] = '-1' assert_none(self.to_python('')) def test_ignores_missing_setting(self): del app_globals.settings['default_feed_results'] assert_equals(30, self.to_python('')) def test_returns_default_number_for_invalid_input(self): assert_equals(42, self.to_python('invalid')) assert_equals(42, self.to_python(-1)) def test_returns_default_for_missing_items(self): schema = Schema() schema.add_field('limit', self.validator) assert_equals(dict(limit=42), schema.to_python({}))