Skip to content

Commit a989aca

Browse files
committed
Implemented tests for the new function.
1 parent 7638f52 commit a989aca

File tree

2 files changed

+210
-50
lines changed

2 files changed

+210
-50
lines changed

src/test/java/create_flashcard_use_case/FcCInteractorTest.java

Lines changed: 202 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import create_flashcard_use_case.function_testing.InMemoryFlashcard;
44
import create_flashcard_use_case.function_testing.InMemoryFlashcardSet;
5+
import data_access_use_case.entity_request_models.FlashcardDsRequestModel;
56
import frameworks_and_drivers.database.DBGateway;
67
import data_access_use_case.IFlashcardDataAccess;
78
import data_access_use_case.IFlashcardSetDataAccess;
89
import data_access_use_case.entity_request_models.FlashcardSetDsRequestModel;
910
import org.junit.jupiter.api.Assertions;
1011
import org.junit.jupiter.api.Test;
1112

13+
import java.time.LocalDateTime;
1214
import java.util.ArrayList;
1315
import java.util.List;
1416

@@ -51,11 +53,161 @@ public CreateFlashcardResponseModel prepareFailView(String error){
5153
Assertions.fail("Unexpected Failure.");
5254
return null;
5355
}
56+
57+
//Duplicates should not exist.
58+
@Override
59+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
60+
Assertions.fail("Unexpected Duplicate.");
61+
return null;
62+
}
5463
};
5564
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
5665
//Valid input for flashcard.
5766
interactor.create(new CreateFlashcardRequestModel(0, "term", "definition"));
5867
}
68+
/**
69+
* Test for creation of valid flashcard with term of multiple lines.
70+
*/
71+
@Test
72+
public void create_success_multiple_lines_term(){
73+
//Creating database for the test.
74+
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard();
75+
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet();
76+
DBGateway gateway = new DBGateway(flashcardDataAccess, flashcardSetDataAccess, null);
77+
78+
//Adding flash card set with id 0 for interactor to create flashcard in.
79+
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set","description",
80+
true, 0, "user", new ArrayList<>()));
81+
//Changed presenter for the test.
82+
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary(){
83+
//Check if the flashcard is saved when response from interactor is successful.
84+
@Override
85+
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel){
86+
Assertions.assertEquals(gateway.getFlashcard(0).getTerm(), "term term");
87+
Assertions.assertEquals(gateway.getFlashcard(0).getDefinition(), "definition");
88+
List<Integer> ids = new ArrayList<>();
89+
ids.add(0);
90+
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(),
91+
ids);
92+
return null;
93+
}
94+
95+
//Errors should not happen.
96+
@Override
97+
public CreateFlashcardResponseModel prepareFailView(String error){
98+
Assertions.fail("Unexpected Failure.");
99+
return null;
100+
}
101+
102+
//Duplicates should not exist.
103+
@Override
104+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
105+
Assertions.fail("Unexpected Duplicate.");
106+
return null;
107+
}
108+
};
109+
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
110+
//Input with multiple lines.
111+
interactor.create(new CreateFlashcardRequestModel(0, "term\nterm", "definition"));
112+
}
113+
/**
114+
* Test for creation of valid flashcard with definition of multiple lines.
115+
*/
116+
@Test
117+
public void create_success_multiple_lines_definition(){
118+
//Creating database for the test.
119+
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard();
120+
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet();
121+
DBGateway gateway = new DBGateway(flashcardDataAccess, flashcardSetDataAccess, null);
122+
123+
//Adding flash card set with id 0 for interactor to create flashcard in.
124+
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set","description",
125+
true, 0, "user", new ArrayList<>()));
126+
//Changed presenter for the test.
127+
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary(){
128+
//Check if the flashcard is saved when response from interactor is successful.
129+
@Override
130+
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel){
131+
Assertions.assertEquals(gateway.getFlashcard(0).getTerm(), "term");
132+
Assertions.assertEquals(gateway.getFlashcard(0).getDefinition(),
133+
"definition definition");
134+
List<Integer> ids = new ArrayList<>();
135+
ids.add(0);
136+
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(),
137+
ids);
138+
return null;
139+
}
140+
141+
//Errors should not happen.
142+
@Override
143+
public CreateFlashcardResponseModel prepareFailView(String error){
144+
Assertions.fail("Unexpected Failure.");
145+
return null;
146+
}
147+
148+
//Duplicates should not exist.
149+
@Override
150+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
151+
Assertions.fail("Unexpected Duplicate.");
152+
return null;
153+
}
154+
};
155+
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
156+
//Input with multiple lines.
157+
interactor.create(new CreateFlashcardRequestModel(0, "term", "definition\ndefinition"));
158+
}
159+
160+
/**
161+
* Test for overwrite flashcard.
162+
*/
163+
@Test
164+
public void create_success_overwrite_flashcard() {
165+
//Creating database for the test.
166+
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard();
167+
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet();
168+
DBGateway gateway = new DBGateway(flashcardDataAccess, flashcardSetDataAccess, null);
169+
170+
//Adding flash card set with id 0 for interactor to create flashcard in.
171+
List<Integer> flashcardIds = new ArrayList<>();
172+
flashcardIds.add(0);
173+
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set", "description",
174+
true, 0, "user", flashcardIds));
175+
//Adding flashcard.
176+
flashcardDataAccess.saveFlashcard(new FlashcardDsRequestModel("term", "definition",
177+
LocalDateTime.now(), -1, 0));
178+
//Changed presenter for the test.
179+
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary() {
180+
//Success should not happen.
181+
@Override
182+
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel) {
183+
Assertions.assertEquals(gateway.getFlashcard(0).getTerm(), "term");
184+
Assertions.assertEquals(gateway.getFlashcard(0).getDefinition(),
185+
"definition definition");
186+
List<Integer> ids = new ArrayList<>();
187+
ids.add(0);
188+
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(),
189+
ids);
190+
return null;
191+
}
192+
193+
//Errors should not happen.
194+
@Override
195+
public CreateFlashcardResponseModel prepareFailView(String error) {
196+
Assertions.fail("Unexpected Failure.");
197+
return null;
198+
}
199+
200+
//Duplicate should not exist anymore.
201+
@Override
202+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
203+
Assertions.fail("Unexpected Duplicate.");
204+
return null;
205+
}
206+
};
207+
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
208+
//Input with multiple lines.
209+
interactor.create(new CreateFlashcardRequestModel(0, "term", "definition\ndefinition"), 0);
210+
}
59211

60212
/**
61213
* Test for Creation of flashcard with empty term.
@@ -80,12 +232,19 @@ public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseMo
80232
return null;
81233
}
82234

83-
////Check if error thrown is correct
235+
//Check if error thrown is correct
84236
@Override
85237
public CreateFlashcardResponseModel prepareFailView(String error){
86238
Assertions.assertEquals("Term or definition is empty.", error);
87239
return null;
88240
}
241+
242+
//Duplicates should not exist.
243+
@Override
244+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
245+
Assertions.fail("Unexpected Duplicate.");
246+
return null;
247+
}
89248
};
90249
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
91250
//Input with empty term.
@@ -121,6 +280,13 @@ public CreateFlashcardResponseModel prepareFailView(String error){
121280
Assertions.assertEquals("Term or definition is empty.", error);
122281
return null;
123282
}
283+
284+
//Duplicates should not exist.
285+
@Override
286+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
287+
Assertions.fail("Unexpected Duplicate.");
288+
return null;
289+
}
124290
};
125291
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
126292
//Input with empty definition.
@@ -153,6 +319,13 @@ public CreateFlashcardResponseModel prepareFailView(String error) {
153319
Assertions.assertEquals("Flashcard set does not exist.", error);
154320
return null;
155321
}
322+
323+
//Duplicates should not exist.
324+
@Override
325+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
326+
Assertions.fail("Unexpected Duplicate.");
327+
return null;
328+
}
156329
};
157330
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
158331
//Flashcard creation.
@@ -186,81 +359,60 @@ public CreateFlashcardResponseModel prepareFailView(String error){
186359
Assertions.assertEquals("Term or definition is empty.", error);
187360
return null;
188361
}
362+
363+
//Duplicates should not exist.
364+
@Override
365+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
366+
Assertions.fail("Unexpected Duplicate.");
367+
return null;
368+
}
189369
};
190370
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
191371
//Input with empty term and definition.
192372
interactor.create(new CreateFlashcardRequestModel(-1, "", ""));
193373
}
374+
194375
/**
195-
* Test for creation of valid flashcard with term of multiple lines.
376+
* Test for detecting duplicate term.
196377
*/
197378
@Test
198-
public void create_success_multiple_lines_term(){
379+
public void create_failure_duplicate() {
199380
//Creating database for the test.
200381
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard();
201382
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet();
202383
DBGateway gateway = new DBGateway(flashcardDataAccess, flashcardSetDataAccess, null);
203384

204385
//Adding flash card set with id 0 for interactor to create flashcard in.
205-
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set","description",
206-
true, 0, "user", new ArrayList<>()));
386+
List<Integer> flashcardIds = new ArrayList<>();
387+
flashcardIds.add(0);
388+
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set", "description",
389+
true, 0, "user", flashcardIds));
390+
//Adding flashcard.
391+
flashcardDataAccess.saveFlashcard(new FlashcardDsRequestModel("term", "definition",
392+
LocalDateTime.now(), -1, 0));
207393
//Changed presenter for the test.
208-
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary(){
209-
//Check if the flashcard is saved when response from interactor is successful.
394+
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary() {
395+
//Success should not happen.
210396
@Override
211-
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel){
212-
Assertions.assertEquals(gateway.getFlashcard(0).getTerm(), "term term");
213-
Assertions.assertEquals(gateway.getFlashcard(0).getDefinition(), "definition");
214-
List<Integer> ids = new ArrayList<>();
215-
ids.add(0);
216-
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(),
217-
ids);
397+
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel) {
398+
Assertions.fail("Unexpected Success.");
218399
return null;
219400
}
220401

221402
//Errors should not happen.
222403
@Override
223-
public CreateFlashcardResponseModel prepareFailView(String error){
404+
public CreateFlashcardResponseModel prepareFailView(String error) {
224405
Assertions.fail("Unexpected Failure.");
225406
return null;
226407
}
227-
};
228-
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor(gateway, presenter);
229-
//Input with multiple lines.
230-
interactor.create(new CreateFlashcardRequestModel(0, "term\nterm", "definition"));
231-
}
232-
/**
233-
* Test for creation of valid flashcard with definition of multiple lines.
234-
*/
235-
@Test
236-
public void create_success_multiple_lines_definition(){
237-
//Creating database for the test.
238-
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard();
239-
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet();
240-
DBGateway gateway = new DBGateway(flashcardDataAccess, flashcardSetDataAccess, null);
241-
242-
//Adding flash card set with id 0 for interactor to create flashcard in.
243-
flashcardSetDataAccess.saveFlashcardSet(new FlashcardSetDsRequestModel("test set","description",
244-
true, 0, "user", new ArrayList<>()));
245-
//Changed presenter for the test.
246-
CreateFlashcardOutputBoundary presenter = new CreateFlashcardOutputBoundary(){
247-
//Check if the flashcard is saved when response from interactor is successful.
248-
@Override
249-
public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseModel responseModel){
250-
Assertions.assertEquals(gateway.getFlashcard(0).getTerm(), "term");
251-
Assertions.assertEquals(gateway.getFlashcard(0).getDefinition(),
252-
"definition definition");
253-
List<Integer> ids = new ArrayList<>();
254-
ids.add(0);
255-
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(),
256-
ids);
257-
return null;
258-
}
259408

260-
//Errors should not happen.
409+
//Check if duplicate is returned correctly.
261410
@Override
262-
public CreateFlashcardResponseModel prepareFailView(String error){
263-
Assertions.fail("Unexpected Failure.");
411+
public CreateFlashcardResponseModel prepareDuplicateView(CreateFlashcardResponseModel responseModel) {
412+
Assertions.assertEquals(responseModel.getTerm(), "term");
413+
Assertions.assertEquals(responseModel.getDefinition(), "definition");
414+
Assertions.assertEquals(responseModel.getFlashcardId(), 0);
415+
Assertions.assertEquals(responseModel.existsDuplicate(), true);
264416
return null;
265417
}
266418
};

src/test/java/delete_flashcard_use_case/FcRInteractorTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public void delete_success(){
3333
LocalDateTime.now(), 0,0));
3434
//Creating presenter for test.
3535
DeleteFlashcardOutputBoundary presenter = new DeleteFlashcardPresenter(){
36+
//Test if deletion is successful.
3637
@Override
3738
public DeleteFlashcardResponseModel prepareSuccessView(DeleteFlashcardResponseModel responseModel){
3839
Assertions.assertEquals(gateway.getFlashcardSet(0).getFlashcardIds(), new ArrayList<>());
@@ -41,6 +42,7 @@ public DeleteFlashcardResponseModel prepareSuccessView(DeleteFlashcardResponseMo
4142
return null;
4243
}
4344

45+
//Failure should not happen.
4446
@Override
4547
public DeleteFlashcardResponseModel prepareFailView(String error){
4648
System.out.println(error);
@@ -65,12 +67,14 @@ public void delete_failure_no_flashcard(){
6567
"description", true, 0,"User", new ArrayList<>()));
6668
//Creating presenter for test.
6769
DeleteFlashcardOutputBoundary presenter = new DeleteFlashcardPresenter(){
70+
//Success should not happen.
6871
@Override
6972
public DeleteFlashcardResponseModel prepareSuccessView(DeleteFlashcardResponseModel responseModel){
7073
Assertions.fail("Unexpected success.");
7174
return null;
7275
}
7376

77+
//Check if failure message is correct.
7478
@Override
7579
public DeleteFlashcardResponseModel prepareFailView(String error){
7680
Assertions.assertEquals("Flashcard does not exist.", error);
@@ -96,12 +100,14 @@ public void delete_failure_no_flashcard_set(){
96100
LocalDateTime.now(), 0,1));
97101
//Creating presenter for test.
98102
DeleteFlashcardOutputBoundary presenter = new DeleteFlashcardPresenter(){
103+
//Success should not happen.
99104
@Override
100105
public DeleteFlashcardResponseModel prepareSuccessView(DeleteFlashcardResponseModel responseModel){
101106
Assertions.fail("Unexpected success.");
102107
return null;
103108
}
104109

110+
//Check if failure message is correct.
105111
@Override
106112
public DeleteFlashcardResponseModel prepareFailView(String error){
107113
Assertions.assertEquals("Flashcard set does not exist.", error);
@@ -129,12 +135,14 @@ public void delete_failure_flashcard_not_in_flashcard_set() {
129135
LocalDateTime.now(), 0, 1));
130136
//Creating presenter for test.
131137
DeleteFlashcardOutputBoundary presenter = new DeleteFlashcardPresenter() {
138+
//Success should not happen.
132139
@Override
133140
public DeleteFlashcardResponseModel prepareSuccessView(DeleteFlashcardResponseModel responseModel) {
134141
Assertions.fail("Unexpected success.");
135142
return null;
136143
}
137144

145+
//Check if failure message is correct.
138146
@Override
139147
public DeleteFlashcardResponseModel prepareFailView(String error) {
140148
Assertions.assertEquals("Flashcard not in this flashcard set.", error);

0 commit comments

Comments
 (0)