Commit 039cefb32cd9a9175a597cc6dd660c187a0a839f

Authored by Rohan Rangray
Exists in master

Merge branch 'master' of git.ucsd.edu:110swag/docs

megkging

Showing 2 changed files Side-by-side Diff

DesignUseCases.tex View file @ 039cefb
Diff suppressed. Click to show
... ... @@ -47,11 +47,9 @@
47 47 \section{Accounts}
48 48 \subsection{[A1] User Registration}
49 49 \begin{description}[style=multiline,leftmargin=3cm]
50   -\item[Description]{To create and save decks, the system requires the user
51   -to create an account prior. The user will be able to create an account
52   -through registering.}
  50 +\item[Description]{To create flashcards and save them into decks, the system requires the user to create an account prior. The user will be able to create an account by registering.}
53 51 \item[Desired Outcome]{An account will be created for the user from the
54   -specified username, password, email. The user will be able to log into
  52 +specified username, password, and email. The user will be able to log into
55 53 the aforementioned account.}
56 54 \\
57 55 \item[User Goals]{The user shall have an account to participate in the
... ... @@ -65,7 +63,7 @@
65 63  
66 64 \item[Status]{Implemented}
67 65  
68   -\item[Pre-conditions]: None.
  66 +\item[Pre-conditions]{None}
69 67  
70 68 \item[Post-conditions]
71 69  
72 70  
73 71  
74 72  
75 73  
76 74  
77 75  
78 76  
79 77  
80 78  
81 79  
82 80  
... ... @@ -84,37 +82,33 @@
84 82 \item
85 83 {The frontend renders the login form described in login.html.}
86 84 \item
87   - {The User shall click the sign up toggle.}
  85 + {The user shall click the sign up tab.}
88 86 \item
89   - {The frontend shall render a registration form and display it to the User.}
  87 + {The frontend shall render a registration form and display it to the user.}
90 88 \item
91   - {The User shal fill in the form.}
  89 + {The user shall fill in the form.}
92 90 \item
93 91 {The frontend checks that the provided email is not invalid, and that
94   - the password is not valid. If anything is not valid, it displays an
  92 + the password is not invalid. If anything is not valid, it displays an
95 93 error and returns this to the user. }
96 94 \item
97   - {If the form is valid, the frontent POSTs the form in JSON format to the
98   - server API at /api/verify\_email/.}
  95 + {If the form is valid, the frontend POSTs the form in JSON format to the
  96 + backend API at /api/verify\_email/.}
99 97 \item
100   - {The backend deserializes and validates the data in /api/register. If it's not valid, it
101   - returns an error to the frontend.}
  98 + {The backend deserializes and validates the data in /api/register. If it's not valid, it returns an error to the frontend.}
102 99 \item
103   - {The backend creates a new User object from the provided data, filling
  100 + {The backend creates a new user object from the provided data, filling
104 101 in the email and password fields in models.py in model method create\_user.}
105 102 \item
106   - {The backend saves the User object in models.py.}
  103 + {The backend saves the user object in models.py.}
107 104 \item
108   - {The backend marks the User's email as unverified.}
  105 + {The backend marks the user's email as unverified.}
109 106 \item
110   - {The backend sends an email to the User's address with a link to
111   - validate the user's email address from models.py in function send\_confirmation\_email.}
  107 + {The backend sends an email to the user's address with a link to validate the user's email address from models.py in function send\_confirmation\_email.}
112 108 \item
113   - {The backend responds with success and logs the User in on a new
114   - session for the User. }
  109 + {The backend responds with success and logs the user in on a new session for the User.}
115 110 \item
116   - {The frontend reports success to the User and stores the sessionid for
117   - future requests.}
  111 + {The frontend reports success to the user and stores the sessionid for future requests.}
118 112 \end{enumerate}
119 113  
120 114 {Verification Workflow:}
121 115  
122 116  
123 117  
... ... @@ -122,18 +116,16 @@
122 116 \begin{enumerate}
123 117 \itemsep1pt\parskip0pt\parsep0pt
124 118 \item
125   - {The User receives an email with a link to verify their email. The
126   - User clicks the link}
  119 + {The user receives an email with a link to verify their email. The user clicks the link}
127 120 \item
128 121 {The frontend in VerifyEmailController submits a POST request to the backend.}
129 122 \item
130   - {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns
131   - an error to the frontend.}
  123 + {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns an error to the frontend.}
132 124 \item
133   - {The backend marks the user's email as confirmed and saves the User object
  125 + {The backend marks the user's email as confirmed and saves the user object
134 126 again in models.py in function confirm\_email. The user's account is now active.}
135 127 \item
136   - {The frontend's VerifyEmailController.js reports success and logs the User in to the application. }
  128 + {The frontend's VerifyEmailController.js reports success and logs the user in to the application.}
137 129 \end{enumerate}
138 130  
139 131 \end{description}
... ... @@ -142,7 +134,7 @@
142 134 \subsection{[A2] User Login}
143 135  
144 136 \begin{description}
145   -\item[Description]{User is able to login to personal account.}
  137 +\item[Description]{The user is able to login to personal account.}
146 138  
147 139 \item[Desired Outcome]{The user shall be able to provide their username and
148 140 password to access their courses and flash cards. The user shall gain
... ... @@ -165,8 +157,8 @@
165 157 \begin{itemize}
166 158 \itemsep1pt\parskip0pt\parsep0pt
167 159 \item
168   - {The User has registered an account.}
169   - {The User knows their email and password.}
  160 + {The user has registered an account.}
  161 + {The user knows their email and password.}
170 162 \end{itemize}
171 163  
172 164 \item[Post-conditions]
173 165  
... ... @@ -174,10 +166,10 @@
174 166 \begin{itemize}
175 167 \itemsep1pt\parskip0pt\parsep0pt
176 168 \item
177   - {The User can navigate the site and see their data.}
  169 + {The user can navigate the site and see their data.}
178 170 \end{itemize}
179 171  
180   -\item[Trigger]{The User wants to use the application and its core features.}
  172 +\item[Trigger]{The user wants to use the application and its core features.}
181 173  
182 174 \item[Workflow]
183 175  
184 176  
185 177  
186 178  
187 179  
188 180  
189 181  
190 182  
... ... @@ -186,29 +178,29 @@
186 178 \item
187 179 {The frontend shall render the login form described in login.html and implemented in LoginController.js}
188 180 \item
189   -{The User shall type in their email and password.}
  181 +{The user shall type in their email and password.}
190 182 \item
191   - {The backend shall verify that the User has submitted their email and password in views.py in function login.}
  183 + {The backend shall verify that the user has submitted their email and password in views.py in function login.}
192 184 \item
193   - {The backend shall check that the User is active in views.py in function login.}
  185 + {The backend shall check that the user is active in views.py in function login.}
194 186 \item
195   - {The backend shall log the User in using the Django login feature.}
  187 + {The backend shall log the user in using the Django login feature.}
196 188 \item
197   - {The frontend shall displays the home page for the User.}
  189 + {The frontend shall displays the home page for the user.}
198 190 \end{enumerate}
199 191 \end{description}
200 192 \newpage
201 193  
202 194 \subsection{[A3] Add a Class}
203 195 \begin{description}
204   -\item[Description]{The User shall be able to add a class and access the
  196 +\item[Description]{The user shall be able to add a class and access the
205 197 flashcards associated with that class.}
206 198  
207 199 \item[Desired Outcome]{The class shall be connected to the student's account
208   -and the User shall have the ability to read and publish flashcards
  200 +and the user shall have the ability to read and publish flashcards
209 201 for this class.}
210 202 \\
211   -\item[User Goals]{The User wants to publish flashcards for this class, and
  203 +\item[User Goals]{The user wants to publish flashcards for this class, and
212 204 read the flashcards for this class that are published by other users.}
213 205  
214 206 \item[Primary Actor]{User (student)}
215 207  
... ... @@ -225,9 +217,9 @@
225 217 \begin{itemize}
226 218 \itemsep1pt\parskip0pt\parsep0pt
227 219 \item
228   - {The User has registered an account.}
  220 + {The user has registered an account.}
229 221 \item
230   - {The User has successfully logged in to the application.}
  222 + {The user has successfully logged in to the application.}
231 223 \end{itemize}
232 224  
233 225 \item[Post-conditions]
234 226  
235 227  
236 228  
237 229  
... ... @@ -235,25 +227,25 @@
235 227 \begin{itemize}
236 228 \itemsep1pt\parskip0pt\parsep0pt
237 229 \item
238   - {The User can view the flashcards being published for the class and
  230 + {The user can view the flashcards being published for the class and
239 231 add them to their deck.}
240 232 \item
241   - {The User can publish flashcards to be viewed and added by other users
  233 + {The user can publish flashcards to be viewed and added by other users
242 234 in the same class.}
243 235 \end{itemize}
244 236  
245   -\item[Trigger]{The User wants to make flashcards and view flashcards for a class.}
  237 +\item[Trigger]{The user wants to make flashcards and view flashcards for a class.}
246 238  
247 239 \item[Workflow]
248 240  
249 241 \begin{enumerate}
250 242 \itemsep1pt\parskip0pt\parsep0pt
251 243 \item
252   - {The User shall click "Add a Class" from the drop down menu in the upper left hand corner.}
  244 + {The user shall click "Add a Class" from the "Classes" drop down menu in the upper left hand corner.}
253 245 \item
254 246 {The frontend shall navigate to the new page described by addclass.html.}
255 247 \item
256   - {The User shall begin to type the class department code, course title, course number, or instructor in the text box.}
  248 + {The user shall begin to type the class department code, course title, course number, or instructor in the text box.}
257 249 \item
258 250 {The frontend in ClassAddController.js shall send a get request to the backend at api/sections/search/.}
259 251 \item
260 252  
... ... @@ -261,11 +253,11 @@
261 253 \item
262 254 {The frontend shall show the classes that the backend has found.}
263 255 \item
264   - {The User shall select from the classes the one that they want to add.}
  256 + {The user shall select from the classes the one that they want to add.}
265 257 \item
266 258 {The frontend shall enable the 'Add Class' button.}
267 259 \item
268   - {The User shall click 'Add Class' button to the right of the text box.}
  260 + {The user shall click 'Add Class' button to the right of the text box.}
269 261 \item
270 262 {The frontend shall send a post request to api/sections/.}
271 263 \item
... ... @@ -273,7 +265,7 @@
273 265 \item
274 266 {The backend in models.py in function enroll shall add the class to the User's sections.}
275 267 \item
276   - {The frontend shall redirect the User to the class's Live Feed using the ClassAddController.js.}
  268 + {The frontend shall redirect the user to the class's Live Feed using the ClassAddController.js.}
277 269 \item
278 270 {The frontend shall present the live feed for the class by using feed.html and FeedController.js.}
279 271  
280 272  
281 273  
282 274  
... ... @@ -285,20 +277,20 @@
285 277 \itemsep1pt\parskip0pt\parsep0pt
286 278 \item []{ Precondition: The class has a whitelist, a whitelist is a list of email addresses that can add themselves to the class.\\}
287 279 \item
288   - {The User shall select their desired class, which has a whitelist, by clicking on ``Add Class''.}
  280 + {The user shall select their desired class, which has a whitelist, by clicking on ``Add Class''.}
289 281 \item
290 282 {The frontend shall submit a POST request to /api/me/sections with
291 283 the course ID that the User typed. }
292 284 \item
293 285 {The backend shall check if there is a whitelist for the class that the
294   - User has selected in models.py at function is\_whitelisted.}
  286 + user has selected in models.py at function is\_whitelisted.}
295 287 \item
296 288 {The backend shall check if the user is on the whitelist in models.py
297 289 in function is\_user\_on\_whitelist.}
298 290 \item
299   - {The backend shall add the User to the class following steps above.}
  291 + {The backend shall add the user to the class following steps above.}
300 292 \item
301   - {The frontend shall redirect the User to the class's live feed followed the last step in the Workflow above.}
  293 + {The frontend shall redirect the user to the class's live feed followed the last step in the Workflow above.}
302 294 \end{enumerate}
303 295  
304 296 \item[Alternate Workflow: User is not whitelisted.]
305 297  
306 298  
... ... @@ -322,14 +314,14 @@
322 314 \subsection{[A4] Drop a Class}
323 315  
324 316 \begin{description}
325   -\item[Description]{The User can remove themselves from a course he/she is
  317 +\item[Description]{The user can remove themselves from a course he/she is
326 318 registered to}
327 319  
328   -\item[Desired Outcome]{The User has dropped the class and no longer need
  320 +\item[Desired Outcome]{The user has dropped the class and no longer need
329 321 access to the flashcards for said class. This means they can no longer
330 322 see the flashcards associated to the class that they dropped }
331 323 \\
332   -\item[User Goals]{The User shall not have access to a class and the
  324 +\item[User Goals]{The user shall not have access to a class and the
333 325 flashcards associated with that class. They will no longer see the class
334 326 listed in their drop down menu.}
335 327  
336 328  
337 329  
338 330  
... ... @@ -347,13 +339,13 @@
347 339 \begin{itemize}
348 340 \itemsep1pt\parskip0pt\parsep0pt
349 341 \item
350   - {The User has a valid account.}
  342 + {The user has a valid account.}
351 343 \item
352   - {The User is logged in.}
  344 + {The user is logged in.}
353 345 \item
354   - {The User has enrolled in at least one class.}
  346 + {The user has enrolled in at least one class.}
355 347 \item
356   - {The User has navigated to the Settings page.}
  348 + {The user has navigated to the Settings page.}
357 349 \end{itemize}
358 350  
359 351 \item[Post-conditions]{}
360 352  
361 353  
362 354  
363 355  
... ... @@ -361,25 +353,25 @@
361 353 \begin{itemize}
362 354 \itemsep1pt\parskip0pt\parsep0pt
363 355 \item
364   - {User shall no longer have access to dropped class, or associated
  356 + {The user shall no longer have access to dropped class, or associated
365 357 flashcards}
366 358 \end{itemize}
367 359  
368   -\item[Trigger]{User no longer wants to see flashcards from that class.}
  360 +\item[Trigger]{The user no longer wants to see flashcards from that class.}
369 361  
370 362 \item[Workflow]
371 363  
372 364 \begin{enumerate}
373 365 \itemsep1pt\parskip0pt\parsep0pt
374 366 \item
375   - {The User shall click `Drop' button to the right of the class they wish to drop.}
  367 + {The user shall click `Drop' button to the right of the class they wish to drop.}
376 368 \item
377 369 {The frontend shall submit a DELETE request to
378 370 /api/me/sections/\textless{}section ID number\textgreater{}.}
379 371 \item
380   - {The backend shall check that the User is enrolled in the section in models.py in function drop.}
  372 + {The backend shall check that the user is enrolled in the section in models.py in function drop.}
381 373 \item
382   - {The server shall remove the selected class from a user's list of section in models.py in function drop. }
  374 + {The server shall remove the selected class from a user's list of section in models.py in function drop.}
383 375 \item
384 376 {The frontend shall remove the class from the list in setting and show toast reading 'Dropped'.}
385 377 \end{enumerate}
386 378  
... ... @@ -391,10 +383,10 @@
391 383 \subsection{[A5] Password change}
392 384  
393 385 \begin{description}
394   -\item[Description]{The User shall be able to change the password for their
  386 +\item[Description]{The user shall be able to change the password for their
395 387 account in the account settings. }
396 388  
397   -\item[Desired Outcome]{The User's password shall be changed and the User
  389 +\item[Desired Outcome]{The user's password shall be changed and the User
398 390 shall be able to log in with the new password in the future}
399 391 \\\\
400 392 \item[User Goals]{The User wants to use a different password in the future}
... ... @@ -404,7 +396,7 @@
404 396 \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User
405 397 Login}
406 398 \\
407   -\item[Details]{The User provides their current password and a new password
  399 +\item[Details]{The user provides their current password and a new password
408 400 in a form. If the current password is correct, the system updates their
409 401 password to the requested new password.}
410 402  
411 403  
412 404  
413 405  
... ... @@ -417,13 +409,13 @@
417 409 \begin{itemize}
418 410 \itemsep1pt\parskip0pt\parsep0pt
419 411 \item
420   - {The User has registered an account.}
  412 + {The user has registered an account.}
421 413 \item
422   - {The User has logged in.}
  414 + {The user has logged in.}
423 415 \item
424   - {The User knows their current password.}
  416 + {The user knows their current password.}
425 417 \item
426   - {The User has navigated to the Settings page.}
  418 + {The user has navigated to the Settings page.}
427 419 \end{itemize}
428 420  
429 421 \item[Post-conditions]
430 422  
431 423  
432 424  
433 425  
434 426  
... ... @@ -431,24 +423,24 @@
431 423 \begin{itemize}
432 424 \itemsep1pt\parskip0pt\parsep0pt
433 425 \item
434   - {The User's password is changed}
  426 + {The user's password is changed}
435 427 \item
436   - {The User can log in with the new password}
  428 + {The user can log in with the new password}
437 429 \end{itemize}
438 430  
439   -\item[Trigger]{The User wants to change their password.}
  431 +\item[Trigger]{The user wants to change their password.}
440 432  
441 433 \item[Error Handling]
442 434 \begin{description}
443 435 \item[\small Missing Fields] \begin{itemize}
444   -\item The client shall enforce required fields
445   -\item The server will return an HTTP Bad Request error to the client.
  436 +\item The frontend shall enforce required fields
  437 +\item The backend will return an HTTP Bad Request error to the frontend.
446 438 \end{itemize}
447 439 \item[\small Incorrect Old Password] \begin{itemize}
448   -\item The server will return an HTTP Forbidden error to the client.
  440 +\item The backend will return an HTTP Forbidden error to the frontend.
449 441 \end{itemize}
450 442 \item[\small Blank New Password] \begin{itemize}
451   -\item The server will return an HTTP Bad Request error to the client.
  443 +\item The backend will return an HTTP Bad Request error to the frontend.
452 444 \end{itemize}
453 445 \end{description}
454 446 \item[Workflow]
... ... @@ -459,7 +451,7 @@
459 451 {The frontend shall render a form that requires the user to enter their
460 452 old password and new password from settings.html}
461 453 \item
462   - {The User shall type in their current password, the desired new
  454 + {The user shall type in their current password, the desired new
463 455 password, and retype the desired new password to confirm.}
464 456 \item
465 457 {The frontend shall submit the data to the server by sending a PATCH
... ... @@ -470,7 +462,7 @@
470 462 {The backend shall check the user's current password in views.py in function patch under UserDetail.}
471 463 \item The backend shall update the user's current password in views.py in function patch under UserDetail.
472 464 \item
473   - {The frontend shall present a toast reading "Password successfully changed" and redirect the User to the Add a Class page.}
  465 + {The frontend shall present a toast reading "Password successfully changed" and redirect the user to the Add a Class page.}
474 466 \end{enumerate}
475 467 \end{description}
476 468 {}
477 469  
478 470  
... ... @@ -482,13 +474,13 @@
482 474 \subsection{[A6] Password reset}
483 475  
484 476 \begin{description}
485   -\item[Description]{The User shall be able to reset their password without
  477 +\item[Description]{The user shall be able to reset their password without
486 478 being logged in.}
487 479  
488   -\item[Desired Outcome]{The User's password shall be changed to one that
  480 +\item[Desired Outcome]{The user's password shall be changed to one that
489 481 they remember.}
490 482 \\
491   -\item[User Goals]{The User will be able to log into the site with a new password.}
  483 +\item[User Goals]{The user will be able to log into the site with a new password.}
492 484  
493 485 \item[Primary Actor]{User (student)}
494 486  
... ... @@ -497,7 +489,7 @@
497 489 \item[Details]{The user provides their email in a password reset form. If
498 490 the address is valid, the site sends a password reset link with a random
499 491 token to that address. If the address is invalid, the site does not send
500   -a link. For security reasons, we do not reveal to the user whether the
  492 +a link. For security reasons, we do not reveal to the User whether the
501 493 email address was valid, and we expire the link after 24 hours. When a
502 494 user visits the link emailed to them, they are able to specify a new
503 495 password in a form. When they submit the form, their password is updated
504 496  
505 497  
... ... @@ -512,11 +504,11 @@
512 504 \begin{itemize}
513 505 \itemsep1pt\parskip0pt\parsep0pt
514 506 \item
515   - {The User has created an account before.}
  507 + {The user has created an account before.}
516 508 \item
517   - {The User knows the email address attached to their account for our application.}
  509 + {The user knows the email address attached to their account for our application.}
518 510 \item
519   - {The User can log into their email account.}
  511 + {The user can log into their email account.}
520 512 \end{itemize}
521 513  
522 514 \item[Post-conditions]
523 515  
524 516  
... ... @@ -524,12 +516,12 @@
524 516 \begin{itemize}
525 517 \itemsep1pt\parskip0pt\parsep0pt
526 518 \item
527   - {The User's password is changed.}
  519 + {The user's password is changed.}
528 520 \item
529   - {The User can log in with the new password.}
  521 + {The user can log in with the new password.}
530 522 \end{itemize}
531 523  
532   -\item[Trigger]{The User wants to log into the site but does not know their password.}
  524 +\item[Trigger]{The user wants to log into the site but does not know their password.}
533 525 \item[Workflow]
534 526  
535 527 \begin{enumerate}
... ... @@ -539,7 +531,7 @@
539 531 \item
540 532 {The frontend shall render the password reset page from the template requestpasswordreset.html.}
541 533 \item
542   - {The User shall type in their email address for their account and click the "Reset" button.}
  534 + {The user shall type in their email address for their account and click the "Reset" button.}
543 535 \item
544 536 {The frontend shall send a POST request to /api/request\_password\_reset/ from RequestResetController.js.}
545 537 \item
546 538  
547 539  
... ... @@ -549,14 +541,13 @@
549 541 {The backend shal send an email to the User with a link to the password reset page in models.py in function
550 542 request\_password\_reset.}
551 543 \item
552   - {The User will navigate to their email account, open the email, and click the link.}
  544 + {The user will navigate to their email account, open the email, and click the link.}
553 545 \item
554 546 {The frontend shall render the password reset page from the template resetpassword.html.}
555 547 \item
556   - {The User shall type in their new password and re-type it to confirm it.}
  548 + {The user shall type in their new password and re-type it to confirm it.}
557 549 \item
558   - {The frontend shall check if the new password is long enough and if the confirmed password is the same as
559   - the new password in ResetPasswordController.js.}
  550 + {The frontend shall check if the new password is long enough and if the confirmed password is the same as the new password in ResetPasswordController.js.}
560 551 \item
561 552 {The frontend shall send a POST request to /api/reset\_password from ResetPasswordController.js.}
562 553 \item
... ... @@ -564,7 +555,7 @@
564 555 \item
565 556 {The frontend shall redirect the User to the login page. }
566 557 \item
567   - {The User shall use their new password to login to the application.}
  558 + {The user shall use their new password to login to the application.}
568 559 \end{enumerate}
569 560 \end{description}
570 561 \newpage
571 562  
572 563  
... ... @@ -574,16 +565,12 @@
574 565 \subsection{[A7] Limit Student Access to Courses}
575 566  
576 567 \begin{description}
577   -\item[Description]{The instructor shall be able to limit access to the
578   -courses that he is in charge of by whitelisting only those students that
579   -are actually in the class.}
  568 +\item[Description]{The instructor shall be able to limit access to the courses that they are in charge of by whitelisting only those students that are actually in the class.}
580 569  
581   -\item[Desired Outcome]{The class will have limited access and only those
582   -users who are whitelisted may enroll in the class.}
  570 +\item[Desired Outcome]{The class will have limited access and only those Users who are whitelisted may enroll in the class.}
583 571 \\
584   -\item[User Goals]{The instructor wants to limit access to his class so only
585   -the students who are actually in his class participate, and nobody
586   -else.}
  572 +\item[User Goals]{The instructor wants to limit access to their class so only
  573 +the students who are actually in their class participate, and nobody else.}
587 574  
588 575 \item[Primary Actor]{Instructor}
589 576  
... ... @@ -599,7 +586,7 @@
599 586 \begin{itemize}
600 587 \itemsep1pt\parskip0pt\parsep0pt
601 588 \item
602   - {User has valid instructor's account}
  589 + {The user has valid instructor's account}
603 590 \end{itemize}
604 591  
605 592 \item[Post-conditions]
606 593  
... ... @@ -611,15 +598,15 @@
611 598 \end{itemize}
612 599  
613 600 \item[Trigger]{The course instructor wants to limit the students who
614   -can add his class on our application.}
  601 +can add their class on our application.}
615 602  
616 603 \item[Workflow]
617 604  
618 605 \begin{enumerate}
619 606 \itemsep1pt\parskip0pt\parsep0pt
620 607 \item
621   - {The instructor emails the administrators from his UCSD email address
622   - and requests to limit access to his course. He provides a list of
  608 + {The instructor emails the administrators from their UCSD email address
  609 + and requests to limit access to their course. They provides a list of
623 610 emails of the students that are to be whitelisted.}
624 611 \item
625 612 {The administrators visit a custom admin page, select the course, and
... ... @@ -630,7 +617,7 @@
630 617 attaching it to the section taught by the instructor.}
631 618 \item
632 619 {The backend shall add any existing users whose email addresses appear
633   - in the whitelist to the class. }
  620 + in the whitelist to the class.}
634 621 \end{enumerate}
635 622 \end{description}
636 623 \newpage
637 624  
638 625  
... ... @@ -638,14 +625,14 @@
638 625 \subsection{[A8] User Logout}
639 626  
640 627 \begin{description}
641   -\item[Description]{The User shall be able to log out of his/her account on
  628 +\item[Description]{The user shall be able to log out of their account on
642 629 the site.}
643 630  
644   -\item[Desired Outcome]{The User's information and data will no longer be
  631 +\item[Desired Outcome]{The user's information and data will no longer be
645 632 accessible after logging out. }
646 633 \\
647   -\item[User Goals]{The User is done with his/her session of using the
648   -website, and wants to make sure others cannot access the data in his/her
  634 +\item[User Goals]{The user is done with his/her session of using the
  635 +website, and wants to make sure others cannot access the data in their
649 636 account.}
650 637  
651 638 \item[Primary Actor]{User (student)}
652 639  
653 640  
... ... @@ -660,16 +647,16 @@
660 647  
661 648 \item[Post-conditions]{}{The user's data can no longer be accessed.}
662 649  
663   -\item[Trigger]{The User no longer wants to be logged into the application.}
  650 +\item[Trigger]{The user no longer wants to be logged into the application.}
664 651  
665 652 \item[Workflow]
666 653  
667 654 \begin{enumerate}
668 655 \itemsep1pt\parskip0pt\parsep0pt
669 656 \item
670   - {The User clicks the 'Logout' button in the upper right hand corner.}
  657 + {The user clicks the 'Logout' button in the upper right hand corner.}
671 658 \item
672   - {The backend shall log the User out using the Django logout feature.}
  659 + {The backend shall log the user out using the Django logout feature.}
673 660 \item
674 661 {The frontend renders the application login page using login.html.}
675 662 \end{enumerate}
676 663  
677 664  
... ... @@ -683,12 +670,12 @@
683 670 \subsection{[A9] Contact Admin}
684 671  
685 672 \begin{description}
686   -\item[Description]{The User shall be able to contact the admin.}
  673 +\item[Description]{The user shall be able to contact the admin.}
687 674  
688   -\item[Desired Outcome]{The User shall send a message to the admin; the
  675 +\item[Desired Outcome]{The user shall send a message to the admin; the
689 676 admin shall receive the message.}
690 677  
691   -{User Goals:}{The User sends a message to the admin.}
  678 +{User Goals:}{The user sends a message to the admin.}
692 679  
693 680 \item[Primary Actor]{User}
694 681  
... ... @@ -702,7 +689,7 @@
702 689  
703 690 \item[Post-conditions]{The admin receives the user's message.}
704 691  
705   -\item[Trigger]{The User wants to contact the adiminstators of the site with
  692 +\item[Trigger]{The user wants to contact the adiminstators of the site with
706 693 bug reports, questions, or praise. }
707 694  
708 695 \item[Workflow]
709 696  
710 697  
711 698  
... ... @@ -710,17 +697,17 @@
710 697 \begin{enumerate}
711 698 \itemsep1pt\parskip0pt\parsep0pt
712 699 \item
713   - {The User shall click the '?' button in the right corner of the navigation bar.}
  700 + {The user shall click the '?' button in the right corner of the navigation bar.}
714 701 \item
715 702 {The frontend shall render the page using the help.html template.}
716 703 \item
717   - {The User shall scroll to the bottom of the page.}
  704 + {The user shall scroll to the bottom of the page.}
718 705 \item
719   - {The User shall click the text reading "Send Us an Email!"}
  706 + {The user shall click the text reading "Send Us an Email!"}
720 707 \item
721 708 {The frontend shall open Microsoft Outlook or a similar application using the HelpController.js.}
722 709 \item
723   - {The User shall see our email address in the recipients text box.}
  710 + {The user shall see our email address in the recipients text box.}
724 711 \end{enumerate}
725 712 \end{description}
726 713 \newpage
727 714  
728 715  
... ... @@ -730,13 +717,13 @@
730 717 \subsection{[F1] Push Flashcard}
731 718  
732 719 \begin{description}
733   -\item[Description]{The User shall be able to create a flashcard with their
  720 +\item[Description]{The user shall be able to create a flashcard with their
734 721 input. }
735 722  
736   -\item[Desired Outcome]{The User shall have the flashcard added to their own
  723 +\item[Desired Outcome]{The user shall have the flashcard added to their own
737 724 deck and the Live Feed. }
738 725 \\
739   -\item[User Goals]{The User will see their flashcard in their deck and the
  726 +\item[User Goals]{The user will see their flashcard in their deck and the
740 727 flashcard will be shared with others. }
741 728  
742 729 \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User
743 730  
744 731  
... ... @@ -747,11 +734,11 @@
747 734 \begin{itemize}
748 735 \itemsep1pt\parskip0pt\parsep0pt
749 736 \item
750   - {The User has an account.}
  737 + {The user has an account.}
751 738 \item
752   - {The User has added at least one class.}
  739 + {The user has added at least one class.}
753 740 \item
754   - {The User has navigated to the live feed for a class.}
  741 + {The user has navigated to the live feed for a class.}
755 742 \end{itemize}
756 743  
757 744 \item[Post-conditions]
758 745  
759 746  
760 747  
761 748  
762 749  
763 750  
... ... @@ -759,31 +746,31 @@
759 746 \begin{itemize}
760 747 \itemsep1pt\parskip0pt\parsep0pt
761 748 \item
762   - {The User has flashcard added to their deck.}
  749 + {The user has flashcard added to their deck.}
763 750 \item
764 751 {The Flashcard is shown in the Live Feed.}
765 752 \item
766 753 {Other users can add this flashcard to their decks.}
767 754 \end{itemize}
768 755  
769   -\item[Trigger]{The User wants to make a flashcard to study.}
  756 +\item[Trigger]{The user wants to make a flashcard to study.}
770 757  
771 758 \item[Workflow]
772 759  
773 760 \begin{enumerate}
774 761 \itemsep1pt\parskip0pt\parsep0pt
775 762 \item
776   - {The User is at the live feed for the class from feed.html.}
  763 + {The user is at the live feed for the class from feed.html.}
777 764 \item
778   - {The User shall click on the '+' button at the bottom right of the screen.}
  765 + {The user shall click on the '+' button at the bottom right of the screen.}
779 766 \item
780 767 {The frontend shall present a modal for inputting the flashcard text to the User.}
781 768 \item
782   - {The User shall type in the content of their flashcard.}
  769 + {The user shall type in the content of their flashcard.}
783 770 \item
784   - {The User shall highlight keywords in the flashcard text.}
  771 + {The user shall highlight keywords in the flashcard text.}
785 772 \item
786   - {The User shall click on the `Contribute' button.}
  773 + {The user shall click on the `Contribute' button.}
787 774 \item {The frontend shall generate a POST request consisting of the flashcard text,
788 775 blanks, and material date, in JSON form in FeedController.js and send it to /api/flashcards/.}
789 776 \item
... ... @@ -1156,7 +1143,7 @@
1156 1143 {The backend shall save the new mask in models.py.}
1157 1144 \end{enumerate}
1158 1145  
1159   -{Alternative Workflows:}
  1146 +\item [Alternate Workflow]
1160 1147  
1161 1148 \begin{enumerate}
1162 1149 \itemsep1pt\parskip0pt\parsep0pt
1163 1150  
... ... @@ -1367,97 +1354,7 @@
1367 1354  
1368 1355 {}
1369 1356 \section{Decks}
1370   -\subsection{[-D2-] Making a deck - Removed}
1371 1357  
1372   -\begin{description}
1373   -\item[Description]{Upon selecting the right course, the student has the
1374   -power to make a deck by either selecting existing flashcard or adding a
1375   -new flashcard.}
1376   -
1377   -\item[Desired Outcome]{The user can keep track of cards that s/he wants.}
1378   -\\
1379   -\item[User Goals]{The user has a personal deck ready for review later.}
1380   -
1381   -\item[Primary Actor]{User (student)}
1382   -
1383   -\item[Dependency Use Cases]{Add a class {[}A3{]}, Add Flashcards to Deck
1384   -{[}F1{]}, Make a Flashcard {[}F3{]}}
1385   -\\
1386   -\item[Priority Level]{``Must''}
1387   -
1388   -\item[Status]{In Progress}
1389   -
1390   -\item[Pre-conditions]
1391   -
1392   -\begin{itemize}
1393   -\itemsep1pt\parskip0pt\parsep0pt
1394   -\item
1395   - {The user has an account with the application. }
1396   -\item
1397   - {The user has been added to the desired class.}
1398   -\end{itemize}
1399   -
1400   -\item[Post-conditions]
1401   -
1402   -\begin{itemize}
1403   -\itemsep1pt\parskip0pt\parsep0pt
1404   -\item
1405   - {Desired cards are added to user's deck to the specific class }
1406   -\item
1407   - {User's deck is added to the database.}
1408   -\end{itemize}
1409   -
1410   -\item[Trigger]{The User wants to have a collection of cards.}
1411   -
1412   -\item[Workflow]
1413   -
1414   -\begin{enumerate}
1415   -\itemsep1pt\parskip0pt\parsep0pt
1416   -\item
1417   - {User is at their dashboard.}
1418   -\item
1419   - {User selects the class of interest that they had no activity in yet.}
1420   -\item
1421   - {Client displays the Live Feed for the class.}
1422   -\item
1423   - {User presses ``Pull Flashcard'' button on a Flashcard that they want
1424   - in their Deck.}
1425   -\item
1426   - {The server creates a Deck for the User for the Class of interest.}
1427   -\item
1428   - {The server adds the Flashcard to the User's Deck.}
1429   -\item
1430   - {The Client makes the Flashcard disappear from the Live Feed.}
1431   -\item
1432   - {The Client displays the Flashcard in the User's Deck in the sidebar.}
1433   -\end{enumerate}
1434   -
1435   -{Alternate Workflow:}
1436   -
1437   -\begin{enumerate}
1438   -\itemsep1pt\parskip0pt\parsep0pt
1439   -\item
1440   - {User is at their dashboard.}
1441   -\item
1442   - {User selects the class of interest that they had no activity in yet.}
1443   -\item
1444   - {Client displays the Live Feed for the class.}
1445   -\item
1446   - {The User adds a Flashcard into the Class.}
1447   -\item
1448   - {The server creates a Deck for the User for the Class of interest.}
1449   -\item
1450   - {The server adds the new Flashcard to the User's Deck.}
1451   -\item
1452   - {The Client makes the Flashcard disappear from the Live Feed.}
1453   -\item
1454   - {The Client displays the Flashcard in the User's Deck in the sidebar.}
1455   -\end{enumerate}
1456   -\end{description}
1457   -\newpage
1458   -
1459   -{}
1460   -
1461 1358 \subsection{[D1] Remove a card from a deck}
1462 1359  
1463 1360 \begin{description}
... ... @@ -1525,7 +1422,7 @@
1525 1422  
1526 1423 {}
1527 1424  
1528   -{Alternate Workflow:}
  1425 +\item [Alternate Workflow]
1529 1426  
1530 1427 \begin{enumerate}
1531 1428 \itemsep1pt\parskip0pt\parsep0pt
1532 1429  
1533 1430  
... ... @@ -1551,99 +1448,11 @@
1551 1448 \end{enumerate}
1552 1449 \end{description}
1553 1450  
1554   -\subsection{[-D2-] Shuffling deck - Removed}
1555 1451  
1556   -\begin{description}
1557   -\item[Description]{User is able to shuffle his/her deck as a way to study
1558   -the flashcards}
1559   -
1560   -\item[Desired Outcome]{When taking a quiz, the user will notice that
1561   -flashcards appear in random order}
1562   -
1563   -{User Goals:}{Improve quiz taking skills and knowledge consumption}
1564   -
1565   -\item[Primary Actor]{User (student)}
1566   -
1567   -\item[Dependency Use Cases]{Deck has been created {[}D2{]}}
1568   -\\
1569   -\item[Priority Level]{}{''Won't''}
1570   -
1571   -\item[Status]{Implemented }
1572   -
1573   -\item[Pre-conditions]
1574   -
1575   -\begin{itemize}
1576   -\itemsep1pt\parskip0pt\parsep0pt
1577   -\item
1578   - {User must have registered for course }
1579   -\end{itemize}
1580   -
1581   -\begin{itemize}
1582   -\itemsep1pt\parskip0pt\parsep0pt
1583   -\item
1584   - {User must have added cards to deck.}
1585   -\end{itemize}
1586   -
1587   -\item[Post-conditions]{}
1588   -
1589   -\begin{itemize}
1590   -\itemsep1pt\parskip0pt\parsep0pt
1591   -\item
1592   - {User takes a quiz and notice the deck has been shuffled.}
1593   -\end{itemize}
1594   -
1595   -\item[Trigger]{The User wants to review their cards in random order.}
1596   -
1597   -\item[Workflow]
1598   -
1599   -\begin{enumerate}
1600   -\itemsep1pt\parskip0pt\parsep0pt
1601   -\item
1602   - {User is on the homepage.}
1603   -\item
1604   - {User selects the ``Study'' button for the Class they want to view or
1605   - shuffle cards for.}
1606   -\item
1607   - {The Client displays their Deck for the Class of interest.}
1608   -\item
1609   - {User clicks on ``shuffle deck'' button to shuffle the deck,
1610   - randomizing the order in which it will be displayed.}
1611   -\item
1612   - {The Client displays a change in card ordering.}
1613   -\item
1614   - {System reorders cards' study order.}
1615   -\end{enumerate}
1616   -
1617   -{Alternate Workflow: }
1618   -
1619   -\begin{enumerate}
1620   -\itemsep1pt\parskip0pt\parsep0pt
1621   -\item
1622   - {User is on the homepage.}
1623   -\item
1624   - {User selects Class of interest.}
1625   -\item
1626   - {The Client displays the Live Feed for the Class.}
1627   -\item
1628   - {User clicks on ``shuffle deck'' button to shuffle the deck,
1629   - randomizing the order in which it will be displayed.}
1630   -\item
1631   - {The Client displays a change in card ordering.}
1632   -\item
1633   - {System reorders cards' study order.}
1634   -\end{enumerate}
1635   -\end{description}
1636   -{}
1637   -
1638   -\newpage
1639   -
1640   -{}
1641   -
1642 1452 \subsection{[D2] Viewing cards in deck by pull time}
1643 1453  
1644 1454 \begin{description}
1645   -\item[Description]{The user is able to organize the deck by Flashcards'
1646   -pull timestamps.}
  1455 +\item[Description]{The user is able to organize the deck by time stamp.}
1647 1456  
1648 1457 \item[Desired Outcome]{The user views the deck in time ascending/descending
1649 1458 order.}
1650 1459  
1651 1460  
1652 1461  
1653 1462  
1654 1463  
... ... @@ -1652,24 +1461,25 @@
1652 1461  
1653 1462 \item[Primary Actor]{User (student)}
1654 1463  
1655   -\item[Dependency Use Cases]{View by pull timestamp.}
  1464 +\item[Dependency Use Cases]{[A1] User Registration, [A2] User Login, [F3] Pull Flashcard,
  1465 +[D1] Create Deck}
1656 1466 \\
1657 1467 \item[Priority Level]{``Must''}
1658 1468  
1659   -\item[Status]{In Progress}
  1469 +\item[Status]{Implemented}
1660 1470  
1661 1471 \item[Pre-conditions]
1662 1472  
1663 1473 \begin{itemize}
1664 1474 \itemsep1pt\parskip0pt\parsep0pt
1665 1475 \item
1666   - {User has an account with the application.}
  1476 + {The user has an account with the application.}
1667 1477 \item
1668   - {User is logged in.}
  1478 + {The user is logged in.}
1669 1479 \item
1670   - {User has a deck with at least 1 flashcard.}
  1480 + {The user has a deck with at least 1 flashcard.}
1671 1481 \item
1672   - {User is at the deck view for a class.}
  1482 + {The user is at the live feed for a class.}
1673 1483 \end{itemize}
1674 1484  
1675 1485 \item[Post-conditions]
1676 1486  
1677 1487  
1678 1488  
1679 1489  
... ... @@ -1680,46 +1490,24 @@
1680 1490 {Cards in the deck are in time order.}
1681 1491 \end{itemize}
1682 1492  
1683   -\item[Trigger]{The User wants to view their cards in a meaningful order.}
  1493 +\item[Trigger]{The user wants to view their cards in a meaningful order.}
1684 1494  
1685 1495 \item[Workflow]
1686 1496  
1687 1497 \begin{enumerate}
1688 1498 \itemsep1pt\parskip0pt\parsep0pt
  1499 +\item {The user shall select the deck view from the navbar.}
1689 1500 \item
1690   - {The Client shows the user the Deck View.}
1691   -\item
1692   - {The User shall select the option to sort the deck by ascending time.}
1693   -\item
1694   - {The Client shall submit a form POST request to the server at
1695   - /api/deck/ about the order}
1696   -\item
1697   - {The Server shall return the ordered view of the deck.}
1698   -\item
1699   - {The Client displays the cards in the ascending view of the pull
1700   - time.}
  1501 + {The frontend renders the view of the deck from the template deck.html.}
1701 1502 \end{enumerate}
1702 1503  
  1504 +\item[Alternative Workflow]
  1505 +\begin {enumerate}
  1506 +\item {The user shall select the list view from the navbar.}
  1507 +\item {The frontend renders the view of the deck from the template cardlist.html.}
  1508 +\end {enumerate}
1703 1509 {}
1704 1510  
1705   -{Alternate WorkFlow:}
1706   -
1707   -\begin{enumerate}
1708   -\itemsep1pt\parskip0pt\parsep0pt
1709   -\item
1710   - {The Client shows the user the Deck View.}
1711   -\item
1712   - {The User shall select the option to sort the deck by descending
1713   - time.}
1714   -\item
1715   - {The Client shall submit a form POST request to the server at
1716   - /api/deck/ about the order}
1717   -\item
1718   - {The Server shall return the descending view of the deck.}
1719   -\item
1720   - {The Client displays the cards in the descending view of the pull
1721   - time.}
1722   -\end{enumerate}
1723 1511 \end{description}
1724 1512 \newpage
1725 1513  
TestCases.tex View file @ 039cefb
... ... @@ -74,7 +74,7 @@
74 74 \subsection{[A1] User Registration}
75 75 \begin{description}[style=multiline,leftmargin=3cm]
76 76  
77   -\item[Description:]{This test case outlines the presentation layer step
  77 +\item[Description:]{This test case outlines the presentation layering step
78 78 process of a user registering for an account with our application.}
79 79  
80 80 \item[Desired Outcome:]{An account will be created for the User from the
... ... @@ -241,7 +241,7 @@
241 241  
242 242 \subsection{[A3] Add a Class}
243 243 \begin{description}
244   -\item[Description:]{This test case outlines the presentation layer step
  244 +\item[Description:]{This test case outlines the presentation layering step
245 245 process of a user adding a class.}
246 246  
247 247 \item[Desired Outcome:]{The class shall be linked with the student's account
... ... @@ -363,7 +363,7 @@
363 363 \subsection{[A4] Drop a Class}
364 364  
365 365 \begin{description}
366   -\item[Description:]{This test case outlines the presentation layer step process of a user dropping a class.}
  366 +\item[Description:]{This test case outlines the presentation layering step process of a user dropping a class.}
367 367  
368 368 \item[Desired Outcome:]{The User has dropped the class and no longer needs
369 369 access to the flashcards for the dropped class. They can no longer
... ... @@ -421,8 +421,8 @@
421 421 \subsection{[A5] Password Change}
422 422  
423 423 \begin{description}
424   -\item[Description:]{The User shall be able to change the password for their
425   -account in the account settings. This requires that they are logged in.}
  424 +\item[Description:]{This test case outlines the presentation layering step process
  425 +of a user changing their password.}
426 426  
427 427 \item[Desired Outcome:]{The User's password shall be changed and the user
428 428 shall be able to log in with the new password in the future.}
... ... @@ -495,7 +495,7 @@
495 495 \item[Expected Result:] {The System shall display a toast ``Your old password is not correct''.}
496 496 \\
497 497  
498   -\item[Workflow:]
  498 +\item[Alternate Workflow B:]
499 499 \begin{enumerate}
500 500 \itemsep1pt\parskip0pt\parsep0pt
501 501 \item
... ... @@ -518,7 +518,7 @@
518 518 \subsection{[A6] Password Reset}
519 519  
520 520 \begin{description}
521   -\item[Description:]{This test case outlines the presentation step layering process of
  521 +\item[Description:]{This test case outlines the presentation layering step process of
522 522 a user requesting a password reset without logging in.}
523 523  
524 524 \item[Desired Outcome:]{The User's password shall be changed to one that
525 525  
... ... @@ -591,11 +591,12 @@
591 591  
592 592 \item[Alternate Workflow:]
593 593 \begin{enumerate}
594   -\setcounter{enumi}{4}
  594 +\setcounter{enumi}{2}
595 595 \itemsep1pt\parskip0pt\parsep0pt
596 596 \item
597   - {If no such account exists, the System shall display an error message
598   -``Enter a valid email!'' to UserX.}
  597 + {UserX shall submit an invalid email \mbox{``NotUserX@flashy.cards''}.}
  598 +\item
  599 + {The System shall display an error message ``Enter a valid email!'' to UserX.}
599 600 \end{enumerate}
600 601  
601 602 \item[Expected Result:] {UserX's password will not be reset.}
... ... @@ -607,7 +608,8 @@
607 608 \subsection{[A7] Student Prevented From Accessing A Restricted Course}
608 609  
609 610 \begin{description}
610   -\item[Description:]{The User shall not be able to access a restricted course.}
  611 +\item[Description:]{This test case outlines the presentation layering step process of
  612 +an instructor limiting access to a class.}
611 613  
612 614 \item[Desired Outcome:]{The class will have limited access and only those
613 615 users who are whitelisted may enroll in the class.}
... ... @@ -725,7 +727,8 @@
725 727 \subsection{[A9] Contact Admin}
726 728  
727 729 \begin{description}
728   -\item[Description]{The User shall be able to contact the admin.}
  730 +\item[Description]{This test case outlines the presentation layering step
  731 +process of a user contacting site admins.}
729 732  
730 733 \item[Desired Outcome]{The User shall send a message to the admin; the
731 734 admin shall receive the message.}
... ... @@ -820,7 +823,7 @@
820 823 \subsection{[F1] Push Flashcard}
821 824  
822 825 \begin{description}
823   -\item[Description:]{This test case outlines the presentation layer step
  826 +\item[Description:]{This test case outlines the presentation layering step
824 827 process of a User contributing a flashcard to the live feed and to their deck.}
825 828  
826 829 \item[Desired Outcome:]{The User shall have the flashcard added to their own deck
... ... @@ -1248,7 +1251,7 @@
1248 1251 \subsection{[F5] Filter Flashcards}
1249 1252  
1250 1253 \begin{description}
1251   -\item[Description:]{This test case outlines the presentation layer process
  1254 +\item[Description:]{This test case outlines the presentation layering process
1252 1255 of a user filtering existing flashcards to view only a specified subset.}
1253 1256  
1254 1257 \item[Desired Outcome:]{The User shall see flashcards based on the filter
... ... @@ -1318,7 +1321,7 @@
1318 1321 \subsection{[F6] Blank Out Words in Flashcard}
1319 1322  
1320 1323 \begin{description}
1321   -\item[Description:]{This test case outlines the presentation layer process
  1324 +\item[Description:]{This test case outlines the presentation layering process
1322 1325 of the User to create keywords in a card they are pushing.}
1323 1326  
1324 1327 \item[Desired Outcome:]{The blanked out words (visually bolded) in the
... ... @@ -1386,7 +1389,7 @@
1386 1389 \subsection{[F7] Fix Flashcard}
1387 1390  
1388 1391 \begin{description}
1389   -\item[Description:]{This Test Case outlines the presentation layer process
  1392 +\item[Description:]{This Test Case outlines the presentation layering process
1390 1393 for the User to alter (``fix'') a flashcard they made originally and not have
1391 1394 to make a new copy of it. It is only a ``fix'' if no other users have the
1392 1395 flashcard in their Decks AND the User is the author.}
... ... @@ -1473,7 +1476,7 @@
1473 1476 \subsection{[F8] Hide cards from feed}
1474 1477  
1475 1478 \begin{description}
1476   -\item[Description:]{This test case outlines the presentation layer process
  1479 +\item[Description:]{This test case outlines the presentation layering process
1477 1480 for the User shall be able to hide cards from their own view, on
1478 1481 the Feed and Deck.}
1479 1482  
... ... @@ -1560,7 +1563,7 @@
1560 1563  
1561 1564 \begin{description}
1562 1565 \item[Description:]{This test case outlines the presentation
1563   -layer process process of a user viewing a class Feed.}
  1566 +layering process process of a user viewing a class Feed.}
1564 1567  
1565 1568 \item[Desired Outcome:]{The System shall show the user the
1566 1569 Feed for their class.}
1567 1570  
1568 1571  
... ... @@ -1617,13 +1620,15 @@
1617 1620 \subsection{[D1] Remove a Card from Deck}
1618 1621  
1619 1622 \begin{description}
1620   -\item[Description:]{This test case outlines the presentation layering step process
1621   -of a user removing a flashcard from their deck.}
  1623 +\item[Description:]{This test case outlines the presentation layering
  1624 +step process of a user removing a flashcard from their deck.}
1622 1625  
1623   -\item[Desired Outcome:]{The deck does not display the removed card.}
  1626 +\item[Desired Outcome:]{The selected card will not appear in
  1627 +the deck.}
1624 1628 \\
1625 1629  
1626   -\item[User Goals:]{The User wants to only review cards that the User wants to review.}
  1630 +\item[User Goals:]{The User wants to remove an undesirable card
  1631 +from their deck.}
1627 1632  
1628 1633 \item[Dependency Use Cases:]{[A3] Add a class, [F1] Push Flashcard, [F3] Pull Flashcard}
1629 1634 \\
1630 1635  
1631 1636  
1632 1637  
... ... @@ -1638,18 +1643,20 @@
1638 1643 \item
1639 1644 {User is logged in as UserX.}
1640 1645 \item
1641   - {UserX has enrolled in the class TEST 101.}
  1646 + {UserX has added the class TEST 101.}
1642 1647 \item
1643   - {UserX has added cards from the feed into their deck.}
  1648 + {UserX has created a flashcard with the text
  1649 +``This is a bad card''.}
1644 1650 \item
1645   - {UserX is at the deck/live feed screen for the class TEST 101.}
  1651 + {UserX has created a flashcard with the text
  1652 +``This is a bad card too''.}
1646 1653 \end{itemize}
1647 1654  
1648 1655 \item[Postconditions:]
1649 1656 \begin{itemize}
1650 1657 \itemsep1pt\parskip0pt\parsep0pt
1651 1658 \item
1652   - {Desired card are hidden from the User.}
  1659 + {Selected card is hidden from the User.}
1653 1660 \end{itemize}
1654 1661  
1655 1662 \item[Trigger:]{UserX wants a card to be removed from their deck.}
1656 1663  
1657 1664  
1658 1665  
1659 1666  
1660 1667  
1661 1668  
1662 1669  
1663 1670  
1664 1671  
1665 1672  
... ... @@ -1658,40 +1665,42 @@
1658 1665 \begin{enumerate}
1659 1666 \itemsep1pt\parskip0pt\parsep0pt
1660 1667 \item
1661   - {UserX is at the Deck screen for the class.}
  1668 + {UserX is at the deck for the class TEST 101.}
1662 1669 \item
1663   - {UserX shall hover over the card they want to delete and click
1664   - the trash icon (hereafter, the ``Delete'' button) in the lower right
1665   - corner of the card.}
  1670 + {UserX shall hover the cursor over the card
  1671 +with the text ``This is a bad card''.}
1666 1672 \item
1667   - {UserX shall select the appropriate class.}
  1673 + {UserX shall click the large green minus button.}
1668 1674 \item
1669   - {The System removes the flashcard from UserX's Deck.}
  1675 + {The System shall remove the flashcard from UserX's Deck.}
1670 1676 \item
1671   - {The System updates the flashcard's position in the Live Feed of class TEST 101.}
1672   -\item
1673   - {The System updates UserX's Deck.}
  1677 + {The System shall update UserX's Deck.}
1674 1678 \end{enumerate}
1675 1679  
1676   -\item[Expected Result:] {The flashcard is removed from UserX's deck.}
  1680 +\item[Expected Result:] {The flashcard with the
  1681 +text ``This is a bad card'' will no longer have a checkmark
  1682 +on top right of the flashcard. After UserX refresh the page,
  1683 +the flashcard will be removed from the deck.}
1677 1684  
1678 1685 \item[Alternate Workflow:]
1679 1686 \begin{enumerate}
1680 1687 \itemsep1pt\parskip0pt\parsep0pt
1681 1688 \item
1682   - {UserX is at the Live Feed screen for the class.}
  1689 + {UserX is at the live feed screen for the class.}
1683 1690 \item
1684   - {UserX shall hover over the card they want to delete and click
1685   - the ``Delete'' button in the lower right corner of the card.}
  1691 + {UserX shall hover the cursor over the card
  1692 +with the text ``This is a bad card too''.}
1686 1693 \item
1687   - {The System removes the flashcard from the User's Deck.}
  1694 + {UserX shall click the large green minus button.}
1688 1695 \item
1689   - {The System updates the flashcard's position in the Live Feed.}
1690   -\item
1691   - {The System updates the User's Deck.}
  1696 + {The System shall update UserX's Deck, and the flashcard's
  1697 +position in the live feed.}
1692 1698 \end{enumerate}
1693 1699  
1694   -\item[Expected Result:] {The flashcard is removed from UserX's deck.}
  1700 +\item[Expected Result:]
  1701 +{The flashcard with the text ``This is a bad card too'' will
  1702 +no longer have a checkmark on the top right of the flashcard.
  1703 +The flashcard will no longer be in UserX's deck.}
1695 1704  
1696 1705 \end{description}
1697 1706 \newpage
... ... @@ -1707,7 +1716,8 @@
1707 1716 \item[Desired Outcome:]{The User shall be able to view all the cards in their deck.}
1708 1717 \\
1709 1718  
1710   -\item[User Goals:]{To see all pulled cards for easier editing purposes.}
  1719 +\item[User Goals:]
  1720 +{To view all pulled and created cards in their deck.}
1711 1721  
1712 1722 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login,
1713 1723 [A3] Add a Class, [F1] Push Flashcard, [F3] Pull Flashcard}
1714 1724  
1715 1725  
1716 1726  
1717 1727  
1718 1728  
1719 1729  
1720 1730  
1721 1731  
... ... @@ -1720,56 +1730,42 @@
1720 1730 \begin{itemize}
1721 1731 \itemsep1pt\parskip0pt\parsep0pt
1722 1732 \item
1723   - {A browser session is logged in as UserX.}
  1733 + {User is logged in as UserX.}
1724 1734 \item
1725   - {Another browser session is logged in as UserY.}
  1735 + {UserX has created a flashcard with the text
  1736 +``I made this''.}
1726 1737 \item
1727   - {UserX and UserY are registered for class TEST 101.}
  1738 + {UserX has pulled a flashcard with the text
  1739 +``Someone else made this''.}
1728 1740 \item
1729   - {UserX and UserY are at the feed view for TEST 101.}
  1741 + {UserX has added the class TEST 101.}
  1742 +\item
  1743 + {UserX is at the live feed of TEST 101.}
1730 1744 \end{itemize}
1731 1745  
1732 1746 \item[Postconditions:]
1733 1747 \begin{itemize}
1734 1748 \itemsep1pt\parskip0pt\parsep0pt
1735 1749 \item
1736   - {Cards in the deck are in time order.}
  1750 + {None}
1737 1751 \end{itemize}
1738 1752  
1739   -\item[Trigger:]{User wants to view a more organized deck.}
  1753 +\item[Trigger:]{The User wants to view the result of their adding
  1754 +and pulling flashcards.}
1740 1755  
1741 1756 \item[Workflow:]
1742 1757 \begin{enumerate}
1743 1758 \itemsep1pt\parskip0pt\parsep0pt
  1759 +
1744 1760 \item
1745   - {UserX shall click the ``Compose'' button in the lower right.}
1746   -\item
1747   - {The System shall present a modal with a text box.}
1748   -\item
1749   - {UserX shall type in ``Card A'' and click ``Contribute''.}
1750   -\item
1751   - {The System shall create a new card and add it to the feed.}
1752   -\item
1753   - {UserX shall click the ``Compose'' button in the lower right.}
1754   -\item
1755   - {The System shall present a modal with a text box.}
1756   -\item
1757   - {UserX shall type in ``Card B'' and click ``Contribute''.}
1758   -\item
1759   - {The System shall create a new card and add it to the feed.}
1760   -\item
1761   - {Another User logged in as UserY shall view the feed for TEST 101.}
1762   -\item
1763   - {UserY shall click ``Card B'' to pull the card and add it to their deck.}
1764   -\item
1765   - {UserY shall click ``Card A'' to pull the card and add it to their deck.}
1766   -\item
1767   - {UserY shall go to their Deck View.}
  1761 + {UserX shall click on 'Deck', the three vertical cards
  1762 +icon on the top left of the screen located on the left of the
  1763 +navigation bar.}
1768 1764 \end{enumerate}
1769 1765  
1770   -\item[Expected Results]{For UserX the cards are listed in the
1771   - order ``Card B'', ``Card A'' and for UserY they are in the
1772   -deck view as ``Card A'', ``Card B''.}
  1766 +\item[Expected Results]
  1767 +{UserX shall be at the deck for the class TEST 101 and see the
  1768 +cards ``I made this'' and ``Someone else made this''.}
1773 1769  
1774 1770 \end{description}
1775 1771 \newpage