diff --git a/api-data-module/pom.xml b/api-data-module/pom.xml new file mode 100644 index 0000000..a2b3e07 --- /dev/null +++ b/api-data-module/pom.xml @@ -0,0 +1,28 @@ + + + + school-2016 + ru.qatools.school + 1.0-SNAPSHOT + + 4.0.0 + + api-data-module + API Data Module + + + + com.squareup.retrofit2 + retrofit + 2.0.2 + + + org.apache.httpcomponents + httpcore + 4.4.3 + + + + \ No newline at end of file diff --git a/api-data-module/src/main/java/ru/qatools/school/apiData/CitySuggest.java b/api-data-module/src/main/java/ru/qatools/school/apiData/CitySuggest.java new file mode 100644 index 0000000..6466fbc --- /dev/null +++ b/api-data-module/src/main/java/ru/qatools/school/apiData/CitySuggest.java @@ -0,0 +1,31 @@ +package ru.qatools.school.apiData; + +/** + * @author totallynotkate (Kate Kocijevska). + */ +public class CitySuggest { + public int id; + + public String country; + + public String name; + + public int uid; + + public int getId() { + return id; + } + + public String getCountry() { + return country; + } + + public String getName() { + return name; + } + + public int getUid() { + return uid; + } + +} diff --git a/api-data-module/src/main/java/ru/qatools/school/apiData/URI.java b/api-data-module/src/main/java/ru/qatools/school/apiData/URI.java new file mode 100644 index 0000000..82f127c --- /dev/null +++ b/api-data-module/src/main/java/ru/qatools/school/apiData/URI.java @@ -0,0 +1,30 @@ +package ru.qatools.school.apiData; + +/** + * @author totallynotkate (Kate Kocijevska) + */ +public enum URI { + BASE_URI("http://weather.lanwen.ru/"), + BASE_PATH("api"), + + CITIES_RESOURCE("cities"), + LIMIT_PARAMETER("limit"), + + SUGGEST_RESOURCE("suggest"), + QUERY_PARAMETER("query"); + + private final String URIValue; + + URI (String URIValue){ + this.URIValue = URIValue; + } + + public String getValue(){ + return URIValue; + } + + @Override + public String toString(){ + return URIValue; + } +} diff --git a/api-db-tests/pom.xml b/api-db-tests/pom.xml new file mode 100644 index 0000000..f08d320 --- /dev/null +++ b/api-db-tests/pom.xml @@ -0,0 +1,50 @@ + + + + school-2016 + ru.qatools.school + 1.0-SNAPSHOT + + 4.0.0 + + dbclient-tests + + + + ru.qatools.school + dbclient-module + ${project.version} + + + ru.yandex.qatools.allure + allure-java-annotations + 1.4.23 + test + + + com.jayway.restassured + rest-assured + 2.9.0 + test + + + com.jayway.restassured + json-schema-validator + 2.9.0 + test + + + ru.yandex.qatools.matchers + collection-matchers + 1.3 + + + com.googlecode.lambdaj + lambdaj + 2.3.3 + + + + \ No newline at end of file diff --git a/api-db-tests/src/test/java/ru/qatools/school/DbTest.java b/api-db-tests/src/test/java/ru/qatools/school/DbTest.java new file mode 100644 index 0000000..f5add0b --- /dev/null +++ b/api-db-tests/src/test/java/ru/qatools/school/DbTest.java @@ -0,0 +1,48 @@ +package ru.qatools.school; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import ru.qatools.school.apiData.CitySuggest; +import ru.qatools.school.apiData.URI; +import ru.yandex.qatools.allure.annotations.Features; +import ru.yandex.qatools.allure.annotations.Title; + +import java.util.Arrays; +import java.util.List; + +import static com.jayway.restassured.RestAssured.given; +import static org.hamcrest.MatcherAssert.assertThat; +import static ru.yandex.qatools.matchers.collection.HasSameItemsAsListMatcher.hasSameItemsAsList; + +/** + * @author totallynotkate (Kate Kocijevska) + */ +public class DbTest { + + private static final String PARTIAL_CITY_NAME = "mos"; + private DbClient dbClient; + + @Before + public void before(){ + dbClient = new DbClient(); + } + + @Test + @Title ("Списки саджестов городов из API и БД должны совпадать") + @Features("Запросы к БД и API") + public void shouldGetSameSuggests(){ + List dbSuggest = dbClient.getSuggestedCities(PARTIAL_CITY_NAME); + List apiSuggest = Arrays.asList(given().baseUri(URI.BASE_URI.getValue()) + .basePath(URI.BASE_PATH.getValue()) + .param(URI.QUERY_PARAMETER.getValue(), PARTIAL_CITY_NAME) + .get(URI.SUGGEST_RESOURCE.getValue()) + .as(CitySuggest[].class)); + assertThat("Списки саджестов городов из API и БД должны совпадать", apiSuggest, hasSameItemsAsList(dbSuggest)); + } + + @After + public void after(){ + dbClient.close(); + } +} diff --git a/dbclient-module/pom.xml b/dbclient-module/pom.xml index 2994039..3c47993 100644 --- a/dbclient-module/pom.xml +++ b/dbclient-module/pom.xml @@ -22,6 +22,11 @@ mysql-connector-java 5.1.6 + + ru.qatools.school + api-data-module + 1.0-SNAPSHOT + diff --git a/dbclient-module/src/main/java/ru/qatools/school/DbClient.java b/dbclient-module/src/main/java/ru/qatools/school/DbClient.java index 12e1204..f68f1a4 100644 --- a/dbclient-module/src/main/java/ru/qatools/school/DbClient.java +++ b/dbclient-module/src/main/java/ru/qatools/school/DbClient.java @@ -2,10 +2,12 @@ import org.jooq.*; import org.jooq.impl.DSL; +import ru.qatools.school.apiData.CitySuggest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.List; import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.table; @@ -39,6 +41,13 @@ public String getCityById(Integer id) { return result.getValue(0, String.class); } + public List getSuggestedCities(String query){ + return create.select() + .from(table("City")) + .where(field("name").contains(query)) + .fetchInto(CitySuggest.class); + } + public void close() { try { connection.close(); diff --git a/pom.xml b/pom.xml index 2f0da8b..674f1a5 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,8 @@ steps-module commons-module dbclient-module + dbclient-tests + api-data-module