// 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.AdExtension;
import com.google.api.adwords.v201008.cm.AdExtensionOverride;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideOperation;
import com.google.api.adwords.v201008.cm.AdExtensionOverridePage;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideReturnValue;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideSelector;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideServiceInterface;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideStatus;
import com.google.api.adwords.v201008.cm.LocationOverrideInfo;
import com.google.api.adwords.v201008.cm.LocationOverrideInfoRadiusUnits;
import com.google.api.adwords.v201008.cm.Operator;
import com.google.api.adwords.v201008.cm.OverrideInfo;
/**
* Functional tests for AdExtensionOverrideService.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public class AdExtensionOverrideServiceTest extends TestCase {
private AdWordsUser user = null;
private TestUtils testUtils = null;
private AdExtensionOverrideServiceInterface service = null;
private long campaignId;
private long adGroupId;
private long adIdWithExtension;
private long adIdWithoutExtension;
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.AD_EXTENSION_OVERRIDE_SERVICE);
testUtils = new TestUtils(user);
campaignId = testUtils.createCampaign();
adGroupId = testUtils.createAdGroup(campaignId);
adExtensionId = testUtils.createLocationExtension(campaignId);
adIdWithExtension = testUtils.createTextAd(adGroupId);
adIdWithoutExtension = testUtils.createTextAd(adGroupId);
testUtils.createAdExtensionOverride(adIdWithExtension, adExtensionId);
}
/**
* Test adding an ad extension override.
*/
public void testAdd() throws Exception {
// Create ad extension override.
AdExtension adExtension = new AdExtension();
adExtension.setId(adExtensionId);
AdExtensionOverride adExtensionOverride = new AdExtensionOverride();
adExtensionOverride.setAdId(adIdWithoutExtension);
adExtensionOverride.setAdExtension(adExtension);
adExtensionOverride.setOverrideInfo(new OverrideInfo(new LocationOverrideInfo(new Integer(30),
LocationOverrideInfoRadiusUnits.MILES)));
adExtensionOverride.setStatus(AdExtensionOverrideStatus.ACTIVE);
// Create operations.
AdExtensionOverrideOperation operation = new AdExtensionOverrideOperation();
operation.setOperand(adExtensionOverride);
operation.setOperator(Operator.ADD);
AdExtensionOverrideOperation[] operations = new AdExtensionOverrideOperation[] {operation};
// Add ad extension override.
AdExtensionOverrideReturnValue result = service.mutate(operations);
AdExtensionOverride testAdExtensionOverride = result.getValue()[0];
// Exclude generated fields.
adExtensionOverride.setAdExtension(testAdExtensionOverride.getAdExtension());
adExtensionOverride.setApprovalStatus(testAdExtensionOverride.getApprovalStatus());
adExtensionOverride.setStats(testAdExtensionOverride.getStats());
TestUtils.assertDeepReflectionEquals(adExtensionOverride, testAdExtensionOverride);
}
/**
* Test removing an ad extension override.
*/
public void testRemove() throws Exception {
// Create ad extension and ad extension override
AdExtension adExtension = new AdExtension();
adExtension.setId(adExtensionId);
AdExtensionOverride adExtensionOverride = new AdExtensionOverride();
adExtensionOverride.setAdId(adIdWithExtension);
adExtensionOverride.setAdExtension(adExtension);
// Create operations
AdExtensionOverrideOperation operation = new AdExtensionOverrideOperation();
operation.setOperand(adExtensionOverride);
operation.setOperator(Operator.REMOVE);
AdExtensionOverrideOperation[] operations = new AdExtensionOverrideOperation[] {operation};
// Add ad extension override.
AdExtensionOverrideReturnValue result = service.mutate(operations);
AdExtensionOverride testAdExtensionOverride = result.getValue()[0];
assertEquals(testAdExtensionOverride.getStatus(), AdExtensionOverrideStatus.DELETED);
}
/**
* Test getting an ad extension override.
*/
public void testGet() throws Exception {
// Create selector.
AdExtensionOverrideSelector selector = new AdExtensionOverrideSelector();
selector.setAdIds(new long[] {adIdWithExtension});
selector.setAdExtensionIds(new long[] {adExtensionId});
selector.setStatuses(new AdExtensionOverrideStatus[] {AdExtensionOverrideStatus.ACTIVE,
AdExtensionOverrideStatus.DELETED});
AdExtensionOverridePage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all ad extension override for an ad.
*/
public void testGetAllForAd() throws Exception {
// Create selector.
AdExtensionOverrideSelector selector = new AdExtensionOverrideSelector();
selector.setAdIds(new long[] {adIdWithExtension});
AdExtensionOverridePage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all ad extension overrides for an ad extension.
*/
public void testGetAllForAdExtension() throws Exception {
// Create selector.
AdExtensionOverrideSelector selector = new AdExtensionOverrideSelector();
selector.setAdExtensionIds(new long[] {adExtensionId});
AdExtensionOverridePage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all ad extension override for a campaign.
*/
public void testGetAllForCampaign() throws Exception {
AdExtensionOverrideSelector selector = new AdExtensionOverrideSelector();
selector.setCampaignIds(new long[] {campaignId});
AdExtensionOverridePage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all ad extension overrides.
*/
public void testGetAll() throws Exception {
AdExtensionOverrideSelector selector = new AdExtensionOverrideSelector();
AdExtensionOverridePage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
}