Refactored tests

This commit is contained in:
Andrey Terentev 2024-01-12 16:11:59 +07:00
parent c6b7feddc5
commit 87b89029ba

View File

@ -1,7 +1,9 @@
package ru.dragonestia.picker.picker; package ru.dragonestia.picker.picker;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -12,8 +14,6 @@ import ru.dragonestia.picker.repository.RoomRepository;
import ru.dragonestia.picker.repository.UserRepository; import ru.dragonestia.picker.repository.UserRepository;
import ru.dragonestia.picker.util.UserFiller; import ru.dragonestia.picker.util.UserFiller;
import java.time.Duration;
@SpringBootTest @SpringBootTest
@Import({FillingNodesConfig.class, UserFiller.class}) @Import({FillingNodesConfig.class, UserFiller.class})
public class RoundRobinTests { public class RoundRobinTests {
@ -31,61 +31,71 @@ public class RoundRobinTests {
@Autowired @Autowired
private Node node; private Node node;
@Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
@Order(1)
@Test @Test
void testPickingRoundRobin() { void testFirstPicking() { // Take 2 users. expected take 'room-2-0'
{ // first iteration. Take 2 users. expected take 'room-2-0' var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2));
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); Assertions.assertTrue(roomOpt.isPresent());
Assertions.assertTrue(roomOpt.isPresent());
var room = roomOpt.get(); var room = roomOpt.get();
var slots = room.getSlots(); var slots = room.getSlots();
var users = userRepository.usersOf(room); var users = userRepository.usersOf(room);
Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation
Assertions.assertEquals("room-2-0", room.getId()); Assertions.assertEquals("room-2-0", room.getId());
} }
{ // second iteration. Take 2 users. expected take 'room-2-1' @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); @Order(2)
Assertions.assertTrue(roomOpt.isPresent()); @Test
void testSecondPicking() { // Take 2 users. expected take 'room-2-1'
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2));
Assertions.assertTrue(roomOpt.isPresent());
var room = roomOpt.get(); var room = roomOpt.get();
var slots = room.getSlots(); var slots = room.getSlots();
var users = userRepository.usersOf(room); var users = userRepository.usersOf(room);
Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation
Assertions.assertEquals("room-2-1", room.getId()); Assertions.assertEquals("room-2-1", room.getId());
} }
{ // third iteration. Take 1 user. expected take 'room-2-2' @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(1)); @Order(3)
Assertions.assertTrue(roomOpt.isPresent()); @Test
void testThirdPicking() { // Take 1 user. expected take 'room-2-2'
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(1));
Assertions.assertTrue(roomOpt.isPresent());
var room = roomOpt.get(); var room = roomOpt.get();
var slots = room.getSlots(); var slots = room.getSlots();
var users = userRepository.usersOf(room); var users = userRepository.usersOf(room);
Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation
Assertions.assertEquals("room-2-2", room.getId()); Assertions.assertEquals("room-2-2", room.getId());
} }
{ // fourth iteration. Take 4 users. expected take 'room-2-2' @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(4)); @Order(4)
Assertions.assertTrue(roomOpt.isPresent()); @Test
void testFourthPicking() { // Take 4 users. expected take 'room-2-2'
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(4));
Assertions.assertTrue(roomOpt.isPresent());
var room = roomOpt.get(); var room = roomOpt.get();
var slots = room.getSlots(); var slots = room.getSlots();
var users = userRepository.usersOf(room); var users = userRepository.usersOf(room);
Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation
Assertions.assertEquals("room-4-0", room.getId()); Assertions.assertEquals("room-4-0", room.getId());
} }
{ // fifth iteration. Take 9 users. expected none result @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD)
Assertions.assertTimeoutPreemptively(Duration.ofSeconds(1), () -> { @Order(5)
var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(9)); @Test
Assertions.assertTrue(roomOpt.isEmpty()); void testNoOneRoomExpected() { // Take 9 users. expected none result
}); var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(9));
} Assertions.assertTrue(roomOpt.isEmpty());
} }
} }