def test_equality_custom_fields_to_ignore(self): config = ExampleConfig(changed_by=self.user, string_field='first') config.save() # id, change_date, and changed_by will all be different for a newly created entry self.assertTrue( ExampleConfig.equal_to_current({"string_field": "first"})) self.assertFalse( ExampleConfig.equal_to_current({"string_field": "first"}, fields_to_ignore=("change_date", "changed_by"))) self.assertFalse( ExampleConfig.equal_to_current({"string_field": "first"}, fields_to_ignore=("id", "changed_by"))) self.assertFalse( ExampleConfig.equal_to_current({"string_field": "first"}, fields_to_ignore=("change_date", "id"))) # Test the ability to ignore a different field ("int_field"). self.assertFalse( ExampleConfig.equal_to_current({ "string_field": "first", "int_field": 20 })) self.assertTrue( ExampleConfig.equal_to_current( { "string_field": "first", "int_field": 20 }, fields_to_ignore=("id", "change_date", "changed_by", "int_field")))
def test_insert(self): self.assertEqual("", ExampleConfig.current().string_field) request = self.factory.post('/config/ExampleConfig', {"string_field": "string_value"}) request.user = self.user __ = self.current_view(request) self.assertEqual("string_value", ExampleConfig.current().string_field) self.assertEqual(self.user, ExampleConfig.current().changed_by)
def test_no_config_empty_cache(self): # First time reads from the database with self.assertNumQueries(1): current = ExampleConfig.current() self.assertEqual(current.int_field, 10) self.assertEqual(current.string_field, '') # Follow-on request reads from cache with no database request. with self.assertNumQueries(0): cached_current = ExampleConfig.current() self.assertEqual(cached_current.int_field, 10) self.assertEqual(cached_current.string_field, '')
def test_always_insert(self): config = ExampleConfig(changed_by=self.user, string_field='first') config.save() config.string_field = 'second' config.save() self.assertEqual(2, ExampleConfig.objects.all().count())
def test_multiple_inserts(self): for i in six.moves.range(3): # pylint: disable=no-member self.assertEqual(i, ExampleConfig.objects.all().count()) request = self.factory.post('/config/ExampleConfig', {"string_field": str(i)}) request.user = self.user response = self.current_view(request) self.assertEqual(201, response.status_code) self.assertEqual(i + 1, ExampleConfig.objects.all().count()) self.assertEqual(str(i), ExampleConfig.current().string_field)
def test_get_current(self): request = self.factory.get('/config/ExampleConfig') request.user = self.user response = self.current_view(request) self.assertEqual('', response.data['string_field']) self.assertEqual(10, response.data['int_field']) self.assertEqual(None, response.data['changed_by']) self.assertEqual(False, response.data['enabled']) self.assertEqual(None, response.data['change_date']) ExampleConfig(string_field='string_value', int_field=20).save() response = self.current_view(request) self.assertEqual('string_value', response.data['string_field']) self.assertEqual(20, response.data['int_field'])
def test_cache_set(self): # Nothing is cached, so we take a database hit for this. with self.assertNumQueries(1): default = ExampleConfig.current() self.assertEqual(default.string_field, '') first = ExampleConfig(changed_by=self.user) first.string_field = 'first' first.save() # The save() call above should have invalidated the cache, so we expect # to see a query to get the current config value. with self.assertNumQueries(1): current = ExampleConfig.current() self.assertEqual(current.string_field, 'first')
def test_cache_set(self): with self.assertNumQueries(1): default = ExampleConfig.current('left', 'right', self.user) self.assertEqual(default.string_field, '') first = ExampleKeyedConfig( changed_by=self.user, left='left', right='right', user=self.user, string_field='first', ) first.save() # Cache is invalidated by the save above, so another query is made. with self.assertNumQueries(1): ExampleKeyedConfig.current('left', 'right', self.user)
def test_config_ordering(self): with freeze_time('2012-01-01'): first = ExampleConfig(changed_by=self.user) first.string_field = 'first' first.save() second = ExampleConfig(changed_by=self.user) second.string_field = 'second' second.save() self.assertEqual(ExampleConfig.current().string_field, 'second')
def test_cache_key_name(self): self.assertEqual(ExampleConfig.cache_key_name(), 'configuration/ExampleConfig/current')
def test_equality(self): config = ExampleConfig(changed_by=self.user, string_field='first') config.save() self.assertTrue( ExampleConfig.equal_to_current({"string_field": "first"})) self.assertTrue( ExampleConfig.equal_to_current({ "string_field": "first", "enabled": False })) self.assertTrue( ExampleConfig.equal_to_current({ "string_field": "first", "int_field": 10 })) self.assertFalse( ExampleConfig.equal_to_current({ "string_field": "first", "enabled": True })) self.assertFalse( ExampleConfig.equal_to_current({ "string_field": "first", "int_field": 20 })) self.assertFalse( ExampleConfig.equal_to_current({"string_field": "second"})) self.assertFalse(ExampleConfig.equal_to_current({}))