/*
* This file is part of Mockey, a tool for testing application
* interactions over HTTP, with a focus on testing web services,
* specifically web applications that consume XML, JSON, and HTML.
*
* Copyright (C) 2009-2010 Authors:
*
* chad.lafontaine (chad.lafontaine AT gmail DOT com)
* neil.cronin (neil AT rackle DOT com)
* lorin.kobashigawa (lkb AT kgawa DOT com)
* rob.meyer (rob AT bigdis DOT com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package com.mockey;
import java.util.List;
import org.testng.annotations.Test;
import com.mockey.model.Scenario;
import com.mockey.model.SearchResult;
import com.mockey.model.SearchResultType;
import com.mockey.model.Service;
import com.mockey.model.ServicePlan;
import com.mockey.storage.IMockeyStorage;
import com.mockey.storage.InMemoryMockeyStorage;
@Test
public class SearchResultBuilderTest {
/**
* Term 'scenario' only appears 1 time, in type Scenario Term 'service' only
* appears 2 times, in type Scenario and Service
*/
@Test
public void validateSearchResultByName() {
IMockeyStorage store = new InMemoryMockeyStorage();
Service a = new Service();
a.setServiceName("Service A");
Scenario aScenario = new Scenario();
aScenario.setScenarioName("Service Scenario A");
a.saveOrUpdateScenario(aScenario);
store.saveOrUpdateService(a);
String term = "scenario";
SearchResultBuilder resultBuilder = new SearchResultBuilder();
List<SearchResult> resultList = resultBuilder.buildSearchResults(term,
store);
assert (resultList.size() == 1) : "Length should be: "
+ resultList.size();
assert (resultList.get(0).getType() == SearchResultType.SERVICE_SCENARIO) : "Incorrect type, should be '"
+ SearchResultType.SERVICE_SCENARIO
+ "' but was '"
+ resultList.get(0).getType() + "'";
term = "service";
resultList = resultBuilder.buildSearchResults(term, store);
assert (resultList.size() == 2) : "Length should be: 2 " + " but was '"
+ resultList.size() + "'";
}
/**
* Term 'scenario' only appears 1 time, in type Scenario Term 'service' only
* appears 2 times, in type Scenario and Service
*/
@Test
public void validateSearchResultScenarioContent() {
IMockeyStorage store = new InMemoryMockeyStorage();
Service a = new Service();
a.setServiceName("Service A");
Scenario aScenario = new Scenario();
aScenario.setScenarioName("Scenario A");
aScenario.setResponseMessage("lorem ipsum");
a.saveOrUpdateScenario(aScenario);
store.saveOrUpdateService(a);
String term = "cats";
SearchResultBuilder resultBuilder = new SearchResultBuilder();
List<SearchResult> resultList = resultBuilder.buildSearchResults(term,
store);
assert (resultList.size() == 0) : "Length should be 0 but was "
+ resultList.size();
term = " lorem ";
resultBuilder = new SearchResultBuilder();
resultList = resultBuilder.buildSearchResults(term, store);
assert (resultList.size() == 1) : "Length should be: 1 " + " but was '"
+ resultList.size() + "'";
assert (resultList.get(0).getType() == SearchResultType.SERVICE_SCENARIO) : "Search type result should be 'scenario' but was '"
+ resultList.get(0).getType().toString() + "'";
aScenario = new Scenario();
aScenario.setScenarioName("Scenario B");
aScenario.setResponseMessage("lorem ipsula");
a.saveOrUpdateScenario(aScenario);
store.saveOrUpdateService(a);
term = " lorem ";
resultBuilder = new SearchResultBuilder();
resultList = resultBuilder.buildSearchResults(term, store);
// We should have TWO scenarios with 'lorem' in content/
assert (resultList.size() == 2) : "Length should be: 2 " + " but was '"
+ resultList.size() + "'";
}
/**
* Term 'scenario' only appears 1 time, in type Scenario Term 'service' only
* appears 2 times, in type Scenario and Service
*/
@Test
public void validateSearchResultByServiceTag() {
IMockeyStorage store = new InMemoryMockeyStorage();
Service a = new Service();
a.setServiceName("Service A");
a.setTag(" tagCC");
store.saveOrUpdateService(a);
String term = "cats";
SearchResultBuilder resultBuilder = new SearchResultBuilder();
List<SearchResult> resultList = resultBuilder.buildSearchResults(term,
store);
assert (resultList.size() == 0) : "Length should be 0 but was "
+ resultList.size();
term = "tagC";
resultBuilder = new SearchResultBuilder();
resultList = resultBuilder.buildSearchResults(term, store);
assert (resultList.size() == 1) : "Length should be 1 but was "
+ resultList.size();
assert (resultList.get(0).getType() == SearchResultType.SERVICE) : "Incorrect type, should be '"
+ SearchResultType.SERVICE_SCENARIO
+ "' but was '"
+ resultList.get(0).getType() + "'";
}
/**
* Term 'scenario' only appears 1 time, in type Scenario Term 'service' only
* appears 2 times, in type Scenario and Service
*/
@Test
public void validateSearchResultByServicePlanTag() {
IMockeyStorage store = new InMemoryMockeyStorage();
Service a = new Service();
a.setServiceName("Service A");
a.setTag(" tagCC");
store.saveOrUpdateService(a);
ServicePlan servicePlan = new ServicePlan();
servicePlan.setName("ServicePlan A");
servicePlan.setTag("service_plan_tag_123");
store.saveOrUpdateServicePlan(servicePlan);
String term = "cats";
SearchResultBuilder resultBuilder = new SearchResultBuilder();
List<SearchResult> resultList = resultBuilder.buildSearchResults(term,
store);
assert (resultList.size() == 0) : "Length should be 0 but was "
+ resultList.size();
term = "service_plan_tag_123";
resultBuilder = new SearchResultBuilder();
resultList = resultBuilder.buildSearchResults(term, store);
assert (resultList.size() == 1) : "Length should be 1 but was "
+ resultList.size();
assert (resultList.get(0).getType() == SearchResultType.SERVICE_PLAN) : "Incorrect type, should be '"
+ SearchResultType.SERVICE_PLAN
+ "' but was '"
+ resultList.get(0).getType() + "'";
}
}