def test_url_hashing(self): # check first 10.000 values n = 10000 ids = range(n) seen_hashes = set() for i in ids: h = EventLink.encode_hash(i) r_i = EventLink.decode_hash(h) self.assertEqual(i, r_i) seen_hashes.add(h) # check for no collisions self.assertEqual(len(seen_hashes), n) # check some random custom url values vals = ['foobar', 'somecustomlink1'] for val in vals: i = EventLink.decode_hash(val) r_h = EventLink.encode_hash(i) self.assertEqual(val, r_h) # check some random invalid url values vals = ['foo bar', 'somecustom/link'] for val in vals: i = EventLink.decode_hash(val) self.assertEqual(i, None)
def test_url_collision_skip(self): vals = (5, 6, 4, 7, 8, 20) for i, val in enumerate(vals): slug = EventLink.encode_hash(val) eventLink = self.event.create_link(slug=slug) n = 10 ids = range(n) for i in ids: eventLink = self.event.create_link() num_links = EventLink.objects.filter(event__isnull=False).count() self.assertEqual(num_links, n+len(vals))