// 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 com.google.api.adwords.lib.AdWordsService;
import com.google.api.adwords.lib.AdWordsUser;
import com.google.api.adwords.v201008.cm.CampaignTargetOperation;
import com.google.api.adwords.v201008.cm.CampaignTargetPage;
import com.google.api.adwords.v201008.cm.CampaignTargetReturnValue;
import com.google.api.adwords.v201008.cm.CampaignTargetSelector;
import com.google.api.adwords.v201008.cm.CampaignTargetServiceInterface;
import com.google.api.adwords.v201008.cm.CountryTarget;
import com.google.api.adwords.v201008.cm.GeoTarget;
import com.google.api.adwords.v201008.cm.GeoTargetList;
import com.google.api.adwords.v201008.cm.LanguageTarget;
import com.google.api.adwords.v201008.cm.LanguageTargetList;
import com.google.api.adwords.v201008.cm.NetworkCoverageType;
import com.google.api.adwords.v201008.cm.NetworkTarget;
import com.google.api.adwords.v201008.cm.NetworkTargetList;
import com.google.api.adwords.v201008.cm.Operator;
import com.google.api.adwords.v201008.cm.TargetList;
import junit.framework.TestCase;
/**
* Functional tests for {@link com.google.api.adwords.v201008.cm
* CampaignTargetService}.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public class CampaignTargetServiceTest extends TestCase {
private AdWordsUser user = null;
private CampaignTargetServiceInterface service = null;
private long campaignId;
private TestUtils testUtils = null;
/**
* Set up the test fixtures.
*/
@Override
protected void setUp() throws Exception {
super.setUp();
user = TestUtils.createUser("test_data/test.properties");
testUtils = new TestUtils(user);
campaignId = testUtils.createCampaign();
}
/**
* Test setting campaign targets.
*/
public void testSet() throws Exception {
service = user.getService(AdWordsService.V201008.CAMPAIGN_TARGET_SERVICE);
// Create language targets.
LanguageTargetList languageTargetList = new LanguageTargetList();
languageTargetList.setCampaignId(campaignId);
languageTargetList.setTargets(new LanguageTarget[] {new LanguageTarget(null, "fr"),
new LanguageTarget(null, "ja")});
// Create geo targets.
GeoTargetList geoTargetList = new GeoTargetList();
geoTargetList.setCampaignId(campaignId);
geoTargetList.setTargets(new GeoTarget[] {new CountryTarget(null, false, "US"),
new CountryTarget(null, false, "JP")});
// Create network targets.
NetworkTargetList networkTargetList = new NetworkTargetList();
networkTargetList.setCampaignId(campaignId);
networkTargetList.setTargets(new NetworkTarget[] {
// Specifying GOOGLE_SEARCH is necessary if you want to target
// SEARCH_NETWORK.
new NetworkTarget(null, NetworkCoverageType.GOOGLE_SEARCH),
new NetworkTarget(null, NetworkCoverageType.SEARCH_NETWORK)});
CampaignTargetOperation languageTargetOperation = new CampaignTargetOperation();
languageTargetOperation.setOperand(languageTargetList);
languageTargetOperation.setOperator(Operator.SET);
CampaignTargetOperation geoTargetOperation = new CampaignTargetOperation();
geoTargetOperation.setOperand(geoTargetList);
geoTargetOperation.setOperator(Operator.SET);
CampaignTargetOperation networkTargetOperation = new CampaignTargetOperation();
networkTargetOperation.setOperand(networkTargetList);
networkTargetOperation.setOperator(Operator.SET);
CampaignTargetOperation[] operations = new CampaignTargetOperation[] {languageTargetOperation,
geoTargetOperation, networkTargetOperation};
// Set campaign targets.
CampaignTargetReturnValue result = service.mutate(operations);
// Exclude generated fields and test objects.
if (result != null && result.getValue() != null) {
for (TargetList testList : result.getValue()) {
if (testList.getTargetListType().equals("LanguageTargetList")) {
languageTargetList.setTargetListType(testList.getTargetListType());
for (LanguageTarget languageTarget : languageTargetList.getTargets()) {
languageTarget.setTargetType(((LanguageTarget) ((LanguageTargetList) testList)
.getTargets()[0]).getTargetType());
}
TestUtils.assertDeepReflectionEquals(languageTargetList, testList);
} else if (testList.getTargetListType().equals("GeoTargetList")) {
geoTargetList.setTargetListType(testList.getTargetListType());
for (GeoTarget geoTarget : geoTargetList.getTargets()){
geoTarget.setTargetType(((GeoTarget)((GeoTargetList) testList)
.getTargets()[0]).getTargetType());
}
TestUtils.assertDeepReflectionEquals(geoTargetList, testList);
} else if (testList.getTargetListType().equals("NetworkTargetList")) {
networkTargetList.setTargetListType(testList.getTargetListType());
for (NetworkTarget networkTarget : networkTargetList.getTargets()){
networkTarget.setTargetType(((NetworkTarget)((NetworkTargetList) testList)
.getTargets()[0]).getTargetType());
}
TestUtils.assertDeepReflectionEquals(networkTargetList, testList);
}
}
} else {
System.out.println("No campaign targets were set.");
}
}
/**
* Test getting all campaign targets for a campaign.
*/
public void testGetAllForCampaign() throws Exception {
service = user.getService(AdWordsService.V201008.CAMPAIGN_TARGET_SERVICE);
// Create selector.
CampaignTargetSelector selector = new CampaignTargetSelector();
selector.setCampaignIds(new long[] {campaignId});
// Get all campaign targets.
CampaignTargetPage page = service.get(selector);
assertEquals(7, page.getEntries().length);
}
}