Skip to content

Commit d949e23

Browse files
committed
feat: update roomservice
Signed-off-by: Otavio Santana <[email protected]>
1 parent 560b5a0 commit d949e23

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package org.soujava.demos.mongodb.document;
2+
3+
import jakarta.inject.Inject;
4+
import org.assertj.core.api.SoftAssertions;
5+
import org.eclipse.jnosql.databases.mongodb.mapping.MongoDBTemplate;
6+
import org.eclipse.jnosql.mapping.Database;
7+
import org.eclipse.jnosql.mapping.core.Converters;
8+
import org.eclipse.jnosql.mapping.document.DocumentTemplate;
9+
import org.eclipse.jnosql.mapping.document.spi.DocumentExtension;
10+
import org.eclipse.jnosql.mapping.reflection.Reflections;
11+
import org.eclipse.jnosql.mapping.reflection.spi.ReflectionEntityMetadataExtension;
12+
import org.eclipse.jnosql.mapping.semistructured.EntityConverter;
13+
import org.jboss.weld.junit5.auto.AddExtensions;
14+
import org.jboss.weld.junit5.auto.AddPackages;
15+
import org.jboss.weld.junit5.auto.EnableAutoWeld;
16+
import org.junit.jupiter.api.AfterEach;
17+
import org.junit.jupiter.api.BeforeEach;
18+
import org.junit.jupiter.api.Test;
19+
20+
import java.util.List;
21+
22+
23+
@EnableAutoWeld
24+
@AddPackages(value = {Database.class, EntityConverter.class, DocumentTemplate.class, MongoDBTemplate.class})
25+
@AddPackages(Room.class)
26+
@AddPackages(ManagerSupplier.class)
27+
@AddPackages(MongoDBTemplate.class)
28+
@AddPackages(Reflections.class)
29+
@AddPackages(Converters.class)
30+
@AddExtensions({ReflectionEntityMetadataExtension.class, DocumentExtension.class})
31+
class RoomServiceTest {
32+
33+
@Inject
34+
private RoomRepository repository;
35+
36+
@BeforeEach
37+
void setUP() {
38+
39+
Room vipRoom1 = new RoomBuilder()
40+
.roomNumber(101)
41+
.type(RoomType.VIP_SUITE)
42+
.status(RoomStatus.AVAILABLE)
43+
.cleanStatus(CleanStatus.CLEAN)
44+
.smokingAllowed(false)
45+
.build();
46+
47+
Room vipRoom2 = new RoomBuilder()
48+
.roomNumber(102)
49+
.type(RoomType.VIP_SUITE)
50+
.status(RoomStatus.AVAILABLE)
51+
.cleanStatus(CleanStatus.CLEAN)
52+
.smokingAllowed(true)
53+
.build();
54+
55+
Room standardRoom1 = new RoomBuilder()
56+
.roomNumber(201)
57+
.type(RoomType.STANDARD)
58+
.status(RoomStatus.AVAILABLE)
59+
.cleanStatus(CleanStatus.CLEAN)
60+
.smokingAllowed(false)
61+
.build();
62+
63+
Room standardRoom2 = new RoomBuilder()
64+
.roomNumber(202)
65+
.type(RoomType.DELUXE)
66+
.status(RoomStatus.AVAILABLE)
67+
.cleanStatus(CleanStatus.CLEAN)
68+
.smokingAllowed(false)
69+
.build();
70+
71+
Room dirtyReservedRoom = new RoomBuilder()
72+
.roomNumber(301)
73+
.type(RoomType.DELUXE)
74+
.status(RoomStatus.RESERVED)
75+
.cleanStatus(CleanStatus.DIRTY)
76+
.smokingAllowed(false)
77+
.build();
78+
79+
Room dirtySuiteRoom = new RoomBuilder()
80+
.roomNumber(302)
81+
.type(RoomType.SUITE)
82+
.status(RoomStatus.UNDER_MAINTENANCE)
83+
.cleanStatus(CleanStatus.INSPECTION_NEEDED)
84+
.smokingAllowed(false)
85+
.build();
86+
87+
Room smokingAllowedRoom = new RoomBuilder()
88+
.roomNumber(401)
89+
.type(RoomType.STANDARD)
90+
.status(RoomStatus.AVAILABLE)
91+
.cleanStatus(CleanStatus.CLEAN)
92+
.smokingAllowed(true)
93+
.build();
94+
95+
repository.save(List.of(
96+
vipRoom1, vipRoom2,
97+
standardRoom1, standardRoom2,
98+
dirtyReservedRoom, dirtySuiteRoom,
99+
smokingAllowedRoom
100+
));
101+
102+
}
103+
104+
@AfterEach
105+
void cleanUp() {
106+
repository.deleteBy();
107+
}
108+
109+
@Test
110+
void shouldFindRoomReadyToGuest() {
111+
List<Room> rooms = this.repository.findAvailableStandardRooms();
112+
SoftAssertions.assertSoftly(softly -> {
113+
softly.assertThat(rooms).hasSize(3);
114+
softly.assertThat(rooms).allMatch(room -> room.getStatus().equals(RoomStatus.AVAILABLE));
115+
softly.assertThat(rooms).allMatch(room -> !room.isUnderMaintenance());
116+
});
117+
}
118+
119+
@Test
120+
void shouldFindVipRoomsReadyForGuests() {
121+
List<Room> rooms = this.repository.findVipRoomsReadyForGuests();
122+
SoftAssertions.assertSoftly(softly -> {
123+
softly.assertThat(rooms).hasSize(2);
124+
softly.assertThat(rooms).allMatch(room -> room.getType().equals(RoomType.VIP_SUITE));
125+
softly.assertThat(rooms).allMatch(room -> room.getStatus().equals(RoomStatus.AVAILABLE));
126+
softly.assertThat(rooms).allMatch(room -> !room.isUnderMaintenance());
127+
});
128+
}
129+
130+
@Test
131+
void shouldFindAvailableSmokingRooms() {
132+
List<Room> rooms = this.repository.findAvailableSmokingRooms();
133+
SoftAssertions.assertSoftly(softly -> {
134+
softly.assertThat(rooms).hasSize(2);
135+
softly.assertThat(rooms).allMatch(room -> room.isSmokingAllowed());
136+
softly.assertThat(rooms).allMatch(room -> room.getStatus().equals(RoomStatus.AVAILABLE));
137+
});
138+
}
139+
140+
@Test
141+
void shouldFindRoomsNeedingCleaning() {
142+
List<Room> rooms = this.repository.findRoomsNeedingCleaning();
143+
SoftAssertions.assertSoftly(softly -> {
144+
softly.assertThat(rooms).hasSize(2);
145+
softly.assertThat(rooms).allMatch(room -> !room.getCleanStatus().equals(CleanStatus.CLEAN));
146+
softly.assertThat(rooms).allMatch(room -> !room.getStatus().equals(RoomStatus.OUT_OF_SERVICE));
147+
});
148+
}
149+
}

0 commit comments

Comments
 (0)