RoomPicker/app/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java
Andrey Terentev 7566f24d36
Refactor controllers and exception handling (#8)
* Refactored exceptions and responses

* Extracted exceptions to external api library

* Refactored exceptions and extracted models to external library

* Fixed test after refactor

* Extracted validator to api library

* Implemented session error handler

* Upgraded notifications

* Implemented global exception handler for control panel
2024-01-16 16:29:44 +07:00

115 lines
2.9 KiB
Java

package ru.dragonestia.picker.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import ru.dragonestia.picker.api.model.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 ru.dragonestia.picker.repository.NodeRepository;
import ru.dragonestia.picker.repository.RoomRepository;
import ru.dragonestia.picker.repository.UserRepository;
import java.util.List;
@TestConfiguration
public class FillingNodesConfig {
/* All nodes have these rooms:
Room 'room-0-0' has 5/5 users
Room 'room-0-1' has 5/5 users
Room 'room-0-2' has 5/5 users
Room 'room-1-0' has 4/5 users
Room 'room-1-1' has 4/5 users
Room 'room-1-2' has 4/5 users
Room 'room-2-0' has 3/5 users
Room 'room-2-1' has 3/5 users
Room 'room-2-2' has 3/5 users
Room 'room-3-0' has 2/5 users
Room 'room-3-1' has 2/5 users
Room 'room-3-2' has 2/5 users
Room 'room-4-0' has 1/5 users
Room 'room-4-1' has 1/5 users
Room 'room-4-2' has 1/5 users
*/
@Autowired
private NodeRepository nodeRepository;
@Autowired
private RoomRepository roomRepository;
@Autowired
private UserRepository userRepository;
private Node seqNode;
private Node roundNode;
private Node leastNode;
@Bean
void createSequentialFillingNode() {
var node = new Node("seq", PickingMode.SEQUENTIAL_FILLING);
nodeRepository.create(node);
fillNode(node);
seqNode = node;
}
@Bean
void createRoundRobinNode() {
var node = new Node("round", PickingMode.ROUND_ROBIN);
nodeRepository.create(node);
fillNode(node);
roundNode = node;
}
@Bean
void createLeastPickerNode() {
var node = new Node("least", PickingMode.LEAST_PICKED);
nodeRepository.create(node);
fillNode(node);
leastNode = node;
}
private void fillNode(Node node) {
for (int i = 0, n = 5; i < n; i++) {
for (int j = 0; j < 3; j++) {
var roomId = "room-" + i + "-" + j;
var room = Room.create(roomId, node, SlotLimit.of(n), "");
roomRepository.create(room);
var users = n - i;
for (int k = users - 1; k >= 0; k--) {
var user = new User("user-" + k);
userRepository.linkWithRoom(room, List.of(user), false);
}
//System.out.printf("Room '%s' has %s/%s users%n", roomId, users, n);
}
}
}
@Bean
Node seqNode() {
return seqNode;
}
@Bean
Node roundNode() {
return roundNode;
}
@Bean
Node leastNode() {
return leastNode;
}
}