import datetime
import os
import sys
sys.path.append(os.path.join('..', '..', '..', '..'))

# Import appropriate classes from the client library.
from adspygoogle.adwords.AdWordsClient import AdWordsClient


# Initialize client object.
client = AdWordsClient(path=os.path.join('..', '..', '..', '..'))
client.use_mcc = True

# Initialize appropriate service.
info_service = client.GetInfoService(
    'https://adwords-sandbox.google.com', 'v201008')

# Construct info selector object and retrieve usage info.
today = datetime.datetime.today()
selector = {
    'dateRange': {
        'min': today.strftime('%Y%m01'),
        'max': today.strftime('%Y%m%d')
    },
    'apiUsageType': 'OPERATION_COUNT'
}
info = info_service.Get(selector)[0]

# Display results.
print ('The total number of operations consumed during \'%s\'-\'%s\' is \'%s\'.'
       % (selector['dateRange']['min'], selector['dateRange']['max'],
class AdWordsClientServiceTest(unittest.TestCase):
    """Tests for retrieving SOAP services via AdWordsClient."""
    def setUp(self):
        """Prepare unittest."""
        self.client = AdWordsClient(headers={
            'authToken': ' ',
            'userAgent': ' ',
            'developerToken': ' '
        })

    def testGetBudgetService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetBudgetService()
            self.assertEquals('BudgetService', service._service_name)

    def testGetInfoService_notAllowed(self):
        self.assertRaises(ValidationError,
                          self.client.GetInfoService,
                          version='v201302')

    def testGetInfoService_allowed(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetInfoService(version='v201209')
            self.assertEquals('InfoService', service._service_name)

    def testGetAdGroupFeedService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetAdGroupFeedService()
            self.assertEquals('AdGroupFeedService', service._service_name)

    def testGetCampaignFeedService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetCampaignFeedService()
            self.assertEquals('CampaignFeedService', service._service_name)

    def testGetFeedItemService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetFeedItemService()
            self.assertEquals('FeedItemService', service._service_name)

    def testGetFeedMappingService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetFeedMappingService()
            self.assertEquals('FeedMappingService', service._service_name)

    def testGetFeedService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetFeedService()
            self.assertEquals('FeedService', service._service_name)

    def testGetCampaignSharedSetService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetCampaignSharedSetService()
            self.assertEquals('CampaignSharedSetService',
                              service._service_name)

    def testGetSharedSetService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetSharedSetService()
            self.assertEquals('SharedSetService', service._service_name)

    def testGetSharedCriterionService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetSharedCriterionService()
            self.assertEquals('SharedCriterionService', service._service_name)

    def testGetAdGroupBidModifierService(self):
        with mock.patch('adspygoogle.SOAPpy.WSDL.Proxy'):
            service = self.client.GetAdGroupBidModifierService()
            self.assertEquals('AdGroupBidModifierService',
                              service._service_name)