def test_should_get_memes_following_a_meme(self): yql_mock = Mock() owner_guid = "123fooGUID" #this should be exactly the same query as the 'following' method yql_query = 'SELECT * FROM meme.following(%d) WHERE owner_guid = "%s"' % (1, owner_guid) query_result = Mock() query_result.rows = {'guid':'123', 'name':'some_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':2} query_result.count = 1 when(yql_mock).execute(yql_query).thenReturn(query_result) repository = MemeRepository() repository.yql = yql_mock meme = repository.following(owner_guid, 1) assert meme.guid == '123' yql_query_following = 'SELECT * FROM meme.following(%d) WHERE owner_guid = "%s"' % (2, owner_guid) query_following_result = Mock() query_following_result.rows = [] query_following_result.rows.append({'guid':'456', 'name':'some_other_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':10}) query_following_result.rows.append({'guid':'789', 'name':'some_other_creative_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':20}) query_following_result.count = 2 when(yql_mock).execute(yql_query_following).thenReturn(query_following_result) repository = MemeRepository() repository.yql = yql_mock memes = repository.following(owner_guid, 2) assert len(memes) == 2 assert memes[0].guid == '456' assert memes[1].guid == '789'
def test_should_get_meme_by_name(self): yql_query = 'SELECT * FROM meme.info WHERE name = "some_name"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.single_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock meme = meme_repository.get("some_name") assert meme.guid == "123"
def test_should_get_meme_by_guid(self): yql_query = 'SELECT * FROM meme.info WHERE owner_guid = "123"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.single_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock meme = meme_repository.get_by_guid('123') assert meme.name == 'john'
def test_should_get_one_meme_follower(self): yql_query = 'SELECT * FROM meme.followers(1) WHERE owner_guid = "123fooGUID"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.single_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock meme = meme_repository.followers("123fooGUID", 1) assert len(meme) == 1 assert meme[0].guid == "123"
def test_should_get_a_meme_following_a_meme(self): yql_query = 'SELECT * FROM meme.following(1) WHERE owner_guid = "123"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.single_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock memes = meme_repository.following(123, 1) assert len(memes) == 1 assert memes[0].guid == "123"
def test_should_get_meme_followers(self): yql_query = 'SELECT * FROM meme.followers(2) WHERE owner_guid = "123fooGUID"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.multiple_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock memes = meme_repository.followers("123fooGUID", 2) assert len(memes) == 2 assert memes[0].guid == "456" assert memes[1].guid == "789"
def test_should_raise_meme_not_found_error(self): yql_mock = Mock() yql_query = 'SELECT * FROM meme.info WHERE name = "some_name"' query_result = Mock() query_result.rows = [] query_result.count = 0 when(yql_mock).execute(yql_query).thenReturn(query_result) repository = MemeRepository() repository.yql = yql_mock self.assertRaises(MemeNotFound, repository.get, ('some_name',))
def test_should_get_two_memes_following_a_meme(self): yql_query = 'SELECT * FROM meme.following(2) WHERE owner_guid = "123"' yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(self.multiple_query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock memes = meme_repository.following(123, 2) assert len(memes) == 2 assert memes[0].guid == '456' assert memes[1].guid == '789'
def test_should_raise_meme_not_found_error_when_search_cannot_find_memes(self): yql_query = 'SELECT * FROM meme.people(10) WHERE query = "some_name"' query_result = Mock() query_result.rows = [] query_result.count = 0 yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock self.assertRaises(MemeNotFound, meme_repository.search, "some_name", 10)
def test_should_get_meme_by_name(self): yql_mock = Mock() yql_query = 'SELECT * FROM meme.info WHERE name = "some_name"' query_result = Mock() query_result.rows = {'guid':'123', 'name':'some_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':5} query_result.count = 1 when(yql_mock).execute(yql_query).thenReturn(query_result) repository = MemeRepository() repository.yql = yql_mock meme = repository.get('some_name') assert meme.guid == '123'
def test_should_search_memes(self): yql_query = 'SELECT * FROM meme.people(1) WHERE query = "foobar"' query_result = Mock() query_result.rows = fixtures.get_meme("fred") query_result.count = 1 yql_mock = Mock() when(yql_mock).execute(yql_query).thenReturn(query_result) meme_repository = MemeRepository() meme_repository.yql = yql_mock memes = meme_repository.search("foobar", 1) assert len(memes) == 1 assert memes[0].guid == "024" assert memes[0].title == "Search Fred" assert memes[0].follower_count == 20
def test_should_get_meme_followers(self): yql_mock = Mock() yql_query = 'SELECT * FROM meme.info WHERE name = "some_name"' query_result = Mock() query_result.rows = {'guid':'123', 'name':'some_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':2} query_result.count = 1 when(yql_mock).execute(yql_query).thenReturn(query_result) yql_query_following = 'SELECT * FROM meme.followers(0,2) WHERE owner_guid = "123"' query_following_result = Mock() query_following_result.rows = [] query_following_result.rows.append({'guid':'456', 'name':'some_other_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':10}) query_following_result.rows.append({'guid':'789', 'name':'some_other_creative_name', 'title':'Cool Meme title', 'description':'Meme description', 'url':'http://meme.yahoo.com/some_name', 'avatar_url':'http://img.yahoo.com/avatar/123.jpg', 'language':'pt', 'followers':20}) query_following_result.count = 2 when(yql_mock).execute(yql_query_following).thenReturn(query_following_result) repository = MemeRepository() repository.yql = yql_mock memes = repository.followers('some_name', count=2, offset=0) assert len(memes) == 2 assert memes[0].guid == '456' assert memes[1].guid == '789'