Package org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget

Source Code of org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderTest

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget;

import junit.framework.TestCase;

import static org.mockito.Mockito.*;

import org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderImpl;
import org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProvider.GadgetCategoryType;
import org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProvider.GadgetInfo;

import java.util.ArrayList;
import java.util.List;

/**
* Tests for the {@link GadgetInfoProvider} class.
*
* @author wavegrove@gmail.com
*/
public class GadgetInfoProviderTest extends TestCase {

  GadgetInfoProviderImpl gadgetInfoProvider;
  ArrayList<GadgetInfo> gadgetInfoList;

  private static final GadgetInfo gadget1 = new GadgetInfo(
      "firstTestName",
      "A description",
      GadgetCategoryType.VOTING,
      GadgetCategoryType.OTHER,
      "gadgetUrl1",
      "gadgetAuthor1",
      "gadgetSubmittor1",
      "gadgetImage1");

  private static final GadgetInfo gadget2 = new GadgetInfo(
      "SecondTestname",
      "This is a test DESCRIPTION",
      GadgetCategoryType.PRODUCTIVITY,
      GadgetCategoryType.OTHER,
      "gadgetUrl2",
      "gadgetAuthor2",
      "gadgetSubmittor2",
      "gadgetImage2");

  private static final GadgetInfo gadget3 = new GadgetInfo(
      "thirdtestNAME",
      "Description number three",
      GadgetCategoryType.PRODUCTIVITY,
      GadgetCategoryType.TEAM,
      "gadgetUrl3", "gadgetAuthor3",
      "gadgetSubmittor3",
      "gadgetImage3");

  @Override
  protected void setUp() throws java.lang.Exception {
    List<GadgetInfo> gadgetList = new ArrayList<GadgetInfo>();
    gadgetList.add(gadget1);
    gadgetList.add(gadget2);
    gadgetList.add(gadget3);
    GadgetInfoParser parser = mock(GadgetInfoParser.class);
    when(parser.parseGadgetInfoJson(anyString())).thenReturn(gadgetList);

    gadgetInfoProvider = new GadgetInfoProviderImpl(parser);
    gadgetInfoProvider.addGadgetJson("");
    gadgetInfoList = new ArrayList<GadgetInfo>();
  }

  public void testUnfilteredList() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);
    gadgetInfoList.add(gadget2);
    gadgetInfoList.add(gadget3);

    assertSame("The unfiltered list got the wrong size", 3, infoProviderList.size());
    assertSameList(gadgetInfoList, infoProviderList);
  }

  public void testFilterFullName() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("firstTestName", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);

    assertSame("The filter text 'firstTestName' resulted in wrong amount of filtered gadgets", 1,
        infoProviderList.size());
    assertSameList(gadgetInfoList, infoProviderList);
  }

  public void testFilterPartialName() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("firstTest", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);

    assertSame("The filter text 'firstTest' resulted in wrong amount of filtered gadgets", 1,
        infoProviderList.size());
    assertSameList(gadgetInfoList, infoProviderList);
  }

  public void testFilterCaseInsensitiveName() {
    List<GadgetInfo> infoProviderList1 =
        gadgetInfoProvider.getGadgetInfoList("name", GadgetCategoryType.ALL.getType());
    List<GadgetInfo> infoProviderList2 =
        gadgetInfoProvider.getGadgetInfoList("Name", GadgetCategoryType.ALL.getType());
    List<GadgetInfo> infoProviderList3 =
        gadgetInfoProvider.getGadgetInfoList("NAME", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);
    gadgetInfoList.add(gadget2);
    gadgetInfoList.add(gadget3);

    assertSame("The filter text 'name' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList1.size());
    assertSame("The filter text 'Name' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList2.size());
    assertSame("The filter text 'NAME' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList3.size());

    assertSameList(gadgetInfoList, infoProviderList1);
    assertSameList(gadgetInfoList, infoProviderList2);
    assertSameList(gadgetInfoList, infoProviderList3);
  }

  public void testFilterPartialDescription() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("This is a", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget2);

    assertSame("The filter text 'This is a' resulted in wrong amount of filtered gadgets", 1,
        infoProviderList.size());
    assertSameList(gadgetInfoList, infoProviderList);
  }

  public void testFilterCaseInsensitiveDescription() {
    List<GadgetInfo> infoProviderList1 =
        gadgetInfoProvider.getGadgetInfoList("description", GadgetCategoryType.ALL.getType());
    List<GadgetInfo> infoProviderList2 =
        gadgetInfoProvider.getGadgetInfoList("Description", GadgetCategoryType.ALL.getType());
    List<GadgetInfo> infoProviderList3 =
        gadgetInfoProvider.getGadgetInfoList("DESCRIPTION", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);
    gadgetInfoList.add(gadget2);
    gadgetInfoList.add(gadget3);

    assertSame("The filter text 'description' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList1.size());
    assertSame("The filter text 'Description' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList2.size());
    assertSame("The filter text 'DESCRIPTION' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList3.size());

    assertSameList(gadgetInfoList, infoProviderList1);
    assertSameList(gadgetInfoList, infoProviderList2);
    assertSameList(gadgetInfoList, infoProviderList3);
  }

  public void testFilterNameAndDescription() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("test", GadgetCategoryType.ALL.getType());
    gadgetInfoList.add(gadget1);
    gadgetInfoList.add(gadget2);
    gadgetInfoList.add(gadget3);

    assertSame("The filter text 'test' resulted in wrong amount of filtered gadgets", 3,
        infoProviderList.size());
    assertSameList(gadgetInfoList, infoProviderList);
  }

  public void testFilterPrimaryCategory() {
    List<GadgetInfo> infoProviderList1 =
        gadgetInfoProvider.getGadgetInfoList("", GadgetCategoryType.PRODUCTIVITY.getType());
    List<GadgetInfo> infoProviderList2 =
        gadgetInfoProvider.getGadgetInfoList("", GadgetCategoryType.VOTING.getType());

    assertSame("The filter category 'PRODUCTIVITY' resulted in wrong amount of filtered gadgets",
        2, infoProviderList1.size());
    assertSame("The filter category 'VOTING' resulted in wrong amount of filtered gadgets", 1,
        infoProviderList2.size());

    assertSameList(gadgetInfoList, infoProviderList1);
    assertSameList(gadgetInfoList, infoProviderList2);
  }

  public void testFilterSecondaryCategory() {
    List<GadgetInfo> infoProviderList1 =
        gadgetInfoProvider.getGadgetInfoList("", GadgetCategoryType.OTHER.getType());
    List<GadgetInfo> infoProviderList2 =
        gadgetInfoProvider.getGadgetInfoList("", GadgetCategoryType.TEAM.getType());

    assertSame("The filter category 'OTHER' resulted in wrong amount of filtered gadgets", 2,
        infoProviderList1.size());
    assertSame("The filter category 'TEAM' resulted in wrong amount of filtered gadgets", 1,
        infoProviderList2.size());

    assertSameList(gadgetInfoList, infoProviderList1);
    assertSameList(gadgetInfoList, infoProviderList2);
  }

  public void testFilterNone() {
    List<GadgetInfo> infoProviderList =
        gadgetInfoProvider.getGadgetInfoList("abcdefghij", GadgetCategoryType.ALL.getType());

    assertSame("The filter text 'abcdefghij' resulted in wrong amount of filtered gadgets", 0,
        infoProviderList.size());
  }

  private void assertSameList(List<GadgetInfo> expected, List<GadgetInfo> actual) {
    for (int i = 0; i < expected.size(); i++) {
      GadgetInfo gadget1 = expected.get(i);
      GadgetInfo gadget2 = actual.get(i);
      if (!isEqual(gadget1, gadget2)) {
        fail("The filtered gadgets are not the same: " + gadget1.getName() + ", "
            + gadget2.getName());
      }
    }
  }

  private boolean isEqual(GadgetInfo gadget1, GadgetInfo gadget2) {
    if (gadget1.getName().equals(gadget2.getName())
        || gadget1.getDescription().equals(gadget2.getDescription())
        || gadget1.getGadgetUrl().equals(gadget2.getGadgetUrl())
        || gadget1.getImageUrl().equals(gadget2.getImageUrl())
        || gadget1.getPrimaryCategory().getType().equals(gadget2.getPrimaryCategory().getType())
        || gadget1.getSecondaryCategory().getType().equals(gadget2.getSecondaryCategory().getType())
        || gadget1.getSubmittedBy().equals(gadget2.getSubmittedBy())
        || gadget1.getAuthor().equals(gadget2.getAuthor())) {
      return true;
    }
    return false;
  }
}
TOP

Related Classes of org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfoProviderTest

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.