2
2
3
3
import create_flashcard_use_case .function_testing .InMemoryFlashcard ;
4
4
import create_flashcard_use_case .function_testing .InMemoryFlashcardSet ;
5
+ import data_access_use_case .entity_request_models .FlashcardDsRequestModel ;
5
6
import frameworks_and_drivers .database .DBGateway ;
6
7
import data_access_use_case .IFlashcardDataAccess ;
7
8
import data_access_use_case .IFlashcardSetDataAccess ;
8
9
import data_access_use_case .entity_request_models .FlashcardSetDsRequestModel ;
9
10
import org .junit .jupiter .api .Assertions ;
10
11
import org .junit .jupiter .api .Test ;
11
12
13
+ import java .time .LocalDateTime ;
12
14
import java .util .ArrayList ;
13
15
import java .util .List ;
14
16
@@ -51,11 +53,161 @@ public CreateFlashcardResponseModel prepareFailView(String error){
51
53
Assertions .fail ("Unexpected Failure." );
52
54
return null ;
53
55
}
56
+
57
+ //Duplicates should not exist.
58
+ @ Override
59
+ public CreateFlashcardResponseModel prepareDuplicateView (CreateFlashcardResponseModel responseModel ) {
60
+ Assertions .fail ("Unexpected Duplicate." );
61
+ return null ;
62
+ }
54
63
};
55
64
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
56
65
//Valid input for flashcard.
57
66
interactor .create (new CreateFlashcardRequestModel (0 , "term" , "definition" ));
58
67
}
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\n term" , "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\n definition" ));
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\n definition" ), 0 );
210
+ }
59
211
60
212
/**
61
213
* Test for Creation of flashcard with empty term.
@@ -80,12 +232,19 @@ public CreateFlashcardResponseModel prepareSuccessView(CreateFlashcardResponseMo
80
232
return null ;
81
233
}
82
234
83
- //// Check if error thrown is correct
235
+ //Check if error thrown is correct
84
236
@ Override
85
237
public CreateFlashcardResponseModel prepareFailView (String error ){
86
238
Assertions .assertEquals ("Term or definition is empty." , error );
87
239
return null ;
88
240
}
241
+
242
+ //Duplicates should not exist.
243
+ @ Override
244
+ public CreateFlashcardResponseModel prepareDuplicateView (CreateFlashcardResponseModel responseModel ) {
245
+ Assertions .fail ("Unexpected Duplicate." );
246
+ return null ;
247
+ }
89
248
};
90
249
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
91
250
//Input with empty term.
@@ -121,6 +280,13 @@ public CreateFlashcardResponseModel prepareFailView(String error){
121
280
Assertions .assertEquals ("Term or definition is empty." , error );
122
281
return null ;
123
282
}
283
+
284
+ //Duplicates should not exist.
285
+ @ Override
286
+ public CreateFlashcardResponseModel prepareDuplicateView (CreateFlashcardResponseModel responseModel ) {
287
+ Assertions .fail ("Unexpected Duplicate." );
288
+ return null ;
289
+ }
124
290
};
125
291
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
126
292
//Input with empty definition.
@@ -153,6 +319,13 @@ public CreateFlashcardResponseModel prepareFailView(String error) {
153
319
Assertions .assertEquals ("Flashcard set does not exist." , error );
154
320
return null ;
155
321
}
322
+
323
+ //Duplicates should not exist.
324
+ @ Override
325
+ public CreateFlashcardResponseModel prepareDuplicateView (CreateFlashcardResponseModel responseModel ) {
326
+ Assertions .fail ("Unexpected Duplicate." );
327
+ return null ;
328
+ }
156
329
};
157
330
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
158
331
//Flashcard creation.
@@ -186,81 +359,60 @@ public CreateFlashcardResponseModel prepareFailView(String error){
186
359
Assertions .assertEquals ("Term or definition is empty." , error );
187
360
return null ;
188
361
}
362
+
363
+ //Duplicates should not exist.
364
+ @ Override
365
+ public CreateFlashcardResponseModel prepareDuplicateView (CreateFlashcardResponseModel responseModel ) {
366
+ Assertions .fail ("Unexpected Duplicate." );
367
+ return null ;
368
+ }
189
369
};
190
370
CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
191
371
//Input with empty term and definition.
192
372
interactor .create (new CreateFlashcardRequestModel (-1 , "" , "" ));
193
373
}
374
+
194
375
/**
195
- * Test for creation of valid flashcard with term of multiple lines .
376
+ * Test for detecting duplicate term.
196
377
*/
197
378
@ Test
198
- public void create_success_multiple_lines_term () {
379
+ public void create_failure_duplicate () {
199
380
//Creating database for the test.
200
381
IFlashcardDataAccess flashcardDataAccess = new InMemoryFlashcard ();
201
382
IFlashcardSetDataAccess flashcardSetDataAccess = new InMemoryFlashcardSet ();
202
383
DBGateway gateway = new DBGateway (flashcardDataAccess , flashcardSetDataAccess , null );
203
384
204
385
//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 ));
207
393
//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 .
210
396
@ 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." );
218
399
return null ;
219
400
}
220
401
221
402
//Errors should not happen.
222
403
@ Override
223
- public CreateFlashcardResponseModel prepareFailView (String error ){
404
+ public CreateFlashcardResponseModel prepareFailView (String error ) {
224
405
Assertions .fail ("Unexpected Failure." );
225
406
return null ;
226
407
}
227
- };
228
- CreateFlashcardInputBoundary interactor = new CreateFlashcardInteractor (gateway , presenter );
229
- //Input with multiple lines.
230
- interactor .create (new CreateFlashcardRequestModel (0 , "term\n term" , "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
- }
259
408
260
- //Errors should not happen .
409
+ //Check if duplicate is returned correctly .
261
410
@ 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 );
264
416
return null ;
265
417
}
266
418
};
0 commit comments