Added test suite, removed bad names (#732)
* made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names
This commit is contained in:
parent
e7d5f617ad
commit
94fd47d9bb
|
@ -1,45 +1,172 @@
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import static org.junit.Assert.assertEquals;
|
||||||
import org.junit.*;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import play.mvc.*;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import model.Student;
|
||||||
import play.test.*;
|
import play.test.*;
|
||||||
import play.data.DynamicForm;
|
|
||||||
import play.data.validation.ValidationError;
|
|
||||||
import play.data.validation.Constraints.RequiredValidator;
|
|
||||||
import play.i18n.Lang;
|
|
||||||
import play.libs.F;
|
|
||||||
import play.libs.F.*;
|
|
||||||
import play.twirl.api.Content;
|
|
||||||
|
|
||||||
import static play.test.Helpers.*;
|
import static play.test.Helpers.*;
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Simple (JUnit) tests that can call all parts of a play app.
|
|
||||||
* If you are interested in mocking a whole application, see the wiki for more details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class ApplicationTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void simpleCheck() {
|
|
||||||
int a = 1 + 1;
|
|
||||||
assertEquals(2, a);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void renderTemplate() {
|
|
||||||
Content html = views.html.index.render("Your new application is ready.");
|
|
||||||
assertEquals("text/html", html.contentType());
|
|
||||||
assertTrue(html.body().contains("Your new application is ready."));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public class ApplicationTest{
|
||||||
|
private static final String BASE_URL = "http://localhost:9000";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInServer() throws Exception {
|
||||||
|
TestServer server = testServer(3333);
|
||||||
|
running(server, () -> {
|
||||||
|
try {
|
||||||
|
WSClient ws = play.libs.ws.WS.newClient(3333);
|
||||||
|
CompletionStage<WSResponse> completionStage = ws.url("/").get();
|
||||||
|
WSResponse response = completionStage.toCompletableFuture().get();
|
||||||
|
ws.close();
|
||||||
|
assertEquals(OK, response.getStatus());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void whenCreatesRecord_thenCorrect() {
|
||||||
|
Student student = new Student("jody", "west", 50);
|
||||||
|
JSONObject obj = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student)));
|
||||||
|
assertTrue(obj.getBoolean("isSuccessfull"));
|
||||||
|
JSONObject body = obj.getJSONObject("body");
|
||||||
|
assertEquals(student.getAge(), body.getInt("age"));
|
||||||
|
assertEquals(student.getFirstName(), body.getString("firstName"));
|
||||||
|
assertEquals(student.getLastName(), body.getString("lastName"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenDeletesCreatedRecord_thenCorrect() {
|
||||||
|
Student student = new Student("Usain", "Bolt", 25);
|
||||||
|
JSONObject ob1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body");
|
||||||
|
int id = ob1.getInt("id");
|
||||||
|
JSONObject obj1 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject()));
|
||||||
|
assertTrue(obj1.getBoolean("isSuccessfull"));
|
||||||
|
makeRequest(BASE_URL + "/" + id, "DELETE", null);
|
||||||
|
JSONObject obj2 = new JSONObject(makeRequest(BASE_URL + "/" + id, "POST", new JSONObject()));
|
||||||
|
assertFalse(obj2.getBoolean("isSuccessfull"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUpdatesCreatedRecord_thenCorrect() {
|
||||||
|
Student student = new Student("john", "doe", 50);
|
||||||
|
JSONObject body1 = new JSONObject(makeRequest(BASE_URL, "POST", new JSONObject(student))).getJSONObject("body");
|
||||||
|
assertEquals(student.getAge(), body1.getInt("age"));
|
||||||
|
int newAge = 60;
|
||||||
|
body1.put("age", newAge);
|
||||||
|
JSONObject body2 = new JSONObject(makeRequest(BASE_URL, "PUT", body1)).getJSONObject("body");
|
||||||
|
assertFalse(student.getAge() == body2.getInt("age"));
|
||||||
|
assertTrue(newAge == body2.getInt("age"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenGetsAllRecords_thenCorrect() {
|
||||||
|
Student student1 = new Student("jane", "daisy", 50);
|
||||||
|
Student student2 = new Student("john", "daniel", 60);
|
||||||
|
Student student3 = new Student("don", "mason", 55);
|
||||||
|
Student student4 = new Student("scarlet", "ohara", 90);
|
||||||
|
|
||||||
|
makeRequest(BASE_URL, "POST", new JSONObject(student1));
|
||||||
|
makeRequest(BASE_URL, "POST", new JSONObject(student2));
|
||||||
|
makeRequest(BASE_URL, "POST", new JSONObject(student3));
|
||||||
|
makeRequest(BASE_URL, "POST", new JSONObject(student4));
|
||||||
|
|
||||||
|
JSONObject objects = new JSONObject(makeRequest(BASE_URL, "GET", null));
|
||||||
|
assertTrue(objects.getBoolean("isSuccessfull"));
|
||||||
|
JSONArray array = objects.getJSONArray("body");
|
||||||
|
assertTrue(array.length() >= 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String makeRequest(String myUrl, String httpMethod, JSONObject parameters) {
|
||||||
|
|
||||||
|
URL url = null;
|
||||||
|
try {
|
||||||
|
url = new URL(myUrl);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
HttpURLConnection conn = null;
|
||||||
|
try {
|
||||||
|
|
||||||
|
conn = (HttpURLConnection) url.openConnection();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
conn.setDoInput(true);
|
||||||
|
|
||||||
|
conn.setReadTimeout(10000);
|
||||||
|
|
||||||
|
conn.setRequestProperty("Content-Type", "application/json");
|
||||||
|
DataOutputStream dos = null;
|
||||||
|
int respCode = 0;
|
||||||
|
String inputString = null;
|
||||||
|
try {
|
||||||
|
conn.setRequestMethod(httpMethod);
|
||||||
|
|
||||||
|
if (Arrays.asList("POST", "PUT").contains(httpMethod)) {
|
||||||
|
String params = parameters.toString();
|
||||||
|
|
||||||
|
conn.setDoOutput(true);
|
||||||
|
|
||||||
|
dos = new DataOutputStream(conn.getOutputStream());
|
||||||
|
dos.writeBytes(params);
|
||||||
|
dos.flush();
|
||||||
|
dos.close();
|
||||||
|
}
|
||||||
|
respCode = conn.getResponseCode();
|
||||||
|
if (respCode != 200 && respCode != 201) {
|
||||||
|
String error = inputStreamToString(conn.getErrorStream());
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
inputString = inputStreamToString(conn.getInputStream());
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return inputString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String inputStreamToString(InputStream is) {
|
||||||
|
BufferedReader br = null;
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
String line;
|
||||||
|
try {
|
||||||
|
|
||||||
|
br = new BufferedReader(new InputStreamReader(is));
|
||||||
|
while ((line = br.readLine()) != null) {
|
||||||
|
sb.append(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (br != null) {
|
||||||
|
try {
|
||||||
|
br.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
import org.junit.*;
|
|
||||||
|
|
||||||
import play.mvc.*;
|
|
||||||
import play.test.*;
|
|
||||||
|
|
||||||
import static play.test.Helpers.*;
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
import static org.fluentlenium.core.filter.FilterConstructor.*;
|
|
||||||
|
|
||||||
public class IntegrationTest {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add your integration test here
|
|
||||||
* in this example we just check if the welcome page is being shown
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void test() {
|
|
||||||
running(testServer(3333, fakeApplication(inMemoryDatabase())), HTMLUNIT, browser -> {
|
|
||||||
browser.goTo("http://localhost:3333");
|
|
||||||
assertTrue(browser.pageSource().contains("Your new application is ready."));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue