Package com.google.api.adwords.v201008

Source Code of com.google.api.adwords.v201008.CampaignAdExtensionServiceTest

// Copyright 2011 Google Inc. All Rights Reserved.
//
// 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.

package com.google.api.adwords.v201008;

import junit.framework.TestCase;

import org.apache.commons.codec.binary.Base64;

import com.google.api.adwords.lib.AdWordsService;
import com.google.api.adwords.lib.AdWordsUser;
import com.google.api.adwords.v201008.cm.AdExtension;
import com.google.api.adwords.v201008.cm.Address;
import com.google.api.adwords.v201008.cm.CampaignAdExtension;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionOperation;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionPage;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionReturnValue;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionSelector;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionServiceInterface;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionStatsSelector;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionStatus;
import com.google.api.adwords.v201008.cm.DateRange;
import com.google.api.adwords.v201008.cm.GeoLocationServiceInterface;
import com.google.api.adwords.v201008.cm.GeoPoint;
import com.google.api.adwords.v201008.cm.LocationExtension;
import com.google.api.adwords.v201008.cm.LocationExtensionSource;
import com.google.api.adwords.v201008.cm.Operator;

/**
* Functional tests for CampaignAdExtensionService.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public class CampaignAdExtensionServiceTest extends TestCase {
  private AdWordsUser user = null;
  private CampaignAdExtensionServiceInterface service = null;
  private GeoLocationServiceInterface geoLocationService = null;
  private TestUtils testUtils = null;

  private long campaignId;
  private long adExtensionId;

  /**
   * Set up the test fixtures.
   */
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    user = new AdWordsUser("test_data/test.properties");
    service = user.getService(AdWordsService.V201008.CAMPAIGN_AD_EXTENSION_SERVICE);
    geoLocationService = user.getService(AdWordsService.V201008.GEO_LOCATION_SERVICE);

    testUtils = new TestUtils(user);
    campaignId = testUtils.createCampaign();
    adExtensionId = testUtils.createLocationExtension(campaignId);
  }

  /**
   * Test adding an campaign ad extension.
   */
  public void testAdd() throws Exception {
    // Create campaign ad extension.
    CampaignAdExtension extension = new CampaignAdExtension();
    extension.setCampaignId(campaignId);
    extension.setAdExtension(adExtensionProvider()[0]);
    extension.setStatus(CampaignAdExtensionStatus.ACTIVE);

    // Create operations.
    CampaignAdExtensionOperation operation = new CampaignAdExtensionOperation();
    operation.setOperand(extension);
    operation.setOperator(Operator.ADD);

    CampaignAdExtensionOperation[] operations = new CampaignAdExtensionOperation[] {operation};

    // Add campaign ad extension.
    CampaignAdExtensionReturnValue result = service.mutate(operations);
    CampaignAdExtension testExtension = result.getValue()[0];

    // Exclude generated fields.
    extension.getAdExtension().setId(testExtension.getAdExtension().getId());
    extension.getAdExtension().setAdExtensionType(
        testExtension.getAdExtension().getAdExtensionType());
    ((LocationExtension) extension.getAdExtension()).getAddress().setProvinceCode(
        ((LocationExtension) testExtension.getAdExtension()).getAddress().getProvinceCode());
    ((LocationExtension) extension.getAdExtension())
        .setEncodedLocation(((LocationExtension) testExtension.getAdExtension())
            .getEncodedLocation());
    extension.setApprovalStatus(testExtension.getApprovalStatus());

    TestUtils.assertDeepReflectionEquals(extension, testExtension);
  }

  /**
   * Test removing a campaign ad extension.
   */
  public void testRemove() throws Exception {
    // Create campaign ad extension
    CampaignAdExtension extension = new CampaignAdExtension();
    extension.setCampaignId(campaignId);
    extension.setAdExtension(new AdExtension(adExtensionId, null));

    // Create operations.
    CampaignAdExtensionOperation operation = new CampaignAdExtensionOperation();
    operation.setOperand(extension);
    operation.setOperator(Operator.REMOVE);

    CampaignAdExtensionOperation[] operations = new CampaignAdExtensionOperation[] {operation};

    // Add campaign ad extension.
    CampaignAdExtensionReturnValue result = service.mutate(operations);
    CampaignAdExtension testExtension = result.getValue()[0];

    assertEquals(CampaignAdExtensionStatus.DELETED, testExtension.getStatus());
  }

  /**
   * Test getting all campaign ad extension for a campaign.
   */
  public void testGetAllForCampaign() throws Exception {
    // Create selector.
    CampaignAdExtensionSelector selector = new CampaignAdExtensionSelector();
    DateRange range = new DateRange(TestUtils.firstDayOfMonth(), TestUtils.today());
    selector.setStatsSelector(new CampaignAdExtensionStatsSelector(range, null));
    selector.setCampaignIds(new long[] {campaignId});
    selector.setStatuses(new CampaignAdExtensionStatus[] {CampaignAdExtensionStatus.ACTIVE,
        CampaignAdExtensionStatus.DELETED});

    CampaignAdExtensionPage page = service.get(selector);

    assertNotNull(page);
    assertNotNull(page.getEntries());
    assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
  }

  /**
   * Test getting all campaign ad extensions for an ad extension.
   */
  public void testGetAllForAdExtension() throws Exception {
    // Create selector.
    CampaignAdExtensionSelector selector = new CampaignAdExtensionSelector();
    selector.setAdExtensionIds(new long[] {adExtensionId});

    CampaignAdExtensionPage page = service.get(selector);

    assertNotNull(page);
    assertNotNull(page.getEntries());
    assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
  }

  /**
   * Test getting all campaign ad extensions.
   */
  public void testGetAll() throws Exception {
    // Create selector.
    CampaignAdExtensionSelector selector = new CampaignAdExtensionSelector();

    CampaignAdExtensionPage page = service.get(selector);

    assertNotNull(page);
    assertNotNull(page.getEntries());
    assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
  }

  /**
   * Provides ad extensions.
   */
  private AdExtension[] adExtensionProvider() {
    // Create location extension.
    LocationExtension locationExtension = new LocationExtension();
    locationExtension.setAddress(new Address("76 9th Ave", null, "New York", "NY", "NY", "10011",
        "US"));
    locationExtension.setGeoPoint(new GeoPoint(new Integer(40742412), new Integer(-74004378)));
    String encoded = "qrvM3QDB3iJsdO58XYyix7YGjYhU+jHs3GR0J6uqpGp55fMTsorT5ZLH69crnCWnM3"
        + "FVAFDO9Un4HNbc5/ORF0Y8hZL/sPevCyxMrjZ2gmwbQwi2fvDB2J7RhyWSV4uWA3LT"
        + "0sdG2b22nH34uDh88XZyTyZMk0Fgc6wmmIwKSlUdYlyCzJ00Qd2JGboNgcWnVeHC8c"
        + "bGd4BzGR839qM7tGXlW5TvuGUs/lz3WjScPbHY8L0TfYcv2JV3c88di7qZJem7XV9I"
        + "Qqm3SFfWOwyC6K3y1v9p+V3twZoBCf02QVZFiohpTzau9Bj6hbXNoB7LKMHK1skduI"
        + "gs854r83tIp1FevrxVNp3S7npNDcQaNAMHoYzX8iDGASwR8sWg2JUYeiTns6AihCAp"
        + "QmwNTdYHhhgh75B9PqYpSA5ghBWr0xWpiZBnM9713DwvG4LCD2smG43VAGUUrCVknw"
        + "rMxS/XSoF6NMzAFi648SglPozoGrLPdQ/4IbaIr91yAJpegOGivQPQ7NMLc2ClnYt5"
        + "mj/IzHjNK7u1WDJFW2CF0Kw+/50zljzvWDVUiBxGha7da7ihyuR32D+uCJOM+HsCgA==";
    locationExtension.setEncodedLocation(Base64.decodeBase64(encoded.getBytes()));

    locationExtension.setCompanyName("Google");
    locationExtension.setPhoneNumber("(212) 565-0000");
    locationExtension.setSource(LocationExtensionSource.ADWORDS_FRONTEND);

    return new AdExtension[] {locationExtension};
  }
}
TOP

Related Classes of com.google.api.adwords.v201008.CampaignAdExtensionServiceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.