Package com.google.api.adwords.v201008

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

// 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 com.google.api.adwords.lib.AdWordsService;
import com.google.api.adwords.lib.AdWordsUser;
import com.google.api.adwords.v201008.cm.AdGroupCriterionIdFilter;
import com.google.api.adwords.v201008.cm.AdGroupCriterionOperation;
import com.google.api.adwords.v201008.cm.AdGroupCriterionPage;
import com.google.api.adwords.v201008.cm.AdGroupCriterionReturnValue;
import com.google.api.adwords.v201008.cm.AdGroupCriterionSelector;
import com.google.api.adwords.v201008.cm.AdGroupCriterionServiceInterface;
import com.google.api.adwords.v201008.cm.Bid;
import com.google.api.adwords.v201008.cm.BiddableAdGroupCriterion;
import com.google.api.adwords.v201008.cm.Criterion;
import com.google.api.adwords.v201008.cm.CriterionUse;
import com.google.api.adwords.v201008.cm.DateRange;
import com.google.api.adwords.v201008.cm.Keyword;
import com.google.api.adwords.v201008.cm.KeywordMatchType;
import com.google.api.adwords.v201008.cm.ManualCPCAdGroupCriterionBids;
import com.google.api.adwords.v201008.cm.Money;
import com.google.api.adwords.v201008.cm.NegativeAdGroupCriterion;
import com.google.api.adwords.v201008.cm.Operator;
import com.google.api.adwords.v201008.cm.StatsSelector;
import com.google.api.adwords.v201008.cm.UserStatus;

/**
* Functional tests for AdGroupAdService.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public class AdGroupCriterionServiceTest extends TestCase {
  private AdWordsUser user = null;
  private long campaignId;
  private long adGroupId;
  private long criterionId;
  private AdGroupCriterionServiceInterface service = null;

  private TestUtils testUtils = null;

  /**
   * 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.ADGROUP_CRITERION_SERVICE);
    testUtils = new TestUtils(user);
    campaignId = testUtils.createCampaign();
    adGroupId = testUtils.createAdGroup(campaignId);
    criterionId = testUtils.createKeyword(adGroupId);
  }

  /**
   * Test adding a biddable ad group criterion.
   */
  public void testAddBiddable() throws Exception {
    // Create keyword.
    Keyword keyword = new Keyword();
    keyword.setText("mars cruise");
    keyword.setMatchType(KeywordMatchType.BROAD);

    // Create biddable ad group criterion.
    BiddableAdGroupCriterion criterion = new BiddableAdGroupCriterion();
    criterion.setAdGroupId(adGroupId);
    criterion.setCriterion(keyword);
    criterion.setUserStatus(UserStatus.PAUSED);
    criterion.setDestinationUrl("http://www.example.com");

    // Create bids.
    ManualCPCAdGroupCriterionBids bids = new ManualCPCAdGroupCriterionBids();
    bids.setMaxCpc(new Bid(new Money(null, 10000L)));
    criterion.setBids(bids);

    // Create operations.
    AdGroupCriterionOperation keywordAdGroupCriterionOperation = new AdGroupCriterionOperation();
    keywordAdGroupCriterionOperation.setOperand(criterion);
    keywordAdGroupCriterionOperation.setOperator(Operator.ADD);

    AdGroupCriterionOperation[] operations =
        new AdGroupCriterionOperation[] {keywordAdGroupCriterionOperation};

    // Add ad group criteria.
    AdGroupCriterionReturnValue result = service.mutate(operations);
    BiddableAdGroupCriterion testCriterion = (BiddableAdGroupCriterion) result.getValue()[0];

    // Exclude generated fields.
    criterion.getCriterion().setId(testCriterion.getCriterion().getId());
    criterion.getCriterion().setCriterionType(testCriterion.getCriterion().getCriterionType());
    criterion.setSystemServingStatus(testCriterion.getSystemServingStatus());
    criterion.setApprovalStatus(testCriterion.getApprovalStatus());
    criterion.setAdGroupCriterionType(testCriterion.getAdGroupCriterionType());
    criterion.getBids().setAdGroupCriterionBidsType(
        testCriterion.getBids().getAdGroupCriterionBidsType());
    ((ManualCPCAdGroupCriterionBids) criterion.getBids())
        .getMaxCpc()
        .getAmount()
        .setComparableValueType(
            (((ManualCPCAdGroupCriterionBids) testCriterion.getBids()).getMaxCpc().getAmount()
                .getComparableValueType()));
    ((ManualCPCAdGroupCriterionBids) criterion.getBids())
        .setBidSource((((ManualCPCAdGroupCriterionBids) testCriterion.getBids()).getBidSource()));
    ((ManualCPCAdGroupCriterionBids) criterion.getBids())
        .setMaxCpc(((ManualCPCAdGroupCriterionBids) testCriterion.getBids()).getMaxCpc());
    ((ManualCPCAdGroupCriterionBids) criterion.getBids())
        .setEnhancedCpcEnabled(((ManualCPCAdGroupCriterionBids) testCriterion.getBids())
            .getEnhancedCpcEnabled());
    criterion.setFirstPageCpc(testCriterion.getFirstPageCpc());
    criterion.setQualityInfo(testCriterion.getQualityInfo());
    criterion.setStats(testCriterion.getStats());

    TestUtils.assertDeepReflectionEquals(criterion, testCriterion);
  }

  /**
   * Test adding a negative ad group criterion.
   */
  public void testAddNegative() throws Exception {
    // Create keyword.
    Keyword keyword = new Keyword();
    keyword.setText("jupiter cruise");
    keyword.setMatchType(KeywordMatchType.BROAD);

    // Create biddable ad group criterion.
    NegativeAdGroupCriterion criterion = new NegativeAdGroupCriterion();
    criterion.setAdGroupId(adGroupId);
    criterion.setCriterion(keyword);

    // Create operations.
    AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
    operation.setOperand(criterion);
    operation.setOperator(Operator.ADD);

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

    // Add ad group criteria.
    AdGroupCriterionReturnValue result = service.mutate(operations);
    NegativeAdGroupCriterion testCriterion = (NegativeAdGroupCriterion) result.getValue()[0];

    // Exclude generated fields.
    criterion.getCriterion().setId(testCriterion.getCriterion().getId());
    criterion.getCriterion().setCriterionType(testCriterion.getCriterion().getCriterionType());
    criterion.setAdGroupCriterionType(testCriterion.getAdGroupCriterionType());

    TestUtils.assertDeepReflectionEquals(criterion, testCriterion);
  }

  /**
   * Test updating an ad group criterion.
   */
  public void testUpdate() throws Exception {
    // Create criterion with criterionId
    BiddableAdGroupCriterion criterion = new BiddableAdGroupCriterion();
    criterion.setAdGroupId(adGroupId);
    criterion.setCriterion(new Criterion(criterionId, null));
    criterion.setUserStatus(UserStatus.PAUSED);

    // Create operations.
    AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
    operation.setOperand(criterion);
    operation.setOperator(Operator.SET);

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

    // Update ad group criteria.
    AdGroupCriterionReturnValue result = service.mutate(operations);
    BiddableAdGroupCriterion testCriterion = (BiddableAdGroupCriterion) result.getValue()[0];

    assertEquals(criterion.getUserStatus(), testCriterion.getUserStatus());
  }

  /**
   * Test removing ad group criterion.
   */
  public void testRemove() throws Exception {
    // Create criterion with criterionId
    BiddableAdGroupCriterion criterion = new BiddableAdGroupCriterion();
    criterion.setAdGroupId(adGroupId);
    criterion.setCriterion(new Criterion(criterionId, null));

    // Create operations.
    AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
    operation.setOperand(criterion);
    operation.setOperator(Operator.SET);

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

    // Update ad group criteria.
    AdGroupCriterionReturnValue result = service.mutate(operations);
    BiddableAdGroupCriterion testCriterion = (BiddableAdGroupCriterion) result.getValue()[0];

    assertEquals(criterion.getCriterion().getId(), testCriterion.getCriterion().getId());
  }

  /**
   * Test getting an ad group criterion.
   */
  public void testGet() throws Exception {
    // Create selector and filter.
    AdGroupCriterionSelector selector = new AdGroupCriterionSelector();
    AdGroupCriterionIdFilter idFilter = new AdGroupCriterionIdFilter(null, adGroupId, criterionId);
    selector.setIdFilters(new AdGroupCriterionIdFilter[] {idFilter});

    selector.setCriterionUse(CriterionUse.BIDDABLE);
    selector.setUserStatuses(new UserStatus[] {UserStatus.ACTIVE});

    // Create DateRange.
    DateRange range = new DateRange(TestUtils.firstDayOfMonth(), TestUtils.today());
    selector.setStatsSelector(new StatsSelector(range, null));

    AdGroupCriterionPage page = service.get(selector);

    assertNotNull(page);
    assertEquals(new Integer(1), page.getTotalNumEntries());
    assertNotNull(((BiddableAdGroupCriterion) page.getEntries(0)).getStats());
  }

  /**
   * Test getting all ad group criteria in an ad group.
   */
  public void testGetAllInAdGroup() throws Exception {
    // Create selector and filter.
    AdGroupCriterionSelector selector = new AdGroupCriterionSelector();
    AdGroupCriterionIdFilter idFilter = new AdGroupCriterionIdFilter(null, adGroupId, null);
    selector.setIdFilters(new AdGroupCriterionIdFilter[] {idFilter});

    AdGroupCriterionPage page = service.get(selector);

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

  /**
   * Test getting all ad group criteria in a campaign.
   */
  public void testGetAllIncampaign() throws Exception {
    // Create selector and filter.
    AdGroupCriterionSelector selector = new AdGroupCriterionSelector();
    AdGroupCriterionIdFilter idFilter = new AdGroupCriterionIdFilter(campaignId, null, null);
    selector.setIdFilters(new AdGroupCriterionIdFilter[] {idFilter});

    AdGroupCriterionPage page = service.get(selector);

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

  /**
   * Test getting all ad group criteria.
   */
  public void testGetAll() throws Exception {
    AdGroupCriterionSelector selector = new AdGroupCriterionSelector();

    AdGroupCriterionPage page = service.get(selector);

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

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

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.