mapToGetCourseGroupsDefaultResponse overloaded

This commit is contained in:
BuildTools 2020-11-30 13:10:40 +01:00
parent 25e9571a06
commit 082b30133c
2 changed files with 114 additions and 75 deletions

View File

@ -33,9 +33,6 @@ public class GroupsMappers {
public static List<GroupWithCapacityResponse> mapToCapacityResponse(List<Groups> groups, public static List<GroupWithCapacityResponse> mapToCapacityResponse(List<Groups> groups,
HashMap<Long, Integer> taken) { HashMap<Long, Integer> taken) {
// return
// groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new)
// .collect(Collectors.toList());
return groups.stream().filter(Objects::nonNull).map(new Function<Groups, GroupWithCapacityResponse>() { return groups.stream().filter(Objects::nonNull).map(new Function<Groups, GroupWithCapacityResponse>() {
@Override @Override
public GroupWithCapacityResponse apply(Groups p) { public GroupWithCapacityResponse apply(Groups p) {
@ -53,22 +50,35 @@ public class GroupsMappers {
} }
public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse( public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse(
List<Groups> groups) { List<Groups> groups, HashMap<Long, Integer> taken) {
List<GroupDefaultResponse> lectures = new ArrayList<>(); List<GroupDefaultResponse> lectures = new ArrayList<>();
List<GroupDefaultResponse> classes = new ArrayList<>(); List<GroupDefaultResponse> classes = new ArrayList<>();
groups.stream().forEach(group -> { groups.stream().forEach(group -> {
if (group.getType() == GroupType.CLASS) { if (group.getType() == GroupType.CLASS) {
classes.add(new GroupDefaultResponse(group)); if (taken != null) {
classes.add(new GroupDefaultResponse(group, taken.get(group.getId())));
} else {
classes.add(new GroupDefaultResponse(group));
}
} else { } else {
lectures.add(new GroupDefaultResponse(group)); if (taken != null) {
lectures.add(new GroupDefaultResponse(group, taken.get(group.getId())));
} else {
lectures.add(new GroupDefaultResponse(group));
}
} }
}); });
return new CourseWithGroupsResponse<>(classes, lectures); return new CourseWithGroupsResponse<>(classes, lectures);
} }
public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse(
List<Groups> groups) {
return GroupsMappers.mapToGetCourseGroupsDefaultResponse(groups, null);
}
public static CourseWithGroupsResponse<GroupWithCapacityResponse> mapToGetCourseGroupsWithCapacityResponse( public static CourseWithGroupsResponse<GroupWithCapacityResponse> mapToGetCourseGroupsWithCapacityResponse(
List<Groups> groups) { List<Groups> groups) {

View File

@ -17,93 +17,122 @@ import com.plannaplan.types.WeekDay;
import org.junit.Test; import org.junit.Test;
public class GroupsMappersTest { public class GroupsMappersTest {
@Test @Test
public void shouldMapToResponseIncludingCapacity() { public void shouldMapToResponseIncludingCapacity() {
final List<Groups> gropus = Arrays.asList( final List<Groups> gropus = Arrays.asList(new Groups(42, "A4-1", null, 520, WeekDay.MONDAY,
new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); new Lecturer("krul.", "Wladyslaw", "Potocki")));
final List<GroupWithCapacityResponse> response = GroupsMappers.mapToCapacityResponse(gropus); final List<GroupWithCapacityResponse> response = GroupsMappers.mapToCapacityResponse(gropus);
assert (response.get(0).getCapacity() == 42); assert (response.get(0).getCapacity() == 42);
assert (response.get(0) instanceof GroupWithCapacityResponse); assert (response.get(0) instanceof GroupWithCapacityResponse);
assert (response.size() == 1); assert (response.size() == 1);
} }
@Test @Test
public void shouldMapToResponseWiothoutCapacity() { public void shouldMapToResponseWiothoutCapacity() {
final List<Groups> gropus = Arrays.asList( final List<Groups> gropus = Arrays.asList(new Groups(42, "A4-1", null, 520, WeekDay.MONDAY,
new Groups(42, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); new Lecturer("krul.", "Wladyslaw", "Potocki")));
final List<GroupDefaultResponse> response = GroupsMappers.mapToDefaultResponse(gropus); final List<GroupDefaultResponse> response = GroupsMappers.mapToDefaultResponse(gropus);
assert (response.get(0) instanceof GroupDefaultResponse); assert (response.get(0) instanceof GroupDefaultResponse);
assert (response.size() == 1); assert (response.size() == 1);
} }
@Test @Test
public void shouldMapToGetCourseGroupsResponse() { public void shouldMapToGetCourseGroupsResponse() {
final List<Groups> groups = Arrays.asList( final List<Groups> groups = Arrays.asList(
new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")), new Groups(150, "A4-1", null, 520, WeekDay.MONDAY,
new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki"))); new Lecturer("krul.", "Wladyslaw", "Potocki")),
new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki")));
final CourseWithGroupsResponse<GroupDefaultResponse> response = GroupsMappers final CourseWithGroupsResponse<GroupDefaultResponse> response = GroupsMappers
.mapToGetCourseGroupsDefaultResponse(groups); .mapToGetCourseGroupsDefaultResponse(groups);
assertTrue(response.getClasses().size() == 1); assertTrue(response.getClasses().size() == 1);
assertTrue(response.getLectures().size() == 1); assertTrue(response.getLectures().size() == 1);
} }
@Test @Test
public void shouldMapToDefaultResponseWithTakenPlace() public void shouldMapToGetCourseGroupsResponseWithTakenPlaces() throws NoSuchFieldException, SecurityException,
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { IllegalArgumentException, IllegalAccessException {
final Field reader = Groups.class.getDeclaredField("id"); final Field reader = Groups.class.getDeclaredField("id");
reader.setAccessible(true); reader.setAccessible(true);
final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, final List<Groups> groups = Arrays.asList(
new Lecturer("krul.", "Wladyslaw", "Potocki")); new Groups(150, "A4-1", null, 520, WeekDay.MONDAY,
final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY, new Lecturer("krul.", "Wladyslaw", "Potocki")),
new Lecturer("krul.", "Wladyslaw", "Potocki")); new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki")));
reader.set(groups.get(0), Long.valueOf(0));
reader.set(groups.get(1), Long.valueOf(1));
reader.set(group1, Long.valueOf(0)); final HashMap<Long, Integer> placeMap = new HashMap<>();
reader.set(group2, Long.valueOf(1)); placeMap.put(Long.valueOf(0), 0);
placeMap.put(Long.valueOf(1), 21);
final HashMap<Long, Integer> placeMap = new HashMap<>(); final CourseWithGroupsResponse<GroupDefaultResponse> response = GroupsMappers
placeMap.put(Long.valueOf(0), 5); .mapToGetCourseGroupsDefaultResponse(groups, placeMap);
placeMap.put(Long.valueOf(1), 56);
final List<GroupDefaultResponse> response = GroupsMappers.mapToDefaultResponse(List.of(group1, group2), assertTrue(response.getClasses().size() == 1);
placeMap); assertTrue(response.getLectures().size() == 1);
assertTrue(response.getLectures().get(0).getTakenPlaces() == 0);
assertTrue(response.getClasses().get(0).getTakenPlaces() == 21);
}
assertTrue(response.size() == 2); @Test
assertTrue(response.get(0).getTakenPlaces() == 5); public void shouldMapToDefaultResponseWithTakenPlace() throws NoSuchFieldException, SecurityException,
assertTrue(response.get(1).getTakenPlaces() == 56); IllegalArgumentException, IllegalAccessException {
} final Field reader = Groups.class.getDeclaredField("id");
reader.setAccessible(true);
@Test final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY,
public void shouldMapToCapacityResponseWithTakenPlace() new Lecturer("krul.", "Wladyslaw", "Potocki"));
throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
final Field reader = Groups.class.getDeclaredField("id"); new Lecturer("krul.", "Wladyslaw", "Potocki"));
reader.setAccessible(true);
final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY, reader.set(group1, Long.valueOf(0));
new Lecturer("krul.", "Wladyslaw", "Potocki")); reader.set(group2, Long.valueOf(1));
final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki"));
reader.set(group1, Long.valueOf(0)); final HashMap<Long, Integer> placeMap = new HashMap<>();
reader.set(group2, Long.valueOf(1)); placeMap.put(Long.valueOf(0), 5);
placeMap.put(Long.valueOf(1), 56);
final HashMap<Long, Integer> placeMap = new HashMap<>(); final List<GroupDefaultResponse> response = GroupsMappers.mapToDefaultResponse(List.of(group1, group2),
placeMap.put(Long.valueOf(0), 5); placeMap);
placeMap.put(Long.valueOf(1), 56);
final List<GroupWithCapacityResponse> response = GroupsMappers.mapToCapacityResponse(List.of(group1, group2), assertTrue(response.size() == 2);
placeMap); assertTrue(response.get(0).getTakenPlaces() == 5);
assertTrue(response.get(1).getTakenPlaces() == 56);
}
assertTrue(response.size() == 2); @Test
assertTrue(response.get(0).getTakenPlaces() == 5); public void shouldMapToCapacityResponseWithTakenPlace() throws NoSuchFieldException, SecurityException,
assertTrue(response.get(0).getCapacity() == 150); IllegalArgumentException, IllegalAccessException {
assertTrue(response.get(1).getTakenPlaces() == 56); final Field reader = Groups.class.getDeclaredField("id");
assertTrue(response.get(1).getCapacity() == 24); reader.setAccessible(true);
}
final Groups group1 = new Groups(150, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki"));
final Groups group2 = new Groups(24, "A4-1", null, 520, WeekDay.MONDAY,
new Lecturer("krul.", "Wladyslaw", "Potocki"));
reader.set(group1, Long.valueOf(0));
reader.set(group2, Long.valueOf(1));
final HashMap<Long, Integer> placeMap = new HashMap<>();
placeMap.put(Long.valueOf(0), 5);
placeMap.put(Long.valueOf(1), 56);
final List<GroupWithCapacityResponse> response = GroupsMappers
.mapToCapacityResponse(List.of(group1, group2), placeMap);
assertTrue(response.size() == 2);
assertTrue(response.get(0).getTakenPlaces() == 5);
assertTrue(response.get(0).getCapacity() == 150);
assertTrue(response.get(1).getTakenPlaces() == 56);
assertTrue(response.get(1).getCapacity() == 24);
}
} }