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
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 given_some_urls_and_two_users(self): with uow.start() as tx: # Urls for Alice alice = create_user_with_token(tx) self.alice_token = alice.token.token self.sid1 = shortifier('url1') short_url1 = ShortUrl(self.sid1, "http://url.1", user=alice) short_url1.created_at = datetime.now() - timedelta(days=1) short_url2 = ShortUrl(shortifier('url2'), "http://url.2", user=alice) tx.short_urls.add(short_url1) tx.short_urls.add(short_url2) # Url for bob bob = create_user_with_token(tx) self.bob_token = bob.token.token short_url3 = ShortUrl(shortifier('url3'), "http://url.3", user=bob) tx.short_urls.add(short_url3) tx.commit()