// 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.CampaignCriterion;
import com.google.api.adwords.v201008.cm.CampaignCriterionIdFilter;
import com.google.api.adwords.v201008.cm.CampaignCriterionOperation;
import com.google.api.adwords.v201008.cm.CampaignCriterionPage;
import com.google.api.adwords.v201008.cm.CampaignCriterionReturnValue;
import com.google.api.adwords.v201008.cm.CampaignCriterionSelector;
import com.google.api.adwords.v201008.cm.CampaignCriterionServiceInterface;
import com.google.api.adwords.v201008.cm.Criterion;
import com.google.api.adwords.v201008.cm.Keyword;
import com.google.api.adwords.v201008.cm.KeywordMatchType;
import com.google.api.adwords.v201008.cm.NegativeCampaignCriterion;
import com.google.api.adwords.v201008.cm.Operator;
/**
* Functional tests for AdGroupAdService.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public class CampaignCriterionServiceTest extends TestCase {
private AdWordsUser user = null;
private CampaignCriterionServiceInterface service = null;
private long campaignId;
private long criterionId;
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.CAMPAIGN_CRITERION_SERVICE);
testUtils = new TestUtils(user);
campaignId = testUtils.createCampaign();
criterionId = testUtils.createNegativeCampaignKeyword(campaignId);
}
/**
* Test adding a negative campaign criterion.
*/
public void testAddNegative() throws Exception {
// Create keyword.
Keyword keyword = new Keyword();
keyword.setText("mars cruise");
keyword.setMatchType(KeywordMatchType.BROAD);
// Create negative campaign criterion.
NegativeCampaignCriterion criterion = new NegativeCampaignCriterion();
criterion.setCampaignId(campaignId);
criterion.setCriterion(keyword);
// Create operations.
CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(criterion);
operation.setOperator(Operator.ADD);
// Add campaign criteria.
CampaignCriterionReturnValue result = service
.mutate(new CampaignCriterionOperation[] {operation});
NegativeCampaignCriterion testCriterion = (NegativeCampaignCriterion) result.getValue()[0];
// Exclude generated fields.
criterion.getCriterion().setId(testCriterion.getCriterion().getId());
criterion.getCriterion().setCriterionType(testCriterion.getCriterion().getCriterionType());
criterion.setCampaignCriterionType(testCriterion.getCampaignCriterionType());
TestUtils.assertDeepReflectionEquals(criterion, testCriterion);
}
/**
* Test removing a campaign criterion.
*/
public void testRemove() throws Exception {
// Create a campaign criteria
CampaignCriterion criterion = new CampaignCriterion();
criterion.setCampaignId(campaignId);
criterion.setCriterion(new Criterion(criterionId, null));
// Create operation
CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(criterion);
operation.setOperator(Operator.REMOVE);
// Remove campaign criteria
CampaignCriterionReturnValue result = service
.mutate(new CampaignCriterionOperation[] {operation});
CampaignCriterion testCriterion = (CampaignCriterion) result.getValue()[0];
assertEquals(criterion.getCriterion().getId(), testCriterion.getCriterion().getId());
}
/**
* Test getting campaign criterion.
*/
public void testGet() throws Exception {
// Create selector and filter.
CampaignCriterionSelector selector = new CampaignCriterionSelector();
CampaignCriterionIdFilter filter = new CampaignCriterionIdFilter(campaignId, criterionId);
selector.setIdFilters(new CampaignCriterionIdFilter[] {filter});
CampaignCriterionPage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all campaign criteria in a campaign.
*/
public void testGetAllInCampaign() throws Exception {
// Create selector and filter.
CampaignCriterionSelector selector = new CampaignCriterionSelector();
CampaignCriterionIdFilter filter = new CampaignCriterionIdFilter(campaignId, null);
selector.setIdFilters(new CampaignCriterionIdFilter[] {filter});
CampaignCriterionPage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
/**
* Test getting all campaign criteria.
*/
public void testGetAll() throws Exception {
// Create selector.
CampaignCriterionSelector selector = new CampaignCriterionSelector();
CampaignCriterionPage page = service.get(selector);
assertNotNull(page);
assertNotNull(page.getEntries());
assertTrue("Expected at least 1 entry", page.getTotalNumEntries() >= 1);
}
}