def given_a_short_url_already_stored(self): self.url = "http://www.domain.com/big-article-name-with-params/?q=qwerty&t=10" self.given_sid = "5Y14wQ" configure_fake_injects() self.handler = ShortUrlHandler(user) uow = inject.instance('UnitOfWorkManager') uow.sess.short_urls.add(ShortUrl(self.given_sid, "http://a_url.com/"))
def given_some_urls_and_a_user(self): configure_fake_injects() # Urls for Alice self.user = User('Alice') short_url1 = ShortUrl('SID-1', "http://url.1", user=self.user) short_url2 = ShortUrl('SID-2', "http://url.2", user=self.user) self.alice_urls = [short_url1, short_url2] # Url for other user short_url3 = ShortUrl('SID-3', "http://url.3", user=User('Bob')) uow = inject.instance('UnitOfWorkManager') uow.sess.short_urls.add(short_url1) uow.sess.short_urls.add(short_url2) uow.sess.short_urls.add(short_url3)
def handle_shorting(self, url, given_sid): sid = given_sid or self.shortifier(url) with self.uow.start() as tx: surl = tx.short_urls.get(sid) if surl: # collision happened raise SidCollisionException("Collision") surl = ShortUrl(sid, url) surl.user = self.user tx.short_urls.add(surl) tx.commit() return sid