Package com.google.api.ads.adwords.jaxws.utils.v201309

Source Code of com.google.api.ads.adwords.jaxws.utils.v201309.SelectorBuilderTest

// Copyright 2012 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.ads.adwords.jaxws.utils.v201309;

import com.google.api.ads.adwords.jaxws.v201309.cm.CampaignStatus;
import com.google.api.ads.adwords.jaxws.v201309.cm.DateRange;
import com.google.api.ads.adwords.jaxws.v201309.cm.OrderBy;
import com.google.api.ads.adwords.jaxws.v201309.cm.Predicate;
import com.google.api.ads.adwords.jaxws.v201309.cm.PredicateOperator;
import com.google.api.ads.adwords.jaxws.v201309.cm.Selector;
import com.google.api.ads.adwords.jaxws.v201309.cm.SortOrder;

import junit.framework.Assert;

import org.joda.time.DateTime;
import org.junit.Test;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

/**
* Test case for the JAXWS implementation of the selector builder.
*
* @author Gustavo Moreira
*/
public class SelectorBuilderTest {

  /**
   * Tests the immutability of the selector
   */
  @Test
  @SuppressWarnings("unchecked")
  public void testSelctorBuilderImmutability() {
    DateFormat dateFormat = new SimpleDateFormat(SelectorBuilder.DEFAULT_DATE_FORMAT);

    SelectorBuilder builder = new SelectorBuilder();

    DateTime start = new DateTime(2013, 3, 25, 0, 0, 0, 0);
    DateTime end = new DateTime(2013, 3, 26, 0, 0, 0, 0);
    String formatStart = dateFormat.format(start.toDate());
    String formatEnd = dateFormat.format(end.toDate());

    builder = builder.fields("Id", "Name", "Status").forDateRange(start, end);

    Selector selector = builder.build();

    Assert.assertEquals(selector.getDateRange().getMin(), formatStart);
    Assert.assertEquals(selector.getDateRange().getMax(), formatEnd);

    String formatEndPlusOne = dateFormat.format(end.plusDays(1).toDate());

    DateRange dateRange = new DateRange();
    dateRange.setMin(formatStart);
    dateRange.setMax(formatEndPlusOne);

    selector.setDateRange(dateRange);

    Assert.assertEquals(selector.getDateRange().getMin(), formatStart);
    Assert.assertEquals(selector.getDateRange().getMax(), formatEndPlusOne);

    Selector selectorRebuilt =
        builder.fields("Id", "Name", "Status").forDateRange(start, end).build();

    Assert.assertEquals(selectorRebuilt.getDateRange().getMin(), formatStart);
    Assert.assertEquals(selectorRebuilt.getDateRange().getMax(), formatEnd);

  }

  /**
   * Tests the adding of a new field
   */
  @Test
  @SuppressWarnings("unchecked")
  public void testFieldsBuild() {
    SelectorBuilder builder = new SelectorBuilder();

    builder =
        builder.fields("Id", "Name", "Status", "StartDate", "EndDate", "ServingStatus", "Settings");

    Selector selector = builder.build();

    Assert.assertEquals(7, selector.getFields().size());

    Assert.assertEquals("Id", selector.getFields().get(0));
    Assert.assertEquals("Name", selector.getFields().get(1));
    Assert.assertEquals("Status", selector.getFields().get(2));
    Assert.assertEquals("StartDate", selector.getFields().get(3));
    Assert.assertEquals("EndDate", selector.getFields().get(4));
    Assert.assertEquals("ServingStatus", selector.getFields().get(5));
    Assert.assertEquals("Settings", selector.getFields().get(6));

    selector = builder.fields("Id",
        "Name",
        "Status",
        "StartDate",
        "EndDate",
        "ServingStatus",
        "Settings",
        "Id",
        "AverageCpc").build();

    Assert.assertEquals(8, selector.getFields().size());

    Assert.assertEquals("Id", selector.getFields().get(0));
    Assert.assertEquals("Name", selector.getFields().get(1));
    Assert.assertEquals("Status", selector.getFields().get(2));
    Assert.assertEquals("StartDate", selector.getFields().get(3));
    Assert.assertEquals("EndDate", selector.getFields().get(4));
    Assert.assertEquals("ServingStatus", selector.getFields().get(5));
    Assert.assertEquals("Settings", selector.getFields().get(6));
    Assert.assertEquals("AverageCpc", selector.getFields().get(7));

  }

  /**
   * Tests the removal of fields
   */
  @Test
  @SuppressWarnings("unchecked")
  public void testFieldsRemove() {
    SelectorBuilder builder = new SelectorBuilder();

    builder =
        builder.fields("Id", "Name", "Status", "StartDate", "EndDate", "ServingStatus", "Settings");

    Selector selector = builder.build();

    Assert.assertEquals(7, selector.getFields().size());

    Assert.assertEquals("Id", selector.getFields().get(0));
    Assert.assertEquals("Name", selector.getFields().get(1));
    Assert.assertEquals("Status", selector.getFields().get(2));
    Assert.assertEquals("StartDate", selector.getFields().get(3));
    Assert.assertEquals("EndDate", selector.getFields().get(4));
    Assert.assertEquals("ServingStatus", selector.getFields().get(5));
    Assert.assertEquals("Settings", selector.getFields().get(6));

  }

  /**
   * Tests the predicate build for the ID field
   */
  @Test
  public void testPredicatesBuild() {
    SelectorBuilder builder = new SelectorBuilder();

    builder = builder.byId(10L);
    Selector selector = builder.build();

    Assert.assertNotNull(selector.getPredicates());
    Assert.assertEquals(1, selector.getPredicates().size());

    Predicate predicate = selector.getPredicates().get(0);
    Assert.assertEquals("Id", predicate.getField());
    Assert.assertEquals(PredicateOperator.EQUALS, predicate.getOperator());
    Assert.assertNotNull(predicate.getValues());
    Assert.assertEquals(1, predicate.getValues().size());
    Assert.assertEquals("10", predicate.getValues().get(0));

  }

  /**
   * Tests the predicate with the IN clause
   */
  @Test
  public void testPredicatesInBuild() {
    SelectorBuilder builder = new SelectorBuilder();

    builder =
        builder.in("Status", CampaignStatus.ACTIVE.toString(), CampaignStatus.DELETED.toString());
    Selector selector = builder.build();

    Assert.assertNotNull(selector.getPredicates());
    Assert.assertEquals(1, selector.getPredicates().size());

    Predicate predicate = selector.getPredicates().get(0);
    Assert.assertEquals("Status", predicate.getField());
    Assert.assertEquals(PredicateOperator.IN, predicate.getOperator());
    Assert.assertNotNull(predicate.getValues());
    Assert.assertEquals(2, predicate.getValues().size());
    Assert.assertEquals(CampaignStatus.ACTIVE.toString(), predicate.getValues().get(0));
    Assert.assertEquals(CampaignStatus.DELETED.toString(), predicate.getValues().get(1));

  }

  /**
   * Tests the order by criteria
   */
  @Test
  public void testOrderByBuild() {
    SelectorBuilder builder = new SelectorBuilder();

    builder = builder.orderAscBy("AverageCpm");
    Selector selector = builder.build();

    Assert.assertNotNull(selector.getOrdering());
    Assert.assertEquals(1, selector.getOrdering().size());

    OrderBy orderBy = selector.getOrdering().get(0);

    Assert.assertEquals("AverageCpm", orderBy.getField());
    Assert.assertEquals(SortOrder.ASCENDING, orderBy.getSortOrder());

    builder.orderDescBy("AverageCpc");
    selector = builder.build();

    Assert.assertNotNull(selector.getOrdering());
    Assert.assertEquals(2, selector.getOrdering().size());

    orderBy = selector.getOrdering().get(0);

    Assert.assertEquals("AverageCpm", orderBy.getField());
    Assert.assertEquals(SortOrder.ASCENDING, orderBy.getSortOrder());

    orderBy = selector.getOrdering().get(1);

    Assert.assertEquals("AverageCpc", orderBy.getField());
    Assert.assertEquals(SortOrder.DESCENDING, orderBy.getSortOrder());

    selector = builder.removeOrderBy("AverageCpm").build();

    Assert.assertNotNull(selector.getOrdering());
    Assert.assertEquals(1, selector.getOrdering().size());

    orderBy = selector.getOrdering().get(0);

    Assert.assertEquals("AverageCpc", orderBy.getField());
    Assert.assertEquals(SortOrder.DESCENDING, orderBy.getSortOrder());

  }

  /**
   * Tests the date range setting
   */
  @Test
  public void testDateRangeBuild() {
    DateFormat dateFormat = new SimpleDateFormat(SelectorBuilder.DEFAULT_DATE_FORMAT);

    SelectorBuilder builder = new SelectorBuilder();

    DateTime start = new DateTime(2013, 3, 25, 0, 0, 0, 0);
    DateTime end = new DateTime(2013, 3, 26, 0, 0, 0, 0);
    String formatStart = dateFormat.format(start.toDate());
    String formatEnd = dateFormat.format(end.toDate());

    builder = builder.forDateRange(start, end);
    Selector selector = builder.build();

    Assert.assertEquals(selector.getDateRange().getMin(), formatStart);
    Assert.assertEquals(selector.getDateRange().getMax(), formatEnd);
  }


  /**
   * Tests the offset, limit and paging logic of the builder.
   */
  @Test
  public void testPagingAndLimits() {
    SelectorBuilder builder = new SelectorBuilder();

    builder = builder.offset(10);
    Selector selector = builder.build();

    Assert.assertNotNull(selector.getPaging());
    Assert.assertNotNull(selector.getPaging().getStartIndex());
    Assert.assertNull(selector.getPaging().getNumberResults());
    Assert.assertEquals(selector.getPaging().getStartIndex().intValue(), 10);

    selector = builder.offset(10).limit(20).build();

    Assert.assertNotNull(selector.getPaging());
    Assert.assertNotNull(selector.getPaging().getStartIndex());
    Assert.assertNotNull(selector.getPaging().getNumberResults());
    Assert.assertEquals(selector.getPaging().getStartIndex().intValue(), 10);
    Assert.assertEquals(selector.getPaging().getNumberResults().intValue(), 20);

    selector = builder.offset(10).limit(20).increaseOffsetBy(5).build();

    Assert.assertNotNull(selector.getPaging());
    Assert.assertNotNull(selector.getPaging().getStartIndex());
    Assert.assertNotNull(selector.getPaging().getNumberResults());
    Assert.assertEquals(selector.getPaging().getStartIndex().intValue(), 15);
    Assert.assertEquals(selector.getPaging().getNumberResults().intValue(), 20);

    selector = builder.offset(10).limit(20).removeLimitAndOffset().build();

    Assert.assertNull(selector.getPaging());

    selector = builder.offset(10).limit(20).removeLimitAndOffset().offset(55).limit(4).build();

    Assert.assertNotNull(selector.getPaging());
    Assert.assertNotNull(selector.getPaging().getStartIndex());
    Assert.assertNotNull(selector.getPaging().getNumberResults());
    Assert.assertEquals(selector.getPaging().getStartIndex().intValue(), 55);
    Assert.assertEquals(selector.getPaging().getNumberResults().intValue(), 4);

  }

  /**
   * Tests that the built selectors don't share internal Paging state.
   */
  @Test
  public void testUniqueInternalPagingState() {
    SelectorBuilder builder = new SelectorBuilder();
    Selector selectorOne = builder.fields("Id").offset(10).build();
    Selector selectorTwo = builder.fields("Status").offset(345).build();

    Assert.assertEquals(10, selectorOne.getPaging().getStartIndex().intValue());
    Assert.assertEquals(345, selectorTwo.getPaging().getStartIndex().intValue());
  }

  /**
   * Tests that the built selectors don't share internal OrderBy state.
   */
  @Test
  public void testUniqueInternalOrderByState() {
    SelectorBuilder builder = new SelectorBuilder();
    Selector selectorOne = builder.orderAscBy("Id").build();
    Selector selectorTwo = builder.build();

    OrderBy orderTwo = selectorTwo.getOrdering().get(0);
    orderTwo.setField("Status");

    Assert.assertEquals("Id", selectorOne.getOrdering().get(0).getField());
    Assert.assertEquals("Status", selectorTwo.getOrdering().get(0).getField());
  }

  /**
   * Tests that the built selectors don't share internal Predicate state.
   */
  @Test
  public void testUniqueInternalPredicateState() {
    SelectorBuilder builder = new SelectorBuilder();
    Selector selectorOne = builder.by("Id", "test").build();
    Selector selectorTwo = builder.build();

    Predicate predicateTwo = selectorTwo.getPredicates().get(0);
    predicateTwo.setField("Status");

    Assert.assertEquals("Id", selectorOne.getPredicates().get(0).getField());
    Assert.assertEquals("Status", selectorTwo.getPredicates().get(0).getField());
  }

  /**
   * Tests that the built selectors don't share internal DateRange state.
   */
  @Test
  public void testUniqueInternalDateRangeState() {
    SelectorBuilder builder = new SelectorBuilder();
    DateFormat dateFormat = new SimpleDateFormat(SelectorBuilder.DEFAULT_DATE_FORMAT);

    DateTime startOne = new DateTime(2013, 1, 1, 0, 0, 0, 0);
    DateTime endOne = new DateTime(2013, 1, 31, 0, 0, 0, 0);
    DateTime startTwo = new DateTime(2013, 2, 1, 0, 0, 0, 0);
    DateTime endTwo = new DateTime(2013, 2, 28, 0, 0, 0, 0);

    Selector selectorOne = builder.forDateRange(startOne, endOne).build();
    Selector selectorTwo = builder.forDateRange(startTwo, endTwo).build();

    Assert.assertEquals(dateFormat.format(startOne.toDate()), selectorOne.getDateRange().getMin());
    Assert.assertEquals(dateFormat.format(endOne.toDate()), selectorOne.getDateRange().getMax());
    Assert.assertEquals(dateFormat.format(startTwo.toDate()), selectorTwo.getDateRange().getMin());
    Assert.assertEquals(dateFormat.format(endTwo.toDate()), selectorTwo.getDateRange().getMax());
  }

}
TOP

Related Classes of com.google.api.ads.adwords.jaxws.utils.v201309.SelectorBuilderTest

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.