#!/usr/bin/env python

__author__ = "Abhinav Sarkar <abhinav@abhinavsarkar.net>"
__version__ = "0.2"
__license__ = "GNU Lesser General Public License"

import unittest
import datetime
import sys, os

from wsgi_intercept.urllib2_intercept import install_opener
import wsgi_intercept
from wsgi_test_app import create_wsgi_app

install_opener()
wsgi_intercept.add_wsgi_intercept('ws.audioscrobbler.com', 80, create_wsgi_app)
    
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from lastfm import Api

class TestVenue(unittest.TestCase):
    """ A test class for the Geo module. """
    
    def setUp(self):
        self.venue = api.get_venue('tokyo dome')
        
    def tearDown(self):
        pass
    
    def testVenueLocation(self):
        self.assertEqual(self.venue.location.city, 'Tokyo')
        
    def testVenueEvents(self):
        self.assertEqual([e.id for e in self.venue.events[:5]],
                         [942975, 942976, 942986, 942991, 942993])
        
    def testVenuePastEvents(self):
        self.assertEqual([e.id for e in self.venue.past_events[:5]],
                         [845504, 867074, 845502, 845499, 722964])
        
    def testVenueSearch(self):
        venues = [8881428, 8887127, 8894829, 8899152, 8938738,
                  8778901, 8779255, 8779726, 8802306, 8781168]
        self.assertEqual([v.id for v 
                          in list(api.search_venue('stadium')[:10])], venues)
                
apikey = "152a230561e72192b8b0f3e42362c6ff"        
api = Api(apikey, no_cache = True)
        
data = {
    'id': 8780357,
    'name': 'Tokyo Dome',
    'url': 'http://www.last.fm/venue/8780357'
}
for k,v in data.iteritems():
    def testFunc(self):
        self.assertEqual(getattr(self.venue, k), v)
    setattr(TestVenue, "testVenue%s" % k.replace('_', ' ').title().replace(' ', ''), testFunc)
        
test_suite = unittest.TestLoader().loadTestsFromTestCase(TestVenue)

if __name__ == '__main__':
    unittest.main()
