def setUp(self):
        """Prepare unittest."""
        print self.id()
        if not self.__class__.service:
            self.__class__.service = client.GetCreativeService(
                self.__class__.SERVER, self.__class__.VERSION, HTTP_PROXY)

        if self.__class__.advertiser_id == '0':
            company = {
                'name': 'Company #%s' % Utils.GetUniqueName(),
                'type': 'ADVERTISER'
            }
            company_service = client.GetCompanyService(self.__class__.SERVER,
                                                       self.__class__.VERSION,
                                                       HTTP_PROXY)
            self.__class__.advertiser_id = company_service.CreateCompany(
                company)[0]['id']
  def setUp(self):
    """Prepare unittest."""
    print self.id()
    if not self.__class__.service:
      self.__class__.service = client.GetLineItemCreativeAssociationService(
          self.__class__.SERVER, self.__class__.VERSION, HTTP_PROXY)

    if (not self.__class__.creative1 or not self.__class__.creative2 or
        not self.__class__.creative3):
      company = {
        'name': 'Company #%s' % Utils.GetUniqueName(),
        'type': 'ADVERTISER'
      }
      advertiser_id = client.GetCompanyService(
          self.__class__.SERVER, self.__class__.VERSION,
          HTTP_PROXY).CreateCompany(company)[0]['id']
      creatives = []
      for i in xrange(3):
        creatives.append({
            'type': 'ImageCreative',
            'name': 'Image Creative #%s' % Utils.GetUniqueName(),
            'advertiserId': advertiser_id,
            'destinationUrl': 'http://google.com',
            'imageName': 'image.jpg',
            'imageByteArray': self.__class__.IMAGE_DATA,
            'size': {'width': '300', 'height': '250'}
        })
      creatives = client.GetCreativeService(
          self.__class__.SERVER, self.__class__.VERSION,
          HTTP_PROXY).CreateCreatives(creatives)
      self.__class__.creative1 = creatives[0]
      self.__class__.creative2 = creatives[1]
      self.__class__.creative3 = creatives[2]

    if not self.__class__.line_item_id:
      filter_statement = {'query': 'ORDER BY name LIMIT 500'}
      user_service = client.GetUserService(
          self.__class__.SERVER, self.__class__.VERSION, HTTP_PROXY)
      users = user_service.GetUsersByStatement(filter_statement)
      trafficker_id = '0'
      for user in users[0]['results']:
        if user['roleName'] in ('Trafficker',):
          trafficker_id = user['id']
          break
      order = {
          'advertiserId': advertiser_id,
          'currencyCode': 'USD',
          'name': 'Order #%s' % Utils.GetUniqueName(),
          'traffickerId': trafficker_id
      }
      order_id = client.GetOrderService(
          self.__class__.SERVER, self.__class__.VERSION,
          HTTP_PROXY).CreateOrder(order)[0]['id']
      inventory_service = client.GetInventoryService(
          self.__class__.SERVER, self.__class__.VERSION, HTTP_PROXY)
      network_service = client.GetNetworkService(
          self.__class__.SERVER, self.__class__.VERSION,
          HTTP_PROXY)
      root_ad_unit_id = \
          network_service.GetCurrentNetwork()[0]['effectiveRootAdUnitId']
      ad_unit = {
          'name': 'Ad_Unit_%s' % Utils.GetUniqueName(),
          'parentId': root_ad_unit_id,
          'sizes': [{'width': '300', 'height': '250'}],
          'description': 'Ad unit description.',
          'targetWindow': 'BLANK'
      }
      ad_unit_id = inventory_service.CreateAdUnit(ad_unit)[0]['id']
      line_item = {
          'name': 'Line item #%s' % Utils.GetUniqueName(),
          'orderId': order_id,
          'targeting': {
              'inventoryTargeting': {
                  'targetedAdUnitIds': [ad_unit_id]
              }
          },
          'creativeSizes': [
              {'width': '300', 'height': '250'},
              {'width': '120', 'height': '600'}
          ],
          'lineItemType': 'STANDARD',
          'startDateTime': {
              'date': {
                  'year': '2011',
                  'month': '9',
                  'day': '1'
              },
              'hour': '0',
              'minute': '0',
              'second': '0'
          },
          'endDateTime': {
              'date': {
                  'year': '2011',
                  'month': '9',
                  'day': '30'
              },
              'hour': '0',
              'minute': '0',
              'second': '0'
          },
          'costType': 'CPM',
          'costPerUnit': {
              'currencyCode': 'USD',
              'microAmount': '2000000'
          },
          'creativeRotationType': 'EVEN',
          'discountType': 'PERCENTAGE',
          'unitsBought': '500000',
          'unitType': 'IMPRESSIONS'
      }
      self.__class__.line_item_id = client.GetLineItemService(
          self.__class__.SERVER, self.__class__.VERSION,
          HTTP_PROXY).CreateLineItem(line_item)[0]['id']