Skip to content

Commit fc56ad7

Browse files
feat: added tests [macata #99]
1 parent 61ffecc commit fc56ad7

File tree

4 files changed

+154
-11
lines changed

4 files changed

+154
-11
lines changed

src/main/java/com/dazednconfused/catalauncher/database/mod/repository/ModH2RepositoryImpl.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,10 @@ public ModEntity insert(ModEntity entity) throws DAOException {
6565
public int bulkInsert(Collection<ModEntity> entities) throws DAOException {
6666
LOGGER.debug("Bulk inserting [{}] ModEntity(ies)...", entities.size());
6767

68-
int insertedCount = 0;
69-
70-
for (ModEntity entity : entities) {
71-
ModEntity insertedEntity = this.insert(entity);
72-
if (insertedEntity != null) {
73-
this.insertChildEntities(insertedEntity.getId(), entity.getModfiles());
74-
insertedCount++;
75-
}
76-
}
68+
int insertedCount = (int) entities.stream()
69+
.map(this::insert)
70+
.filter(Objects::nonNull)
71+
.count();
7772

7873
LOGGER.debug("Bulk inserted [{}] ModEntity(ies)", insertedCount);
7974

@@ -141,7 +136,7 @@ public List<ModEntity> findAll() throws DAOException {
141136
private List<ModfileEntity> insertChildEntities(long modId, List<ModfileEntity> entities) throws DAOException {
142137
LOGGER.debug("Inserting [{}] ModfileEntity(s) associated to modId [{}]", entities.size(), modId);
143138

144-
modfileDAO.bulkInsert(entities.stream()
139+
this.modfileDAO.bulkInsert(entities.stream()
145140
.peek(e -> e.setModId(modId)) // set/overwrite with entity ID
146141
.collect(Collectors.toList())
147142
);

src/test/java/com/dazednconfused/catalauncher/database/mod/dao/ModDAOTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,46 @@ void insert_success() {
9797
assertThat(result.getCreatedDate()).isEqualTo(result.getUpdatedDate());
9898
}
9999

100+
@Test
101+
void bulk_insert_success() {
102+
103+
// prepare mock data ---
104+
ModEntity entity1 = ModEntity.builder()
105+
.name("testName1")
106+
.modinfo("testModinfo1")
107+
.build();
108+
109+
ModEntity entity2 = ModEntity.builder()
110+
.name("testName2")
111+
.modinfo("testModinfo2")
112+
.build();
113+
114+
ModEntity entity3 = ModEntity.builder()
115+
.name("testName3")
116+
.modinfo("testModinfo3")
117+
.build();
118+
119+
// execute test ---
120+
int result = dao.bulkInsert(List.of(entity1, entity2, entity3));
121+
122+
// verify assertions ---
123+
assertThat(result).isEqualTo(3);
124+
125+
List<ModEntity> allEntities = dao.findAll();
126+
assertThat(allEntities).hasSize(3);
127+
128+
assertThat(allEntities)
129+
.usingRecursiveFieldByFieldElementComparatorIgnoringFields("id", "createdDate", "updatedDate")
130+
.containsExactlyInAnyOrder(entity1, entity2, entity3);
131+
132+
for (ModEntity entity : allEntities) {
133+
assertThat(entity.getId()).isNotZero();
134+
assertThat(entity.getCreatedDate()).isNotNull();
135+
assertThat(entity.getUpdatedDate()).isNotNull();
136+
assertThat(entity.getCreatedDate()).isEqualTo(entity.getUpdatedDate());
137+
}
138+
}
139+
100140
@Test
101141
void find_by_id_success() {
102142

src/test/java/com/dazednconfused/catalauncher/database/mod/dao/ModfileDAOTest.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import static org.mockito.Mockito.when;
66

77
import com.dazednconfused.catalauncher.database.base.DisposableDatabase;
8-
import com.dazednconfused.catalauncher.database.h2.H2Database;
98
import com.dazednconfused.catalauncher.database.mod.entity.ModEntity;
109
import com.dazednconfused.catalauncher.database.mod.entity.ModfileEntity;
1110

@@ -124,6 +123,49 @@ void insert_success() {
124123
assertThat(result.getCreatedDate()).isEqualTo(result.getUpdatedDate());
125124
}
126125

126+
@Test
127+
void bulk_insert_success() {
128+
129+
// prepare mock data ---
130+
ModfileEntity entity1 = ModfileEntity.builder()
131+
.modId(parentModId)
132+
.path("testPath1")
133+
.hash("testHash1")
134+
.build();
135+
136+
ModfileEntity entity2 = ModfileEntity.builder()
137+
.modId(parentModId)
138+
.path("testPath2")
139+
.hash("testHash2")
140+
.build();
141+
142+
ModfileEntity entity3 = ModfileEntity.builder()
143+
.modId(parentModId)
144+
.path("testPath3")
145+
.hash("testHash3")
146+
.build();
147+
148+
// execute test ---
149+
int result = dao.bulkInsert(List.of(entity1, entity2, entity3));
150+
151+
// verify assertions ---
152+
assertThat(result).isEqualTo(3);
153+
154+
List<ModfileEntity> allEntities = dao.findAll();
155+
assertThat(allEntities).hasSize(3);
156+
157+
assertThat(allEntities)
158+
.usingRecursiveFieldByFieldElementComparatorIgnoringFields("id", "createdDate", "updatedDate")
159+
.containsExactlyInAnyOrder(entity1, entity2, entity3);
160+
161+
for (ModfileEntity entity : allEntities) {
162+
assertThat(entity.getId()).isNotZero();
163+
assertThat(entity.getCreatedDate()).isNotNull();
164+
assertThat(entity.getUpdatedDate()).isNotNull();
165+
assertThat(entity.getCreatedDate()).isEqualTo(entity.getUpdatedDate());
166+
}
167+
}
168+
127169
@Test
128170
void find_by_id_success() {
129171

src/test/java/com/dazednconfused/catalauncher/database/mod/repository/ModRepositoryTest.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,72 @@ void insert_success() {
123123
assertThat(resultChildEntity3.getCreatedDate()).isEqualTo(resultChildEntity3.getUpdatedDate());
124124
}
125125

126+
@Test
127+
void bulk_insert_success() {
128+
129+
// prepare mock data ---
130+
ModEntity entity1 = ModEntity.builder()
131+
.name("testName1")
132+
.modinfo("testModinfo1")
133+
.modfiles(Arrays.asList(
134+
ModfileEntity.builder().path("testPath1_1").hash("testHash1_1").build(),
135+
ModfileEntity.builder().path("testPath1_2").hash("testHash1_2").build(),
136+
ModfileEntity.builder().path("testPath1_3").hash("testHash1_3").build()
137+
))
138+
.build();
139+
140+
ModEntity entity2 = ModEntity.builder()
141+
.name("testName2")
142+
.modinfo("testModinfo2")
143+
.modfiles(Arrays.asList(
144+
ModfileEntity.builder().path("testPath2_1").hash("testHash2_1").build(),
145+
ModfileEntity.builder().path("testPath2_2").hash("testHash2_2").build(),
146+
ModfileEntity.builder().path("testPath2_3").hash("testHash2_3").build()
147+
))
148+
.build();
149+
150+
ModEntity entity3 = ModEntity.builder()
151+
.name("testName3")
152+
.modinfo("testModinfo3")
153+
.modfiles(Arrays.asList(
154+
ModfileEntity.builder().path("testPath3_1").hash("testHash3_1").build(),
155+
ModfileEntity.builder().path("testPath3_2").hash("testHash3_2").build(),
156+
ModfileEntity.builder().path("testPath3_3").hash("testHash3_3").build()
157+
))
158+
.build();
159+
160+
// execute test ---
161+
int result = repository.bulkInsert(Arrays.asList(entity1, entity2, entity3));
162+
163+
// verify assertions ---
164+
assertThat(result).isEqualTo(3);
165+
166+
List<ModEntity> allEntities = repository.findAll();
167+
assertThat(allEntities).hasSize(3);
168+
169+
assertThat(allEntities)
170+
.usingRecursiveFieldByFieldElementComparatorIgnoringFields(
171+
"id", "createdDate", "updatedDate",
172+
"modfiles.id", "modfiles.createdDate", "modfiles.updatedDate"
173+
)
174+
.containsExactlyInAnyOrder(entity1, entity2, entity3);
175+
176+
for (ModEntity entity : allEntities) {
177+
assertThat(entity.getId()).isNotZero();
178+
assertThat(entity.getCreatedDate()).isNotNull();
179+
assertThat(entity.getUpdatedDate()).isNotNull();
180+
assertThat(entity.getCreatedDate()).isEqualTo(entity.getUpdatedDate());
181+
assertThat(entity.getModfiles()).hasSize(3);
182+
183+
for (ModfileEntity modfile : entity.getModfiles()) {
184+
assertThat(modfile.getModId()).isEqualTo(entity.getId());
185+
assertThat(modfile.getCreatedDate()).isNotNull();
186+
assertThat(modfile.getUpdatedDate()).isNotNull();
187+
assertThat(modfile.getCreatedDate()).isEqualTo(modfile.getUpdatedDate());
188+
}
189+
}
190+
}
191+
126192
@Test
127193
void find_by_id_success() {
128194

0 commit comments

Comments
 (0)