functional tests added

parent 0bd99a4d
......@@ -10,6 +10,7 @@
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/main/java/com/example/teacher/controller/TeacherController.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/main/java/com/example/teacher/controller/TeacherController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/test/java/com/example/teacher/controller/TeacherControllerTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/test/java/com/example/teacher/controller/TeacherControllerTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/test/java/com/example/teacher/service/TeacherServiceTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/src/test/java/com/example/teacher/service/TeacherServiceTest.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/generated-sources/annotations/com/example/teacher/mapper/TeacherMapperImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/generated-sources/annotations/com/example/teacher/mapper/TeacherMapperImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/test-classes/com/example/teacher/controller/TeacherControllerTest.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/test-classes/com/example/teacher/controller/TeacherControllerTest.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/test-classes/com/example/teacher/service/TeacherServiceTest.class" beforeDir="false" afterPath="$PROJECT_DIR$/../../teacher-service/teacher-service/target/test-classes/com/example/teacher/service/TeacherServiceTest.class" afterDir="false" />
</list>
......
......@@ -74,6 +74,13 @@
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<build>
......
......@@ -25,7 +25,7 @@ public class TeacherController {
// POST methods
@PostMapping
public ResponseEntity<Teacher> createStudent(@RequestBody Teacher teacher) {
public ResponseEntity<Teacher> createTeacher(@RequestBody Teacher teacher) {
Teacher myStudent = teacherService.createAndUpdateTeacher(teacher);
return new ResponseEntity<Teacher>(myStudent, HttpStatus.CREATED);
}
......@@ -97,7 +97,7 @@ public class TeacherController {
}
@GetMapping("/all")
public ResponseEntity<List<Teacher>> findAllStudents() {
public ResponseEntity<List<Teacher>> findAllTeachers() {
List<Teacher> studentList = teacherService.findAllTeachers();
return new ResponseEntity<List<Teacher>>(studentList, HttpStatus.OK);
}
......@@ -123,7 +123,7 @@ public class TeacherController {
// PUT methods
@PutMapping("/{id}")
public ResponseEntity<Teacher> updateStudent(@PathVariable int id, @RequestBody Teacher teacher) {
public ResponseEntity<Teacher> updateTeacher(@PathVariable int id, @RequestBody Teacher teacher) {
teacher.setId(id);
Teacher myTeacher = teacherService.createAndUpdateTeacher(teacher);
return new ResponseEntity<Teacher>(myTeacher, HttpStatus.ACCEPTED);
......
......@@ -3,12 +3,12 @@ package com.example.teacher.controller;
import com.example.teacher.model.Teacher;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import lombok.extern.slf4j.Slf4j;
import org.hamcrest.Matcher;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.simple.JSONObject;
//import org.json.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
......@@ -18,7 +18,6 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Slf4j
@WebMvcTest
......@@ -66,21 +65,62 @@ public class TeacherControllerTest {
}
@Test
public void createTeacherTest() throws JSONException {
public void createTeacherTest() throws JSONException, ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:MM:yyyy");
String stringDate = simpleDateFormat.format(date);
RestAssured.baseURI = "http://localhost:8081/teachers";
RequestSpecification request = RestAssured.given();
JSONObject requestParams = new JSONObject();
requestParams.put("name", "Qadeer");
requestParams.put("name", "QadeerTest");
requestParams.put("age", "57");
requestParams.put("subject", "Math");
requestParams.put("dateOfJoining", stringDate);
request.header("Content-Type", "application/json");
request.body(requestParams.toString());
Response response = request.post();
System.out.println(response.statusCode());
assertEquals(response.statusCode(), 201);
RestAssured
.given()
.contentType(ContentType.JSON)
.body(requestParams.toString())
.when()
.post("http://localhost:8081/teachers")
.then()
.statusCode(201);
}
@Test
public void deleteTeacherByIdTest() {
RestAssured
.given()
.delete("http://localhost:8081/teachers/delete/36")
.then()
.statusCode(200);
}
@Test
public void deleteTeacherByWrongIdTest() {
RestAssured
.given()
.delete("http://localhost:8081/teachers/delete/36")
.then()
.statusCode(404);
}
@Test
public void updateTeacher() throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:MM:yyyy");
String stringDate = simpleDateFormat.format(date);
JSONObject requestParams = new JSONObject();
requestParams.put("name", "QadeerUpdated");
requestParams.put("age", "57");
requestParams.put("subject", "UpdatedSubject");
requestParams.put("dateOfJoining", stringDate);
RestAssured
.given()
.body(requestParams.toJSONString())
.contentType(ContentType.JSON)
.put("http://localhost:8081/teachers/35")
.then()
.statusCode(202)
.log()
.all();
}
}
......@@ -5,18 +5,12 @@ import com.example.teacher.exception.ResourceNotFoundCustomException;
import com.example.teacher.mapper.TeacherMapper;
import com.example.teacher.model.Teacher;
import com.example.teacher.repository.TeacherRepository;
import io.restassured.RestAssured;
import org.assertj.core.api.DateAssert;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
......@@ -51,7 +45,7 @@ public class TeacherServiceTest {
}
@Before
public void createTeacher() throws ParseException {
public void createTeacherMock() throws ParseException {
// create a dummy object
date = new SimpleDateFormat("yyyy:MM:dd").parse("11:11:2011");
myTeacher = new Teacher(0, "Teacher", 25, "maths", date, true);
......@@ -78,7 +72,6 @@ public class TeacherServiceTest {
}
@Test
public void findTeacherByWrongIdTest() throws InterruptedException {
Mockito.when(teacherRepository.findById(0)).thenReturn(Optional.empty());
try {
......@@ -104,8 +97,8 @@ public class TeacherServiceTest {
@Test
public void findTeacherByNameTest() throws ParseException {
Mockito.when(teacherRepository.findTeacherByName("Teacher")).thenReturn(myTeacher);
Mockito.when(teacherMapper.entityToDto(myTeacher)).thenReturn(myTeacherDto);
Mockito.when(teacherRepository.findTeacherByName(Mockito.any(String.class))).thenReturn(myTeacher);
Mockito.when(teacherMapper.entityToDto(Mockito.any(Teacher.class))).thenReturn(myTeacherDto);
TeacherDto returnedTeacher = teacherService.findTeacherByName("Teacher");
Assert.assertEquals(returnedTeacher.getName(), myTeacherDto.getName());
Assert.assertEquals(returnedTeacher.getAge(), myTeacherDto.getAge());
......@@ -116,9 +109,13 @@ public class TeacherServiceTest {
@Test
public void findTeacherByAgeTest() {
Mockito.when(teacherRepository.findTeacherByAge(25)).thenReturn(teacherList);
List<Teacher> returnedTeacherList = teacherService.findTeacherByAge(25);
Assert.assertEquals(returnedTeacherList, teacherList);
Mockito.when(teacherRepository.findTeacherByAge(Mockito.any(Integer.class))).thenReturn(teacherList);
List<Teacher> returnedTeacherList = teacherService.findTeacherByAge(Mockito.any(Integer.class));
Assert.assertEquals(returnedTeacherList.get(0).getName(), teacherList.get(0).getName());
Assert.assertEquals(returnedTeacherList.get(0).getAge(), teacherList.get(0).getAge());
Assert.assertEquals(returnedTeacherList.get(0).getId(), teacherList.get(0).getId());
Assert.assertEquals(returnedTeacherList.get(0).getSubject(), teacherList.get(0).getSubject());
Assert.assertEquals(returnedTeacherList.get(0).getDateOfJoining(), teacherList.get(0).getDateOfJoining());
}
@Test
......@@ -127,6 +124,9 @@ public class TeacherServiceTest {
Mockito.when(teacherRepository.findTeacherById(0)).thenReturn(myTeacher);
boolean isDeleted = teacherService.deleteTeacherById(0);
Assert.assertTrue(isDeleted);
// when a method doesn't have a return type it is difficult to verify if it is invoked.
// To verify, a certain method is invoked we use "Mockito.verify(class/interface Name).methodName()".
Mockito.verify(teacherRepository).save(myTeacher);
}
@Test
......@@ -139,14 +139,19 @@ public class TeacherServiceTest {
@Test
public void createTeacherTest() throws JSONException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
String stringDate = simpleDateFormat.format(date);
JSONObject requestParams = new JSONObject();
requestParams.put("name", "Testname");
requestParams.put("age", 25);
requestParams.put("subject", "maths");
requestParams.put("dateOfJoining", stringDate);
Mockito.when(teacherRepository.save(ArgumentMatchers.any(Teacher.class))).thenReturn(myTeacher);
Teacher teacher = teacherService.createAndUpdateTeacher(myTeacher);
Assert.assertEquals(teacher.isActive(), myTeacher.isActive());
}
@Test
public void updateTeacherTest() {
Mockito.when(teacherRepository.save(myTeacher)).thenReturn(myTeacher);
Teacher teacher = teacherService.createAndUpdateTeacher(myTeacher);
Assert.assertEquals(teacher.getName(), myTeacher.getName());
Assert.assertEquals(teacher.getSubject(), myTeacher.getSubject());
Assert.assertEquals(teacher.getAge(), myTeacher.getAge());
}
@AfterEach
......
......@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2022-08-03T10:51:27+0500",
date = "2022-08-04T11:52:34+0500",
comments = "version: 1.4.2.Final, compiler: javac, environment: Java 18.0.1.1 (Oracle Corporation)"
)
@Component
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment