package fi.otavanopisto.muikku;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
import fi.otavanopisto.pyramus.rest.model.StaffMember;
import fi.otavanopisto.pyramus.rest.model.Student;
public class AbstractPyramusMocks {
protected static void mockPersonStudens(Student[] students) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper().registerModule(new JSR310Module()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
Map<Long, List<Student>> personStudents = new HashMap<>();
for (Student student : students) {
if (!personStudents.containsKey(student.getPersonId())) {
personStudents.put(student.getPersonId(), new ArrayList<Student>());
}
personStudents.get(student.getPersonId()).add(student);
}
for (Long personId : personStudents.keySet()) {
stubFor(get(urlMatching(String.format("/1/persons/persons/%d/students", personId)))
.willReturn(aResponse()
.withHeader("Content-Type", "application/json")
.withBody(objectMapper.writeValueAsString(personStudents.get(personId)))
.withStatus(200)));
}
}
protected static void mockPersonStaffMembers(StaffMember[] staffMembers) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper().registerModule(new JSR310Module()).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
Map<Long, List<StaffMember>> personStaffMembers = new HashMap<>();
for (StaffMember staffMember : staffMembers) {
if (!personStaffMembers.containsKey(staffMember.getPersonId())) {
personStaffMembers.put(staffMember.getPersonId(), new ArrayList<StaffMember>());
}
personStaffMembers.get(staffMember.getPersonId()).add(staffMember);
}
for (Long personId : personStaffMembers.keySet()) {
stubFor(get(urlMatching(String.format("/1/persons/persons/%d/staffMembers", personId)))
.willReturn(aResponse()
.withHeader("Content-Type", "application/json")
.withBody(objectMapper.writeValueAsString(personStaffMembers.get(personId)))
.withStatus(200)));
}
}
}