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