Tests and data
This commit is contained in:
parent
195c96eb54
commit
fb3141b516
8 changed files with 284 additions and 0 deletions
195
app/src/test/java/krusty/KrustyTests.java
Normal file
195
app/src/test/java/krusty/KrustyTests.java
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
package krusty;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.FixMethodOrder;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runners.MethodSorters;
|
||||||
|
import org.skyscreamer.jsonassert.JSONAssert;
|
||||||
|
|
||||||
|
import com.mashape.unirest.http.HttpResponse;
|
||||||
|
import com.mashape.unirest.http.Unirest;
|
||||||
|
import com.mashape.unirest.http.exceptions.UnirestException;
|
||||||
|
|
||||||
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
|
public class KrustyTests {
|
||||||
|
public static final String BASE_URL = "http://localhost:" + ServerMain.PORT + ServerMain.API_ENTRYPOINT + "/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Test cases
|
||||||
|
*
|
||||||
|
* Note that they are ordered in alphabetical order,
|
||||||
|
* this because one test case creates pallets that other use.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void test01Customers() throws JSONException {
|
||||||
|
String expected = readFile("ExpectedCustomers.json");
|
||||||
|
String actual = getURL("customers");
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test02Cookies() throws JSONException {
|
||||||
|
String expected = readFile("ExpectedCookies.json");
|
||||||
|
String actual = getURL("cookies");
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test03RawMaterials() throws JSONException {
|
||||||
|
String expected = readFile("ExpectedRawMaterialsStart.json");
|
||||||
|
String actual = getURL("raw-materials");
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test04CreatePallets() throws JSONException {
|
||||||
|
createPallet("Nut ring");
|
||||||
|
createPallet("Nut ring");
|
||||||
|
createPallet("Tango");
|
||||||
|
createPallet("Amneris");
|
||||||
|
createPallet("Amneris");
|
||||||
|
createPallet("Amneris");
|
||||||
|
createPallet("Berliner");
|
||||||
|
|
||||||
|
String expected = readFile("ExpectedRawMaterialsAfterCreatingPallets.json");
|
||||||
|
String actual = getURL("raw-materials");
|
||||||
|
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test05Pallets() throws JSONException {
|
||||||
|
String expected = readFile("ExpectedPallets.json");
|
||||||
|
String actual = getURL("pallets");
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test06PalletsByCookie() throws JSONException, UnirestException {
|
||||||
|
String expected = readFile("ExpectedPalletsByCookie.json");
|
||||||
|
String actual = Unirest.get(BASE_URL + "pallets")
|
||||||
|
.queryString("cookie", "Nut ring")
|
||||||
|
.asString().getBody();
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test07PalletsByCookieAndDate() throws JSONException, UnirestException {
|
||||||
|
String expected = readFile("ExpectedPalletsByCookie.json");
|
||||||
|
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
String today = formatter.format(new Date());
|
||||||
|
|
||||||
|
String actual = Unirest.get(BASE_URL + "pallets")
|
||||||
|
.queryString("cookie", "Nut ring")
|
||||||
|
.queryString("from", today)
|
||||||
|
.asString().getBody();
|
||||||
|
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test08PalletsByCookieAndDate2() throws JSONException, UnirestException {
|
||||||
|
String expected = readFile("ExpectedPalletsEmpty.json");
|
||||||
|
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.add(Calendar.YEAR, 1);
|
||||||
|
String nextYear = formatter.format(calendar.getTime());
|
||||||
|
|
||||||
|
String actual = Unirest.get(BASE_URL + "pallets")
|
||||||
|
.queryString("cookie", "Nut ring")
|
||||||
|
.queryString("from", nextYear)
|
||||||
|
.asString().getBody();
|
||||||
|
|
||||||
|
JSONAssert.assertEquals(expected, actual, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Auxiliary methods
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected String readFile(String file) {
|
||||||
|
try {
|
||||||
|
String path = "src/test/resources/" + file;
|
||||||
|
return new String(Files.readAllBytes(Paths.get(path)));
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail(e.getMessage());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getURL(String url) {
|
||||||
|
try {
|
||||||
|
HttpResponse<String> res = Unirest.get(BASE_URL + url).asString();
|
||||||
|
return res.getBody();
|
||||||
|
} catch (UnirestException e) {
|
||||||
|
fail("Connection failed.\n" + e.getMessage());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String createPallet(String cookie) {
|
||||||
|
try {
|
||||||
|
HttpResponse<String> res = Unirest.post(BASE_URL + "pallets")
|
||||||
|
.queryString("cookie", cookie)
|
||||||
|
.asString();
|
||||||
|
return res.getBody();
|
||||||
|
} catch (UnirestException e) {
|
||||||
|
fail("Connection failed.\n" + e.getMessage());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Automatically start REST server if it is not running and reset database.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static ServerMain server;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void startServer() throws InterruptedException {
|
||||||
|
try {
|
||||||
|
// Check if rest server is running
|
||||||
|
Unirest.get(BASE_URL).asString();
|
||||||
|
} catch (UnirestException e) {
|
||||||
|
// Start REST server and sleep a bit before start running test cases
|
||||||
|
server = new ServerMain();
|
||||||
|
server.startServer();
|
||||||
|
Thread.sleep(250);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset database
|
||||||
|
try {
|
||||||
|
Unirest.post(BASE_URL + "reset").asString();
|
||||||
|
} catch (UnirestException e2) {
|
||||||
|
fail(e2.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void stopServer() {
|
||||||
|
if (server != null) {
|
||||||
|
server.stopServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
app/src/test/resources/ExpectedCookies.json
Normal file
10
app/src/test/resources/ExpectedCookies.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cookies": [
|
||||||
|
{"name": "Amneris"},
|
||||||
|
{"name": "Berliner"},
|
||||||
|
{"name": "Nut cookie"},
|
||||||
|
{"name": "Nut ring"},
|
||||||
|
{"name": "Tango"},
|
||||||
|
{"name": "Almond delight"}
|
||||||
|
]
|
||||||
|
}
|
12
app/src/test/resources/ExpectedCustomers.json
Normal file
12
app/src/test/resources/ExpectedCustomers.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"customers": [
|
||||||
|
{"name": "Bjudkakor AB", "address": "Ystad"},
|
||||||
|
{"name": "Finkakor AB", "address": "Helsingborg"},
|
||||||
|
{"name": "Gästkakor AB", "address": "Hässleholm"},
|
||||||
|
{"name": "Kaffebröd AB", "address": "Landskrona"},
|
||||||
|
{"name": "Kalaskakor AB", "address": "Trelleborg"},
|
||||||
|
{"name": "Partykakor AB", "address": "Kristianstad"},
|
||||||
|
{"name": "Skånekakor AB", "address": "Perstorp"},
|
||||||
|
{"name": "Småbröd AB", "address": "Malmö"}
|
||||||
|
]
|
||||||
|
}
|
11
app/src/test/resources/ExpectedPallets.json
Normal file
11
app/src/test/resources/ExpectedPallets.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"pallets": [
|
||||||
|
{"cookie": "Amneris", "blocked": "no"},
|
||||||
|
{"cookie": "Amneris", "blocked": "no"},
|
||||||
|
{"cookie": "Amneris", "blocked": "no"},
|
||||||
|
{"cookie": "Berliner", "blocked": "no"},
|
||||||
|
{"cookie": "Nut ring", "blocked": "no"},
|
||||||
|
{"cookie": "Nut ring", "blocked": "no"},
|
||||||
|
{"cookie": "Tango", "blocked": "no"}
|
||||||
|
]
|
||||||
|
}
|
6
app/src/test/resources/ExpectedPalletsByCookie.json
Normal file
6
app/src/test/resources/ExpectedPalletsByCookie.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"pallets": [
|
||||||
|
{"cookie": "Nut ring", "blocked": "no"},
|
||||||
|
{"cookie": "Nut ring", "blocked": "no"}
|
||||||
|
]
|
||||||
|
}
|
4
app/src/test/resources/ExpectedPalletsEmpty.json
Normal file
4
app/src/test/resources/ExpectedPalletsEmpty.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"pallets": [
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"raw-materials": [
|
||||||
|
{"name": "Bread crumbs", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Butter", "amount": 386600, "unit": "g"},
|
||||||
|
{"name": "Chocolate", "amount": 497300, "unit": "g"},
|
||||||
|
{"name": "Chopped almonds", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Cinnamon", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Egg whites", "amount": 500000, "unit": "ml"},
|
||||||
|
{"name": "Eggs", "amount": 456800, "unit": "g"},
|
||||||
|
{"name": "Fine-ground nuts", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Flour", "amount": 416300, "unit": "g"},
|
||||||
|
{"name": "Ground, roasted nuts", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Icing sugar", "amount": 474080, "unit": "g"},
|
||||||
|
{"name": "Marzipan", "amount": 378500, "unit": "g"},
|
||||||
|
{"name": "Potato starch", "amount": 495950, "unit": "g"},
|
||||||
|
{"name": "Roasted, chopped nuts", "amount": 475700, "unit": "g"},
|
||||||
|
{"name": "Sodium bicarbonate", "amount": 499784, "unit": "g"},
|
||||||
|
{"name": "Sugar", "amount": 486500, "unit": "g"},
|
||||||
|
{"name": "Vanilla", "amount": 499892, "unit": "g"},
|
||||||
|
{"name": "Vanilla sugar", "amount": 499730, "unit": "g"},
|
||||||
|
{"name": "Wheat flour", "amount": 495950, "unit": "g"}
|
||||||
|
]
|
||||||
|
}
|
23
app/src/test/resources/ExpectedRawMaterialsStart.json
Normal file
23
app/src/test/resources/ExpectedRawMaterialsStart.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"raw-materials": [
|
||||||
|
{"name": "Bread crumbs", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Butter", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Chocolate", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Chopped almonds", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Cinnamon", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Egg whites", "amount": 500000, "unit": "ml"},
|
||||||
|
{"name": "Eggs", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Fine-ground nuts", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Flour", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Ground, roasted nuts", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Icing sugar", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Marzipan", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Potato starch", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Roasted, chopped nuts", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Sodium bicarbonate", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Sugar", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Vanilla", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Vanilla sugar", "amount": 500000, "unit": "g"},
|
||||||
|
{"name": "Wheat flour", "amount": 500000, "unit": "g"}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in a new issue