Added room service tests and fixed bug
This commit is contained in:
parent
18dab02371
commit
561ccebb07
@ -2,6 +2,7 @@ package ru.dragonestia.picker.repository.impl;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
import ru.dragonestia.picker.api.exception.NodeNotFoundException;
|
||||||
import ru.dragonestia.picker.api.exception.RoomAlreadyExistException;
|
import ru.dragonestia.picker.api.exception.RoomAlreadyExistException;
|
||||||
import ru.dragonestia.picker.model.Room;
|
import ru.dragonestia.picker.model.Room;
|
||||||
import ru.dragonestia.picker.model.Node;
|
import ru.dragonestia.picker.model.Node;
|
||||||
@ -77,6 +78,10 @@ public class RoomRepositoryImpl implements RoomRepository {
|
|||||||
@Override
|
@Override
|
||||||
public List<Room> all(Node node) {
|
public List<Room> all(Node node) {
|
||||||
synchronized (node2roomsMap) {
|
synchronized (node2roomsMap) {
|
||||||
|
if (!node2roomsMap.containsKey(node)) {
|
||||||
|
throw new NodeNotFoundException("Node '%s' does not exists".formatted(node.id()));
|
||||||
|
}
|
||||||
|
|
||||||
return node2roomsMap.get(node).values().stream().map(RoomContainer::room).toList();
|
return node2roomsMap.get(node).values().stream().map(RoomContainer::room).toList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,105 @@
|
|||||||
|
package ru.dragonestia.picker.service;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import ru.dragonestia.picker.api.exception.NodeAlreadyExistException;
|
||||||
|
import ru.dragonestia.picker.api.exception.NodeNotFoundException;
|
||||||
|
import ru.dragonestia.picker.api.exception.NotPersistedNodeException;
|
||||||
|
import ru.dragonestia.picker.api.exception.RoomAlreadyExistException;
|
||||||
|
import ru.dragonestia.picker.api.repository.response.type.type.PickingMode;
|
||||||
|
import ru.dragonestia.picker.model.Node;
|
||||||
|
import ru.dragonestia.picker.model.Room;
|
||||||
|
import ru.dragonestia.picker.model.User;
|
||||||
|
import ru.dragonestia.picker.model.type.SlotLimit;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
public class RoomServiceTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private NodeService nodeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoomService roomService;
|
||||||
|
|
||||||
|
private Node node;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void init() {
|
||||||
|
node = new Node("test-rooms", PickingMode.SEQUENTIAL_FILLING, false);
|
||||||
|
|
||||||
|
try {
|
||||||
|
nodeService.create(node);
|
||||||
|
} catch (NodeAlreadyExistException ignore) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_createAndRemove() {
|
||||||
|
var room = Room.create("test-room", node, SlotLimit.unlimited(), "", false);
|
||||||
|
roomService.create(room);
|
||||||
|
|
||||||
|
Assertions.assertTrue(roomService.find(node, room.getId()).isPresent());
|
||||||
|
Assertions.assertThrows(RoomAlreadyExistException.class, () -> roomService.create(room));
|
||||||
|
|
||||||
|
roomService.remove(room);
|
||||||
|
|
||||||
|
Assertions.assertFalse(roomService.find(node, room.getId()).isPresent());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_allRooms() {
|
||||||
|
var rooms = List.of(
|
||||||
|
Room.create("test-room1", node, SlotLimit.of(1), "", false),
|
||||||
|
Room.create("test-room2", node, SlotLimit.of(2), "", false),
|
||||||
|
Room.create("test-room3", node, SlotLimit.of(3), "", false),
|
||||||
|
Room.create("test-room4", node, SlotLimit.unlimited(), "", false)
|
||||||
|
);
|
||||||
|
|
||||||
|
rooms.forEach(room -> roomService.create(room));
|
||||||
|
|
||||||
|
var list = roomService.all(node);
|
||||||
|
|
||||||
|
Assertions.assertEquals(rooms.size(), list.size());
|
||||||
|
Assertions.assertTrue(rooms.containsAll(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_exceptNotPersistedNode() {
|
||||||
|
Assertions.assertThrows(NotPersistedNodeException.class, () -> roomService.create(Room.create("1", node, SlotLimit.unlimited(), "", true)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_pickRoom() {
|
||||||
|
var rooms = List.of(
|
||||||
|
Room.create("test-room1", node, SlotLimit.of(1), "", false),
|
||||||
|
Room.create("test-room2", node, SlotLimit.of(2), "", false),
|
||||||
|
Room.create("test-room3", node, SlotLimit.of(3), "", false),
|
||||||
|
Room.create("test-room4", node, SlotLimit.unlimited(), "", false)
|
||||||
|
);
|
||||||
|
|
||||||
|
rooms.forEach(room -> roomService.create(room));
|
||||||
|
|
||||||
|
var users = List.of(
|
||||||
|
new User("1"),
|
||||||
|
new User("2"),
|
||||||
|
new User("3"),
|
||||||
|
new User("4"),
|
||||||
|
new User("5"),
|
||||||
|
new User("6")
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Assertions.assertEquals("test-room4", roomService.pickAvailable(node, users).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_removeNode() {
|
||||||
|
nodeService.remove(node);
|
||||||
|
|
||||||
|
Assertions.assertThrows(NodeNotFoundException.class, () -> roomService.all(node));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user