#!/usr/bin/python # # Copyright (C) 2006 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. __author__ = 'api.jhartmann@gmail.com (Jochen Hartmann)' import unittest from gdata import test_data import gdata.youtube import gdata.youtube.service import atom YOUTUBE_TEMPLATE = '{http://gdata.youtube.com/schemas/2007}%s' YT_FORMAT = YOUTUBE_TEMPLATE % ('format') class VideoEntryTest(unittest.TestCase): def setUp(self): self.video_feed = gdata.youtube.YouTubeVideoFeedFromString( test_data.YOUTUBE_VIDEO_FEED) def testCorrectXmlParsing(self): self.assertEquals(self.video_feed.id.text, 'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated') self.assertEquals(len(self.video_feed.entry), 2) for entry in self.video_feed.entry: if (entry.id.text == 'http://gdata.youtube.com/feeds/api/videos/C71ypXYGho8'): self.assertEquals(entry.published.text, '2008-03-20T10:17:27.000-07:00') self.assertEquals(entry.updated.text, '2008-05-14T04:26:37.000-07:00') self.assertEquals(entry.category[0].scheme, 'http://gdata.youtube.com/schemas/2007/keywords.cat') self.assertEquals(entry.category[0].term, 'karyn') self.assertEquals(entry.category[1].scheme, 'http://gdata.youtube.com/schemas/2007/keywords.cat') self.assertEquals(entry.category[1].term, 'garcia') self.assertEquals(entry.category[2].scheme, 'http://gdata.youtube.com/schemas/2007/keywords.cat') self.assertEquals(entry.category[2].term, 'me') self.assertEquals(entry.category[3].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(entry.category[3].term, 'http://gdata.youtube.com/schemas/2007#video') self.assertEquals(entry.title.text, 'Me odeio por te amar - KARYN GARCIA') self.assertEquals(entry.content.text, 'http://www.karyngarcia.com.br') self.assertEquals(entry.link[0].rel, 'alternate') self.assertEquals(entry.link[0].href, 'http://www.youtube.com/watch?v=C71ypXYGho8') self.assertEquals(entry.link[1].rel, 'http://gdata.youtube.com/schemas/2007#video.related') self.assertEquals(entry.link[1].href, 'http://gdata.youtube.com/feeds/api/videos/C71ypXYGho8/related') self.assertEquals(entry.link[2].rel, 'self') self.assertEquals(entry.link[2].href, ('http://gdata.youtube.com/feeds/api/standardfeeds' '/top_rated/C71ypXYGho8')) self.assertEquals(entry.author[0].name.text, 'TvKarynGarcia') self.assertEquals(entry.author[0].uri.text, 'http://gdata.youtube.com/feeds/api/users/tvkaryngarcia') self.assertEquals(entry.media.title.text, 'Me odeio por te amar - KARYN GARCIA') self.assertEquals(entry.media.description.text, 'http://www.karyngarcia.com.br') self.assertEquals(entry.media.keywords.text, 'amar, boyfriend, garcia, karyn, me, odeio, por, te') self.assertEquals(entry.media.duration.seconds, '203') self.assertEquals(entry.media.category[0].label, 'Music') self.assertEquals(entry.media.category[0].scheme, 'http://gdata.youtube.com/schemas/2007/categories.cat') self.assertEquals(entry.media.category[0].text, 'Music') self.assertEquals(entry.media.category[1].label, 'test111') self.assertEquals(entry.media.category[1].scheme, 'http://gdata.youtube.com/schemas/2007/developertags.cat') self.assertEquals(entry.media.category[1].text, 'test111') self.assertEquals(entry.media.category[2].label, 'test222') self.assertEquals(entry.media.category[2].scheme, 'http://gdata.youtube.com/schemas/2007/developertags.cat') self.assertEquals(entry.media.category[2].text, 'test222') self.assertEquals(entry.media.content[0].url, 'http://www.youtube.com/v/C71ypXYGho8') self.assertEquals(entry.media.content[0].type, 'application/x-shockwave-flash') self.assertEquals(entry.media.content[0].medium, 'video') self.assertEquals( entry.media.content[0].extension_attributes['isDefault'], 'true') self.assertEquals( entry.media.content[0].extension_attributes['expression'], 'full') self.assertEquals( entry.media.content[0].extension_attributes['duration'], '203') self.assertEquals( entry.media.content[0].extension_attributes[YT_FORMAT], '5') self.assertEquals(entry.media.content[1].url, ('rtsp://rtsp2.youtube.com/ChoLENy73wIaEQmPhgZ2pXK9CxMYDSANFEgGDA' '==/0/0/0/video.3gp')) self.assertEquals(entry.media.content[1].type, 'video/3gpp') self.assertEquals(entry.media.content[1].medium, 'video') self.assertEquals( entry.media.content[1].extension_attributes['expression'], 'full') self.assertEquals( entry.media.content[1].extension_attributes['duration'], '203') self.assertEquals( entry.media.content[1].extension_attributes[YT_FORMAT], '1') self.assertEquals(entry.media.content[2].url, ('rtsp://rtsp2.youtube.com/ChoLENy73wIaEQmPhgZ2pXK9CxMYESARFEgGDA==' '/0/0/0/video.3gp')) self.assertEquals(entry.media.content[2].type, 'video/3gpp') self.assertEquals(entry.media.content[2].medium, 'video') self.assertEquals( entry.media.content[2].extension_attributes['expression'], 'full') self.assertEquals( entry.media.content[2].extension_attributes['duration'], '203') self.assertEquals( entry.media.content[2].extension_attributes[YT_FORMAT], '6') self.assertEquals(entry.media.player.url, 'http://www.youtube.com/watch?v=C71ypXYGho8') self.assertEquals(entry.media.thumbnail[0].url, 'http://img.youtube.com/vi/C71ypXYGho8/2.jpg') self.assertEquals(entry.media.thumbnail[0].height, '97') self.assertEquals(entry.media.thumbnail[0].width, '130') self.assertEquals(entry.media.thumbnail[0].extension_attributes['time'], '00:01:41.500') self.assertEquals(entry.media.thumbnail[1].url, 'http://img.youtube.com/vi/C71ypXYGho8/1.jpg') self.assertEquals(entry.media.thumbnail[1].height, '97') self.assertEquals(entry.media.thumbnail[1].width, '130') self.assertEquals(entry.media.thumbnail[1].extension_attributes['time'], '00:00:50.750') self.assertEquals(entry.media.thumbnail[2].url, 'http://img.youtube.com/vi/C71ypXYGho8/3.jpg') self.assertEquals(entry.media.thumbnail[2].height, '97') self.assertEquals(entry.media.thumbnail[2].width, '130') self.assertEquals(entry.media.thumbnail[2].extension_attributes['time'], '00:02:32.250') self.assertEquals(entry.media.thumbnail[3].url, 'http://img.youtube.com/vi/C71ypXYGho8/0.jpg') self.assertEquals(entry.media.thumbnail[3].height, '240') self.assertEquals(entry.media.thumbnail[3].width, '320') self.assertEquals(entry.media.thumbnail[3].extension_attributes['time'], '00:01:41.500') self.assertEquals(entry.statistics.view_count, '138864') self.assertEquals(entry.statistics.favorite_count, '2474') self.assertEquals(entry.rating.min, '1') self.assertEquals(entry.rating.max, '5') self.assertEquals(entry.rating.num_raters, '4626') self.assertEquals(entry.rating.average, '4.95') self.assertEquals(entry.comments.feed_link[0].href, ('http://gdata.youtube.com/feeds/api/videos/' 'C71ypXYGho8/comments')) self.assertEquals(entry.comments.feed_link[0].count_hint, '27') self.assertEquals(entry.GetSwfUrl(), 'http://www.youtube.com/v/C71ypXYGho8') self.assertEquals(entry.GetYouTubeCategoryAsString(), 'Music') class VideoEntryPrivateTest(unittest.TestCase): def setUp(self): self.entry = gdata.youtube.YouTubeVideoEntryFromString( test_data.YOUTUBE_ENTRY_PRIVATE) def testCorrectXmlParsing(self): self.assert_(isinstance(self.entry, gdata.youtube.YouTubeVideoEntry)) self.assert_(self.entry.media.private) class VideoFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeVideoFeedFromString( test_data.YOUTUBE_VIDEO_FEED) def testCorrectXmlParsing(self): self.assertEquals(self.feed.id.text, 'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated') self.assertEquals(self.feed.generator.text, 'YouTube data API') self.assertEquals(self.feed.generator.uri, 'http://gdata.youtube.com/') self.assertEquals(len(self.feed.author), 1) self.assertEquals(self.feed.author[0].name.text, 'YouTube') self.assertEquals(len(self.feed.category), 1) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#video') self.assertEquals(self.feed.items_per_page.text, '25') self.assertEquals(len(self.feed.link), 4) self.assertEquals(self.feed.link[0].href, 'http://www.youtube.com/browse?s=tr') self.assertEquals(self.feed.link[0].rel, 'alternate') self.assertEquals(self.feed.link[1].href, 'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated') self.assertEquals(self.feed.link[1].rel, 'http://schemas.google.com/g/2005#feed') self.assertEquals(self.feed.link[2].href, ('http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?' 'start-index=1&max-results=25')) self.assertEquals(self.feed.link[2].rel, 'self') self.assertEquals(self.feed.link[3].href, ('http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?' 'start-index=26&max-results=25')) self.assertEquals(self.feed.link[3].rel, 'next') self.assertEquals(self.feed.start_index.text, '1') self.assertEquals(self.feed.title.text, 'Top Rated') self.assertEquals(self.feed.total_results.text, '100') self.assertEquals(self.feed.updated.text, '2008-05-14T02:24:07.000-07:00') self.assertEquals(len(self.feed.entry), 2) class YouTubePlaylistFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubePlaylistFeedFromString( test_data.YOUTUBE_PLAYLIST_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.entry), 1) self.assertEquals( self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#playlistLink') class YouTubePlaylistEntryTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubePlaylistFeedFromString( test_data.YOUTUBE_PLAYLIST_FEED) def testCorrectXmlParsing(self): for entry in self.feed.entry: self.assertEquals(entry.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(entry.category[0].term, 'http://gdata.youtube.com/schemas/2007#playlistLink') self.assertEquals(entry.description.text, 'My new playlist Description') self.assertEquals(entry.feed_link[0].href, 'http://gdata.youtube.com/feeds/playlists/8BCDD04DE8F771B2') self.assertEquals(entry.feed_link[0].rel, 'http://gdata.youtube.com/schemas/2007#playlist') class YouTubePlaylistVideoFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubePlaylistVideoFeedFromString( test_data.YOUTUBE_PLAYLIST_VIDEO_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.entry), 1) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#playlist') self.assertEquals(self.feed.category[1].scheme, 'http://gdata.youtube.com/schemas/2007/tags.cat') self.assertEquals(self.feed.category[1].term, 'videos') self.assertEquals(self.feed.category[2].scheme, 'http://gdata.youtube.com/schemas/2007/tags.cat') self.assertEquals(self.feed.category[2].term, 'python') class YouTubePlaylistVideoEntryTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubePlaylistVideoFeedFromString( test_data.YOUTUBE_PLAYLIST_VIDEO_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.entry), 1) for entry in self.feed.entry: self.assertEquals(entry.position.text, '1') class YouTubeVideoCommentFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeVideoCommentFeedFromString( test_data.YOUTUBE_COMMENT_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.category), 1) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#comment') self.assertEquals(len(self.feed.link), 4) self.assertEquals(self.feed.link[0].rel, 'related') self.assertEquals(self.feed.link[0].href, 'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU') self.assertEquals(self.feed.link[1].rel, 'alternate') self.assertEquals(self.feed.link[1].href, 'http://www.youtube.com/watch?v=2Idhz9ef5oU') self.assertEquals(self.feed.link[2].rel, 'http://schemas.google.com/g/2005#feed') self.assertEquals(self.feed.link[2].href, 'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU/comments') self.assertEquals(self.feed.link[3].rel, 'self') self.assertEquals(self.feed.link[3].href, ('http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU/comments?' 'start-index=1&max-results=25')) self.assertEquals(len(self.feed.entry), 3) class YouTubeVideoCommentEntryTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeVideoCommentFeedFromString( test_data.YOUTUBE_COMMENT_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.entry), 3) self.assert_(isinstance(self.feed.entry[0], gdata.youtube.YouTubeVideoCommentEntry)) for entry in self.feed.entry: if (entry.id.text == ('http://gdata.youtube.com/feeds/videos/' '2Idhz9ef5oU/comments/91F809A3DE2EB81B')): self.assertEquals(entry.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(entry.category[0].term, 'http://gdata.youtube.com/schemas/2007#comment') self.assertEquals(entry.link[0].href, 'http://gdata.youtube.com/feeds/videos/2Idhz9ef5oU') self.assertEquals(entry.link[0].rel, 'related') self.assertEquals(entry.content.text, 'test66') class YouTubeVideoSubscriptionFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeSubscriptionFeedFromString( test_data.YOUTUBE_SUBSCRIPTION_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.category), 1) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#subscription') self.assertEquals(len(self.feed.link), 4) self.assertEquals(self.feed.link[0].rel, 'related') self.assertEquals(self.feed.link[0].href, 'http://gdata.youtube.com/feeds/users/andyland74') self.assertEquals(self.feed.link[1].rel, 'alternate') self.assertEquals(self.feed.link[1].href, 'http://www.youtube.com/profile_subscriptions?user=andyland74') self.assertEquals(self.feed.link[2].rel, 'http://schemas.google.com/g/2005#feed') self.assertEquals(self.feed.link[2].href, 'http://gdata.youtube.com/feeds/users/andyland74/subscriptions') self.assertEquals(self.feed.link[3].rel, 'self') self.assertEquals(self.feed.link[3].href, ('http://gdata.youtube.com/feeds/users/andyland74/subscriptions?' 'start-index=1&max-results=25')) self.assertEquals(len(self.feed.entry), 1) class YouTubeVideoSubscriptionEntryTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeSubscriptionFeedFromString( test_data.YOUTUBE_SUBSCRIPTION_FEED) def testCorrectXmlParsing(self): for entry in self.feed.entry: self.assertEquals(len(entry.category), 2) self.assertEquals(entry.category[0].scheme, 'http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat') self.assertEquals(entry.category[0].term, 'channel') self.assertEquals(entry.category[1].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(entry.category[1].term, 'http://gdata.youtube.com/schemas/2007#subscription') self.assertEquals(len(entry.link), 3) self.assertEquals(entry.link[0].href, 'http://gdata.youtube.com/feeds/users/andyland74') self.assertEquals(entry.link[0].rel, 'related') self.assertEquals(entry.link[1].href, 'http://www.youtube.com/profile_videos?user=NBC') self.assertEquals(entry.link[1].rel, 'alternate') self.assertEquals(entry.link[2].href, ('http://gdata.youtube.com/feeds/users/andyland74/subscriptions/' 'd411759045e2ad8c')) self.assertEquals(entry.link[2].rel, 'self') self.assertEquals(len(entry.feed_link), 1) self.assertEquals(entry.feed_link[0].href, 'http://gdata.youtube.com/feeds/api/users/nbc/uploads') self.assertEquals(entry.feed_link[0].rel, 'http://gdata.youtube.com/schemas/2007#user.uploads') self.assertEquals(entry.username.text, 'NBC') class YouTubeVideoResponseFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeVideoFeedFromString( test_data.YOUTUBE_VIDEO_RESPONSE_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.category), 1) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#video') self.assertEquals(len(self.feed.link), 4) self.assertEquals(self.feed.link[0].href, 'http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY') self.assertEquals(self.feed.link[0].rel, 'related') self.assertEquals(self.feed.link[1].href, 'http://www.youtube.com/video_response_view_all?v=2c3q9K4cHzY') self.assertEquals(self.feed.link[1].rel, 'alternate') self.assertEquals(self.feed.link[2].href, 'http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY/responses') self.assertEquals(self.feed.link[2].rel, 'http://schemas.google.com/g/2005#feed') self.assertEquals(self.feed.link[3].href, ('http://gdata.youtube.com/feeds/videos/2c3q9K4cHzY/responses?' 'start-index=1&max-results=25')) self.assertEquals(self.feed.link[3].rel, 'self') self.assertEquals(len(self.feed.entry), 1) class YouTubeVideoResponseEntryTest(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeVideoFeedFromString( test_data.YOUTUBE_VIDEO_RESPONSE_FEED) def testCorrectXmlParsing(self): for entry in self.feed.entry: self.assert_(isinstance(entry, gdata.youtube.YouTubeVideoEntry)) class YouTubeContactFeed(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeContactFeedFromString( test_data.YOUTUBE_CONTACTS_FEED) def testCorrectXmlParsing(self): self.assertEquals(len(self.feed.entry), 2) self.assertEquals(self.feed.category[0].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[0].term, 'http://gdata.youtube.com/schemas/2007#friend') class YouTubeContactEntry(unittest.TestCase): def setUp(self): self.feed= gdata.youtube.YouTubeContactFeedFromString( test_data.YOUTUBE_CONTACTS_FEED) def testCorrectXmlParsing(self): for entry in self.feed.entry: if (entry.id.text == ('http://gdata.youtube.com/feeds/users/' 'apitestjhartmann/contacts/testjfisher')): self.assertEquals(entry.username.text, 'testjfisher') self.assertEquals(entry.status.text, 'pending') class YouTubeUserEntry(unittest.TestCase): def setUp(self): self.feed = gdata.youtube.YouTubeUserEntryFromString( test_data.YOUTUBE_PROFILE) def testCorrectXmlParsing(self): self.assertEquals(self.feed.author[0].name.text, 'andyland74') self.assertEquals(self.feed.books.text, 'Catch-22') self.assertEquals(self.feed.category[0].scheme, 'http://gdata.youtube.com/schemas/2007/channeltypes.cat') self.assertEquals(self.feed.category[0].term, 'Standard') self.assertEquals(self.feed.category[1].scheme, 'http://schemas.google.com/g/2005#kind') self.assertEquals(self.feed.category[1].term, 'http://gdata.youtube.com/schemas/2007#userProfile') self.assertEquals(self.feed.company.text, 'Google') self.assertEquals(self.feed.gender.text, 'm') self.assertEquals(self.feed.hobbies.text, 'Testing YouTube APIs') self.assertEquals(self.feed.hometown.text, 'Somewhere') self.assertEquals(len(self.feed.feed_link), 6) self.assertEquals(self.feed.feed_link[0].count_hint, '4') self.assertEquals(self.feed.feed_link[0].href, 'http://gdata.youtube.com/feeds/users/andyland74/favorites') self.assertEquals(self.feed.feed_link[0].rel, 'http://gdata.youtube.com/schemas/2007#user.favorites') self.assertEquals(self.feed.feed_link[1].count_hint, '1') self.assertEquals(self.feed.feed_link[1].href, 'http://gdata.youtube.com/feeds/users/andyland74/contacts') self.assertEquals(self.feed.feed_link[1].rel, 'http://gdata.youtube.com/schemas/2007#user.contacts') self.assertEquals(self.feed.feed_link[2].count_hint, '0') self.assertEquals(self.feed.feed_link[2].href, 'http://gdata.youtube.com/feeds/users/andyland74/inbox') self.assertEquals(self.feed.feed_link[2].rel, 'http://gdata.youtube.com/schemas/2007#user.inbox') self.assertEquals(self.feed.feed_link[3].count_hint, None) self.assertEquals(self.feed.feed_link[3].href, 'http://gdata.youtube.com/feeds/users/andyland74/playlists') self.assertEquals(self.feed.feed_link[3].rel, 'http://gdata.youtube.com/schemas/2007#user.playlists') self.assertEquals(self.feed.feed_link[4].count_hint, '4') self.assertEquals(self.feed.feed_link[4].href, 'http://gdata.youtube.com/feeds/users/andyland74/subscriptions') self.assertEquals(self.feed.feed_link[4].rel, 'http://gdata.youtube.com/schemas/2007#user.subscriptions') self.assertEquals(self.feed.feed_link[5].count_hint, '1') self.assertEquals(self.feed.feed_link[5].href, 'http://gdata.youtube.com/feeds/users/andyland74/uploads') self.assertEquals(self.feed.feed_link[5].rel, 'http://gdata.youtube.com/schemas/2007#user.uploads') self.assertEquals(self.feed.first_name.text, 'andy') self.assertEquals(self.feed.last_name.text, 'example') self.assertEquals(self.feed.link[0].href, 'http://www.youtube.com/profile?user=andyland74') self.assertEquals(self.feed.link[0].rel, 'alternate') self.assertEquals(self.feed.link[1].href, 'http://gdata.youtube.com/feeds/users/andyland74') self.assertEquals(self.feed.link[1].rel, 'self') self.assertEquals(self.feed.location.text, 'US') self.assertEquals(self.feed.movies.text, 'Aqua Teen Hungerforce') self.assertEquals(self.feed.music.text, 'Elliott Smith') self.assertEquals(self.feed.occupation.text, 'Technical Writer') self.assertEquals(self.feed.published.text, '2006-10-16T00:09:45.000-07:00') self.assertEquals(self.feed.school.text, 'University of North Carolina') self.assertEquals(self.feed.statistics.last_web_access, '2008-02-25T16:03:38.000-08:00') self.assertEquals(self.feed.statistics.subscriber_count, '1') self.assertEquals(self.feed.statistics.video_watch_count, '21') self.assertEquals(self.feed.statistics.view_count, '9') self.assertEquals(self.feed.thumbnail.url, 'http://i.ytimg.com/vi/YFbSxcdOL-w/default.jpg') self.assertEquals(self.feed.title.text, 'andyland74 Channel') self.assertEquals(self.feed.updated.text, '2008-02-26T11:48:21.000-08:00') self.assertEquals(self.feed.username.text, 'andyland74') if __name__ == '__main__': unittest.main()