Commit 2d7d97a9598be7b26d1b01f77d155f7b822dfa44

Authored by Rohan Rangray
Exists in master

Merged conflicts

Showing 17 changed files Side-by-side Diff

DesignUseCases.tex View file @ 2d7d97a
... ... @@ -698,7 +698,7 @@
698 698  
699 699 \item[Status]{Implemented}
700 700  
701   -\item[Pre-conditions]{The User has an account registered and is logged in.}
  701 +\item[Pre-conditions]{None.}
702 702  
703 703 \item[Post-conditions]{The admin receives the user's message.}
704 704  
... ... @@ -710,7 +710,7 @@
710 710 \begin{enumerate}
711 711 \itemsep1pt\parskip0pt\parsep0pt
712 712 \item
713   - {The User shall click the '?' button in the right half of the navbar.}
  713 + {The User shall click the '?' button in the right corner of the navigation bar.}
714 714 \item
715 715 {The frontend shall render the page using the help.html template.}
716 716 \item
... ... @@ -1022,7 +1022,7 @@
1022 1022  
1023 1023 {}
1024 1024  
1025   -\subsection{[F5] Filter Flashcards}
  1025 +\subsection{[F5] Filter Flashcards }
1026 1026  
1027 1027 \begin{description}
1028 1028 \item[Description]{The user is able to filter for flashcards by material date and text.}
... ... @@ -1196,7 +1196,7 @@
1196 1196 \\
1197 1197 \item[Priority Level]{Must}
1198 1198  
1199   -\item[Status]{Not Implemented}
  1199 +\item[Status]{Implemented}
1200 1200  
1201 1201 \item[Pre-conditions]
1202 1202  
... ... @@ -1396,8 +1396,7 @@
1396 1396 {User's deck is added to the database.}
1397 1397 \end{itemize}
1398 1398  
1399   -\item[Trigger]{User has selected a card from the pool. User submitted a
1400   -new flashcard after ``Make New Flashcard''.}
  1399 +\item[Trigger]{The User wants to have a collection of cards.}
1401 1400  
1402 1401 \item[Workflow]
1403 1402  
... ... @@ -1484,7 +1483,7 @@
1484 1483 {Desired cards are hidden to the user.}
1485 1484 \end{itemize}
1486 1485  
1487   -\item[Trigger]{User has selected a card to be hidden.}
  1486 +\item[Trigger]{The User no longer wishes to be able to study a card. }
1488 1487  
1489 1488 \item[Workflow]
1490 1489  
... ... @@ -1571,7 +1570,7 @@
1571 1570 \begin{itemize}
1572 1571 \itemsep1pt\parskip0pt\parsep0pt
1573 1572 \item
1574   - {User must have added cards to deck}
  1573 + {User must have added cards to deck.}
1575 1574 \end{itemize}
1576 1575  
1577 1576 \item[Post-conditions]{}
1578 1577  
... ... @@ -1579,10 +1578,10 @@
1579 1578 \begin{itemize}
1580 1579 \itemsep1pt\parskip0pt\parsep0pt
1581 1580 \item
1582   - {User takes a quiz and notice the deck has been shuffled}
  1581 + {User takes a quiz and notice the deck has been shuffled.}
1583 1582 \end{itemize}
1584 1583  
1585   -\item[Trigger]{User has clicked on the button ``SHUFFLE DECK''}
  1584 +\item[Trigger]{The User wants to review their cards in random order.}
1586 1585  
1587 1586 \item[Workflow]
1588 1587  
... ... @@ -1670,7 +1669,7 @@
1670 1669 {Cards in the deck are in time order.}
1671 1670 \end{itemize}
1672 1671  
1673   -\item[Trigger]{User selects organize by add time.}
  1672 +\item[Trigger]{The User wants to view their cards in a meaningful order.}
1674 1673  
1675 1674 \item[Workflow]
1676 1675  
... ... @@ -1735,7 +1734,7 @@
1735 1734 \\
1736 1735 \item[Priority Level]{``Must''}
1737 1736  
1738   -\item[Status]{Not Implemented}
  1737 +\item[Status]{Implemented}
1739 1738  
1740 1739 \item[Pre-conditions]
1741 1740  
... ... @@ -1820,7 +1819,7 @@
1820 1819 \\
1821 1820 \item[Priority Level]{``Must''}
1822 1821  
1823   -\item[Status]{Not Implemented}
  1822 +\item[Status]{Implemented}
1824 1823  
1825 1824 \item[Pre-conditions]
1826 1825  
... ... @@ -1845,7 +1844,7 @@
1845 1844 {User shall be notified.}
1846 1845 \end{itemize}
1847 1846  
1848   -\item[Trigger]{The delay time for a card to be shown has passed}
  1847 +\item[Trigger]{The delay time for a card to be shown has passed.}
1849 1848  
1850 1849 \item[Workflow]
1851 1850  
... ... @@ -1907,7 +1906,7 @@
1907 1906 \end{itemize}
1908 1907  
1909 1908 \item[Trigger]{User indicates that they want to change their notification
1910   -settings}
  1909 +settings.}
1911 1910  
1912 1911 \item[Workflow]
1913 1912  
TestCases.tex View file @ 2d7d97a
... ... @@ -114,7 +114,8 @@
114 114 \item
115 115 {The System shall display a registration form.}
116 116 \item
117   - {UserX shall fill in the form with email UserX@flashy.cards and password ``mynameisuserx''.}
  117 + {UserX shall fill in the form with email \mbox{UserX@flashy.cards} and password
  118 +\mbox{``mynameisuserx''}.}
118 119 \item
119 120 {The System shall successfully receive the correct credentials and send an
120 121 email to the User's address with a link to validate the User's email address
... ... @@ -132,7 +133,7 @@
132 133 \item
133 134 {The System shall present UserX Login screen.}
134 135 \item
135   - {UserX shall once again login with ``UserX@flashy.cards'' and ``mynameisuserx''.}
  136 + {UserX shall once again login with \mbox{``UserX@flashy.cards''} and \mbox{``mynameisuserx''}.}
136 137 \end{enumerate}
137 138  
138 139 \item [Expected Result:]{UserX shall see Add Class page without a toast asking
... ... @@ -150,7 +151,7 @@
150 151 process of a user logging into the application.}
151 152  
152 153 \item[Desired Outcome:]{The User shall be able to provide their email address and
153   -password to access their courses and flash cards. The User shall gain
  154 +password to access their courses and flashcards. The User shall gain
154 155 access to the list of the courses they have added, and be able to review
155 156 the flashcards they have added to their decks.}
156 157  
... ... @@ -167,8 +168,8 @@
167 168 \item[Preconditions:]
168 169 \begin{itemize}
169 170 \item
170   - {The User has created an account before with email ``UserX@flashy.cards'' with
171   -password ``mynameisuserx''.}
  171 + {The User has created an account before with email \mbox{``UserX@flashy.cards''} with
  172 +password \mbox{``mynameisuserx''}.}
172 173 \end{itemize}
173 174  
174 175 \item[Postconditions:]
... ... @@ -184,7 +185,8 @@
184 185 \begin{enumerate}
185 186 \itemsep1pt\parskip0pt\parsep0pt
186 187 \item
187   - {UserX shall enter their email ``UserX@flashy.cards'' and password ``mynameisuserx''.}
  188 + {UserX shall enter their email \mbox{``UserX@flashy.cards''} and password
  189 +\mbox{``mynameisuserx''}.}
188 190 \item
189 191 {The System shall authenticate UserX's email and password and checks if UserX is active.}
190 192 \item
... ... @@ -196,8 +198,8 @@
196 198 \item [Alternate Workflow A:]
197 199 \begin{enumerate}
198 200 \item
199   - {UserX accidentally puts in the credentials ``UserX@flashy.cards'',
200   -``hahahaha'' and clicks the ``Login'' button.}
  201 + {UserX accidentally puts in the credentials \mbox{``UserX@flashy.cards''},
  202 +\mbox{``hahahaha''} and clicks the ``Login'' button.}
201 203 \item
202 204 {The System shows UserX the site login page with a message reading
203 205 ``Invalid username or password!!''.}
... ... @@ -209,8 +211,8 @@
209 211 \item [Alternate Workflow B:]
210 212 \begin{enumerate}
211 213 \item
212   - {UserX accidentally puts in the credentials ``NotUserX@flashy.cards'',
213   -``mynameisuserx'' and clicks the ``Login'' button.}
  214 + {UserX accidentally puts in the credentials \mbox{``NotUserX@flashy.cards''},
  215 +\mbox{``mynameisuserx''} and clicks the ``Login'' button.}
214 216 \item
215 217 {The System shows UserX the site login page with a message reading
216 218 ``Invalid username or password!!''.}
... ... @@ -222,8 +224,8 @@
222 224 \item [Alternate Workflow C:]
223 225 \begin{enumerate}
224 226 \item
225   - {UserX accidentally puts in the credentials ``theflash@flashy.cards'',
226   -``MyNameIsUserX'' and clicks the ``Login'' button.}
  227 + {UserX accidentally puts in the credentials \mbox{``theflash@flashy.cards''},
  228 +\mbox{``MyNameIsUserX''} and clicks the ``Login'' button.}
227 229 \item
228 230 {The System shows UserX the site login page with a message reading
229 231 ``Invalid username or password!!''.}
... ... @@ -430,10 +432,6 @@
430 432 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login}
431 433 \\
432 434  
433   -\item[Details:]{The user provides their current password and a new password
434   -in a form. If the current password is correct, the system updates their
435   -password to the requested new password.}
436   -
437 435 \item[Priority Level:]{``Must''}
438 436  
439 437 \item[Status:]{Implemented}
... ... @@ -444,7 +442,7 @@
444 442 \item
445 443 {The User is logged in as UserX.}
446 444 \item
447   - {The User knows the current password (``oldPassword'').}
  445 + {The User knows the current password \mbox{``mynameisuserx''}.}
448 446 \item
449 447 {The User is at the Settings page.}
450 448 \end{itemize}
451 449  
452 450  
... ... @@ -465,17 +463,53 @@
465 463 \begin{enumerate}
466 464 \itemsep1pt\parskip0pt\parsep0pt
467 465 \item
468   - {UserX shall enter their current password ``oldPassword'' and the desired
469   -new password ``newPassword'' (twice) in the ``Change Password'' form.}
  466 + {UserX shall enter their current password \mbox{``mynameisuserx''} and the desired
  467 +new password \mbox{``newPassword''} (twice) in the ``Change Password'' form.}
470 468 \item
471 469 {UserX shall click the ``Submit'' button.}
472 470 \item
473 471 {The System shall check UserX's current password.}
474 472 \item
475   - {The System shall update the UserX's current password ``oldPassword'' to the new password ``newPassword''.}
  473 + {The System shall update the UserX's current password \mbox{``mynameisuserx''}
  474 +to the new password \mbox{``newPassword''}.}
476 475 \end{enumerate}
477 476  
478   -\item[Expected Result:] {User's password is changed from ``oldPasswrd'' to ``newPassword''.}
  477 +\item[Expected Result:] {User's password is changed from \mbox{``mynameisuserx''}
  478 +to \mbox{``newPassword''}.}
  479 +\\
  480 +
  481 +\item[Alternate Workflow A:]
  482 +\begin{enumerate}
  483 +\itemsep1pt\parskip0pt\parsep0pt
  484 +\item
  485 + {UserX shall enter an incorrect current password \mbox{``MyNameIsUserX''} and the desired
  486 +new password \mbox{``newPassword''} (twice) in the ``Change Password'' form.}
  487 +\item
  488 + {UserX shall click the ``Submit'' button.}
  489 +\item
  490 + {The System shall ensure validity of new password.}
  491 +\item
  492 + {The System shall check UserX's current password.}
  493 +\end{enumerate}
  494 +
  495 +\item[Expected Result:] {The System shall display a toast ``Your old password is not correct''.}
  496 +\\
  497 +
  498 +\item[Workflow:]
  499 +\begin{enumerate}
  500 +\itemsep1pt\parskip0pt\parsep0pt
  501 +\item
  502 + {UserX shall enter their current password \mbox{``mynameisuserx''} and the desired
  503 +new password \mbox{``newPass''} (twice) in the ``Change Password'' form.}
  504 +\item
  505 + {UserX shall click the ``Submit'' button.}
  506 +\item
  507 + {The System shall ensure validity of new password.}
  508 +\end{enumerate}
  509 +
  510 +\item[Expected Result:] {The System shall display error text ``New password
  511 +must be at least 8 characters.''}
  512 +
479 513 \end{description}
480 514 \newpage
481 515  
482 516  
483 517  
484 518  
... ... @@ -484,28 +518,19 @@
484 518 \subsection{[A6] Password Reset}
485 519  
486 520 \begin{description}
487   -\item[Description:]{The User shall be able to reset their password without
488   -being logged in }
  521 +\item[Description:]{This test case outlines the presentation step layering process of
  522 +a user requesting a password reset without logging in.}
489 523  
490 524 \item[Desired Outcome:]{The User's password shall be changed to one that
491   -they remember}
  525 +they remember.}
492 526 \\
493 527  
494 528 \item[User Goals:]{The User does not know their current password but wants
495   -to log into the site}
  529 +to log into the site.}
496 530  
497 531 \item[Dependency Use Cases:]{[A1] User Registration}
498 532 \\
499 533  
500   -\item[Details:]{The User provides their email in a password reset form. If
501   -the address is valid, the site sends a password reset link with a random
502   -token to that address. If the address is invalid, the site does not send
503   -a link. For security reasons, we do not reveal to the user whether the
504   -email address was valid, and we expire the link after 24 hours. When a
505   -user visits the link emailed to them, they are able to specify a new
506   -password in a form. When they submit the form, their password is updated
507   -if the token is correct. }
508   -
509 534 \item[Priority Level:]{``Must''}
510 535  
511 536 \item[Status]{Implemented}
512 537  
... ... @@ -526,10 +551,9 @@
526 551 {UserX can log in with the new password.}
527 552 \end{itemize}
528 553  
529   -\item[Trigger]{UserX forgot their password and wants to access the site.}
  554 +\item[Trigger:]{UserX forgot their password and wants to access the site.}
530 555  
531 556 \item[Workflow:]
532   -
533 557 \begin{enumerate}
534 558 \itemsep1pt\parskip0pt\parsep0pt
535 559 \item
... ... @@ -537,7 +561,7 @@
537 561 \item
538 562 {The System shall prompt the user for their current email.}
539 563 \item
540   - {UserX shall submit their email ``UserX@flashy.cards''.}
  564 + {UserX shall submit their email \mbox{``UserX@flashy.cards''}.}
541 565 \item
542 566 {The System shall check if an account exists with the email entered by UserX.}
543 567 \item
544 568  
545 569  
546 570  
547 571  
... ... @@ -550,26 +574,28 @@
550 574 \item
551 575 {The System shall render a form that will prompt the user for a new password.}
552 576 \item
553   - {UserX shall provide a new password, ``newPassword'', in the form.}
  577 + {UserX shall provide a new password, \mbox{``newPassword''}, in the form.}
554 578 \item
555 579 {The System shall change the password associated with the user's email.}
556 580 \item
557   - {UserX shall navigate back to the login page and enter ``UserX@flashy.cards''
558   -with the old password ``mynameisuserx''.}
  581 + {UserX shall navigate back to the login page and enter \mbox{``UserX@flashy.cards''}
  582 +with the old password \mbox{``mynameisuserx''}.}
559 583 \item
560 584 {The System shall display ``Invalid username or password!''}
561 585 \item
562   - {UserX shall login as ``UserX@flashy.cards'' with the password ``newPassword''.}
  586 + {UserX shall login as \mbox{``UserX@flashy.cards''} with the password \mbox{``newPassword''}.}
563 587 \end{enumerate}
564 588  
565   -\item[Expected Result:] {The login shall succeed.}
  589 +\item[Expected Result:] {UserX shall be logged in.}
  590 +\\
566 591  
567 592 \item[Alternate Workflow:]
568 593 \begin{enumerate}
569 594 \setcounter{enumi}{4}
570 595 \itemsep1pt\parskip0pt\parsep0pt
571 596 \item
572   - {If no such account exists, the System shall display a modal display ``Cannot find account.'' to UserX.}
  597 + {If no such account exists, the System shall display an error message
  598 +``Enter a valid email!'' to UserX.}
573 599 \end{enumerate}
574 600  
575 601 \item[Expected Result:] {UserX's password will not be reset.}
... ... @@ -595,7 +621,7 @@
595 621  
596 622 \item[Priority Level:]{``Should''}
597 623  
598   -\item[Status:]{Implemented}
  624 +\item[Status:]{Deferred (see Add a Class)}
599 625  
600 626 \item[Preconditions:]
601 627 \begin{itemize}
602 628  
... ... @@ -645,14 +671,14 @@
645 671 \subsection{[A8] User Logout}
646 672  
647 673 \begin{description}
648   -\item[Description:]{The User shall be able to log out of his/her account on
649   -the site.}
  674 +\item[Description:]{This test case outlines the presentation layering step process
  675 +of a user logging out from their account.}
650 676  
651 677 \item[Desired Outcome:]{The User's information and data will no longer be
652 678 accessible after logging out. }
653 679  
654   -\item[User Goals:]{The User is done with his/her session of using the
655   -website, and wants to make sure others cannot access the data in his/her
  680 +\item[User Goals:]{The User is done with their session of using the
  681 +website, and wants to make sure others cannot access the data in their
656 682 account.}
657 683  
658 684 \item[Dependency Use Cases:] {[A1] User Registration, [A2] User Login}
659 685  
660 686  
661 687  
662 688  
663 689  
664 690  
... ... @@ -662,25 +688,35 @@
662 688  
663 689 \item[Status:]{Implemented}
664 690  
665   -\item[Preconditions:]{The user is logged into their account.}
  691 +\item[Preconditions:]
  692 +\begin{itemize}
  693 +\itemsep1pt\parskip0pt\parsep0pt
  694 +\item
  695 +{The user is logged in as UserX.}
  696 +\end{itemize}
666 697  
667   -\item[Postconditions:]{The user's data can no longer be accessed.}
  698 +\item[Postconditions:]
  699 +\begin{itemize}
  700 +\itemsep1pt\parskip0pt\parsep0pt
  701 +\item
  702 +{The user's data can no longer be accessed.}
  703 +\end{itemize}
668 704  
669   -\item[Trigger:]
  705 +\item[Trigger:] {UserX does not currently want access to the site and does
  706 +not want others tampering with their account.}
670 707  
671 708 \item[Workflow:]
672   -
673 709 \begin{enumerate}
674 710 \itemsep1pt\parskip0pt\parsep0pt
675 711 \item
676   - {UserX shall click the ``Logout'' button.}
  712 + {UserX shall click ``Logout'' (power button) in the top right.}
677 713 \item
678   - {The System shall logs out UserX.}
  714 + {The System shall log out UserX.}
679 715 \item
680 716 {The System shall redirect UserX to the login page.}
681 717 \end{enumerate}
682 718  
683   -\item[Expected Result:] {User is logged out and is redirected to the login page.}
  719 +\item[Expected Result:] {UserX is logged out and on the login page.}
684 720 \end{description}
685 721 \newpage
686 722  
... ... @@ -761,7 +797,7 @@
761 797 \begin{enumerate}
762 798 \itemsep1pt\parskip0pt\parsep0pt
763 799 \item
764   - {UserX shall select ``Settings'' button from the top header.}
  800 + {UserX shall select ``Settings'' (gear) from the top right.}
765 801 \item
766 802 {The System shall display a settings screen.}
767 803 \item
... ... @@ -807,7 +843,7 @@
807 843 \item
808 844 {The User is logged as UserX.}
809 845 \item
810   -{The User is logged in a different browser session as UserY.}
  846 +{The User is logged in a different browser session as UserY (see Testing Notes).}
811 847 \item
812 848 {UserX and UserY have added the class TEST 101.}
813 849 \item
814 850  
815 851  
816 852  
... ... @@ -860,19 +896,23 @@
860 896 \setcounter{enumi}{3}
861 897 \itemsep1pt\parskip0pt\parsep0pt
862 898 \item
863   - {UserX shall user their cursor to select the word Spain in the text box, then click the ``Blank Word'' button.}
  899 + {UserX shall user their cursor to select the word Spain in the text box,
  900 +then click the ``Blank Word'' button.}
864 901 \item
865 902 {The System shall bold the word Spain.}
866 903 \item
867   - {UserX shall use the cursor to select the word ``plain'' in the text box, then click the ``Blank Word'' button.}
  904 + {UserX shall use the cursor to select the word ``plain'' in the text box,
  905 +then click the ``Blank Word'' button.}
868 906 \item
869 907 {The System shall bold the word plain.}
870 908 \item
871 909 {UserX shall click the ``Contribute'' button in the modal.}
872 910 \item
873   - {The System shall add the new flashcard containing the text ``The rain in \textbf{Spain} stays mainly in the \textbf{plain}'' to the feed of each user enrolled in TEST.}
  911 + {The System shall add the new flashcard containing the text ``The rain in
  912 +\textbf{Spain} stays mainly in the \textbf{plain}'' to the feed of each user enrolled in TEST.}
874 913 \item
875   - {UserY shall view the live feed and within a minute see the new flashcard appear with ``Spain'' and ``plain'' bolded.}
  914 + {UserY shall view the live feed and within a minute see the new flashcard
  915 +appear with ``Spain'' and ``plain'' bolded.}
876 916 \end{enumerate}
877 917  
878 918 \item[Expected Result:] {
... ... @@ -883,7 +923,7 @@
883 923 The new flashcard will show up on UserY's live feed on class TEST 101
884 924 without checkmark and pencil icon.}
885 925  
886   -\item[Alternative Workflow:]
  926 +\item[Alternate Workflow:]
887 927 \begin{enumerate}
888 928 \setcounter{enumi}{2}
889 929 \itemsep1pt\parskip0pt\parsep0pt
890 930  
... ... @@ -893,9 +933,10 @@
893 933 {UserX shall click the ``Contribute'' button in the dialog.}
894 934 \end{enumerate}
895 935  
896   -\item[Expected Result:] {Blank flashcard will not be added to UserX's deck or to the live feed of TEST 101.}
  936 +\item[Expected Result:] {Blank flashcard will not be added to UserX's deck or
  937 +to the live feed of TEST 101.}
897 938  
898   -\item[Alternative Workflow:]
  939 +\item[Alternate Workflow:]
899 940 \begin{enumerate}
900 941 \setcounter{enumi}{2}
901 942 \itemsep1pt\parskip0pt\parsep0pt
... ... @@ -917,7 +958,8 @@
917 958 \subsection{[F2] Edit Flashcard}
918 959  
919 960 \begin{description}
920   -\item[Description:]{This test case outlines the presentation layering step process of a user editting a flashcard.}
  961 +\item[Description:]{This test case outlines the presentation layering step
  962 +process of a user editting a flashcard.}
921 963  
922 964 \item[Desired Outcome:]{Flashcard is edited and saved appropriately}
923 965 \\
924 966  
... ... @@ -981,14 +1023,13 @@
981 1023 {The System shall hide the modal from UserX.}
982 1024 \end{enumerate}
983 1025  
984   -\item[Expected Results:]{UserX shall see a new flashcard with the
  1026 +\item[Expected Result:]{UserX shall see a new flashcard with the
985 1027 text ``Edit has been made'' added to the top of the feed and the new
986 1028 flashcard will be added to UserX's deck.
987 1029 The flashcard with the text ``this is made for edit''
988 1030 will be hidden from UserX.}
989 1031  
990   -\item[Alternative Workflow:]
991   -
  1032 +\item[Alternate Workflow A:]
992 1033 \begin{enumerate}
993 1034 \itemsep1pt\parskip0pt\parsep0pt
994 1035 \item
... ... @@ -1005,7 +1046,7 @@
1005 1046 \item
1006 1047 {UserX shall select }
1007 1048 \item
1008   - {UserX shall click 'Save'}
  1049 + {UserX shall click ``Save Changes''.}
1009 1050 \item
1010 1051 {The System shall hide the modal from UserX.}
1011 1052 \item
... ... @@ -1015,7 +1056,7 @@
1015 1056  
1016 1057 \item[Expected Result:]{The selected flashcard's blanked words shall be changed to ``fun''.}
1017 1058  
1018   -\item[Alternate Workflow:]
  1059 +\item[Alternate Workflow B:]
1019 1060 \begin{enumerate}
1020 1061 \itemsep1pt\parskip0pt\parsep0pt
1021 1062 \item
1022 1063  
1023 1064  
... ... @@ -1038,13 +1079,13 @@
1038 1079 {The System shall hide the modal from UserX.}
1039 1080 \end{enumerate}
1040 1081  
1041   -\item[Expected Results:]{UserX shall see a new flashcard with the
  1082 +\item[Expected Result:]{UserX shall see a new flashcard with the
1042 1083 text ``Edit has been made'' added to the top of the feed and the new
1043 1084 flashcard will be added to UserX's deck.
1044 1085 The flashcard with the text ``this is made for edit''
1045 1086 will be hidden from UserX.}
1046   -\item[Alternative Workflow B:]
1047 1087  
  1088 +\item[Alternative Workflow B:]
1048 1089 \begin{enumerate}
1049 1090 \itemsep1pt\parskip0pt\parsep0pt
1050 1091 \item
... ... @@ -1573,7 +1614,7 @@
1573 1614  
1574 1615 \section{Decks}
1575 1616  
1576   -\subsection{[D1] Remove a card from a deck}
  1617 +\subsection{[D1] Remove a Card from Deck}
1577 1618  
1578 1619 \begin{description}
1579 1620 \item[Description:]{This test case outlines the presentation layering step process
UserStories.tex View file @ 2d7d97a
... ... @@ -2,7 +2,7 @@
2 2 \usepackage{tgpagella}
3 3 \setkomafont{disposition}{\normalfont\bfseries}
4 4 %\usepackage[markuppercase]{scrpage2}
5   -\title{\huge System Test Plan}
  5 +\title{\huge User Stories}
6 6 \date{\today}
7 7 \author{\Large Students With A Goal (S.W.A.G.)}
8 8 \usepackage[pass]{geometry}
9 9  
10 10  
11 11  
12 12  
... ... @@ -44,43 +44,55 @@
44 44 \textbf{\LARGE{These User Stories supercede the the User Stories listed on the post it notes on the CSE Software Tools
45 45 Site. We were not able to remove those User Stories. Please use these as the User Stories. }}
46 46 \tableofcontents
  47 +\newpage
47 48 \section{ Account }
48   -As a student, I want to be able to log in to the account I signed up with.
49   -As a student, I want to be able to change my password for my account.
50   -As a student, I want to be able to recover my password when I forget it
51   -As a student, I want to configure my notifications.
52   -As a student, I want to be able to logout my account.
53   -As a first time user, I want to be able build my deck without going through registration process in class.
54   -As an instructor, I want to limit access to the cards for my course
55   -As an instructor, I want to invite students to the class group I created
56   -As a student I want to receive notifications without installing an app
57   -As a student I want to be able to delete my account
  49 +\begin {enumerate}
  50 +\item {As a student, I want to be able to log in to the account I signed up with.}
  51 +\item {As a student, I want to be able to change my password for my account.}
  52 +\item {As a student, I want to be able to recover my password when I forget it.}
  53 +\item {As a student, I want to configure my notifications.}
  54 +\item {As a student, I want to be able to logout my account. }
  55 +\item {As a first time user, I want to be able build my deck without going through registration process in class.}
  56 +\item {As an instructor, I want to limit access to the cards for my course.}
  57 +\item {As an instructor, I want to invite students to the class group I created.}
  58 +\item {As a student, I want to receive notifications without installing an app.}
  59 +\item {As a student, I want to be able to delete my account.}
  60 +\end{enumerate}
  61 +\newpage
58 62 \section{ Flashcards }
59   -As a student, I want to pick flashcards
60   -As a student, I want to be able to make my own flashcard
61   -As a student, I want to remove cards from my deck
62   -As a student, I don't want to see low-quality cards.
63   -As a student, I want to edit my card.
64   -As a student, I want to make flashcards quickly
65   -As a student, I want to flag abusive flash cards.
66   -As a student I want to see other cards at the time they are added to the feed
67   -As a student, I want to be able to hide unwanted cards from my live feed
  63 +\begin{enumerate}
  64 +\item As a student, I want to pick flashcards.
  65 +\item As a student, I want to be able to make my own flashcard.
  66 +\item As a student, I want to remove cards from my deck.
  67 +\item As a student, I don't want to see low-quality cards.
  68 +\item As a student, I want to edit my card.
  69 +\item As a student, I want to make flashcards quickly
  70 +\item As a student, I want to flag abusive flash cards.
  71 +\item As a student, I want to see other cards at the time they are added to the feed.
  72 +\item As a student, I want to be able to hide unwanted cards from my live feed.
  73 +\end{enumerate}
  74 +\newpage
68 75 \section{ Decks}
69   -As a student, I want to be able to make my own deck
70   -As a student, I want to be able to separate the live feed for each class
71   -As a student, I want to add myself to a class
72   -As a student, I want to my deck to be private
73   -As a student, I want to be able to shuffle my deck.
74   -As a student, I want to be able to remove courses that I was registered to.
  76 +\begin {enumerate}
  77 +\item As a student, I want to be able to make my own deck.
  78 +\item As a student, I want to be able to separate the live feed for each class.
  79 +\item As a student, I want to add myself to a class.
  80 +\item As a student, I want to my deck to be private.
  81 +\item As a student, I want to be able to shuffle my deck.
  82 +\item As a student, I want to be able to remove courses that I was registered to.
  83 +\end{enumerate}
  84 +\newpage
75 85 \section{Study}
76   -As a student, I want to be able to study my deck.
77   -As a student, I want to have the app remind me when to review my cards
78   -As a student, I want to be able to blank out words to make cards.
79   -As a student I want to review cards without waiting for a notification
80   -As a student I want to view cards in my deck in the order they were created
81   -As a student, I want to be able to search/sort/filter for flashcards by date, class, tag, keywords
82   -As a student, I want to be able to scroll infinitely
83   -As a student I want to use the keyboard to interact with the app
  86 +\begin{enumerate}
  87 +\item As a student, I want to be able to study my deck.
  88 +\item As a student, I want to have the app remind me when to review my cards.
  89 +\item As a student, I want to be able to blank out words to make cards.
  90 +\item As a student, I want to review cards without waiting for a notification.
  91 +\item As a student, I want to view cards in my deck in the order they were created.
  92 +\item As a student, I want to be able to search/sort/filter for flashcards by date, class, tag, keywords.
  93 +\item As a student, I want to be able to scroll infinitely.
  94 +\item As a student, I want to use the keyboard to interact with the app.
  95 +\end{enumerate}
84 96 \newpage
85 97 \end{document}
screen_sequence_diagrams/aaa_legend.dot View file @ 2d7d97a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + labelloc="t";
  5 + label=" Screen Sequence Diagram Legend";
  6 + node[shape=box, style="rounded,filled,bold"];
  7 +
  8 +
  9 + "Pages"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 +
  11 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  12 + fixedsize=true, width=1.4, height=1.4];
  13 +
  14 + "Actions";
  15 +
  16 + "Requests/Changes"[shape=none];
  17 +
  18 +}
screen_sequence_diagrams/add_class.dot View file @ 2d7d97a
... ... @@ -6,7 +6,7 @@
6 6 nodesep=1.4;
7 7 labelloc="t";
8 8 label = "[A3] Add a Class";
9   - "Navigation Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
11 11 fixedsize=true, width=1.4, height=1.4];
12 12 "POST /api/sections/{pk}/enroll"[shape=none];
13 13  
14 14  
... ... @@ -21,16 +21,16 @@
21 21 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
22 22 fixedsize=true, width=1.4, height=1.4];
23 23 "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled];
24   - "Navigation Menu" -> "POST /api/sections/{pk}/enroll"[dir=none];
  24 + "Navbar" -> "POST /api/sections/{pk}/enroll"[dir=none];
25 25 "POST /api/sections/{pk}/enroll" -> "Controller";
26 26 "Controller" -> "FAILURE";
27   - "FAILURE" -> "Navigation Menu";
  27 + "FAILURE" -> "Navbar";
28 28 "Controller" -> "SUCCESS";
29 29 "SUCCESS"->"WhiteListCheck";
30 30 "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class";
31 31 "WhiteListCheck" -> "Success! \n User is added to class";
32   - "Success! \n User is added to class" -> "Navigation Menu";
33   - "Permission Denied: \n User cannot be enrolled in class" -> "Navigation Menu";
  32 + "Success! \n User is added to class" -> "Navbar";
  33 + "Permission Denied: \n User cannot be enrolled in class" -> "Navbar";
34 34  
35 35 }
screen_sequence_diagrams/blank_out_words.dot View file @ 2d7d97a
... ... @@ -9,7 +9,7 @@
9 9 "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
11 11 fixedsize=true, width=1.4, height=1.4];
12   - "POST /api/flashcards/{pk}"[shape=none]
  12 + "POST /api/flashcards/{pk}"[shape=none]
13 13  
14 14 "View Deck" -> "Flashcard";
15 15 "Flashcard" -> "Edit Flashcard Page";
screen_sequence_diagrams/change_password.dot View file @ 2d7d97a
... ... @@ -5,23 +5,23 @@
5 5 splines=ortho;
6 6 nodesep=1.4;
7 7 labelloc="t";
8   - label="[A5] Change password & [A6] Reset password";
9   - "Navigation Menu/Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  8 + label="[A5] Change password";
  9 + "Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond];
11   - "POST /api/request_password_reset"[shape=none];
  11 + "PATCH /api/me"[shape=none];
12 12 labelfloat=true;
13 13 lp=100;
14   -
  14 +
15 15 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
16   - fixedsize=true, width=1.4, height=1.4];
17   - "Navigation Menu/Settings" -> "POST /api/request_password_reset"[dir=none];
18   - "POST /api/request_password_reset" -> "Controller";
19   - "Controller" -> "Email";
20   - "Failure: User did not\nchange password"[shape=none];
21   - "Email" -> "Failure: User did not\nchange password";
22   - "Failure: User did not\nchange password" -> "Navigation Menu";
23   - "Success: User \nchanged password"[shape=none];
  16 + fixedsize=true, width=1.4, height=1.4];
  17 + "Failure: User did not\nchange password"[shape=none];
  18 + "Success: User \nchanged password"[shape=none];
  19 +
  20 + "Settings" -> "PATCH /api/me";
  21 + "PATCH /api/me" -> "Controller";
  22 + "Controller" -> "Failure: User did not\nchange password";
  23 + "Failure: User did not\nchange password" -> "Settings";
24 24 "Email" -> "Success: User \nchanged password";
25   - "Success: User \nchanged password" -> "Navigation Menu";
  25 + "Success: User \nchanged password" -> "Settings";
26 26 }
screen_sequence_diagrams/drop_class.dot View file @ 2d7d97a
... ... @@ -5,25 +5,31 @@
5 5 splines=ortho;
6 6 nodesep=1.4;
7 7 labelloc="t";
8   - label="[A4] Drop a class";
9   - "Navigation Menu/Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  8 + label="[A4] Drop a Class";
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
11   - fixedsize=true, width=1.4, height=1.4];
  11 + fixedsize=true, width=1.4, height=1.4];
12 12 "User Check"[center=true, fillcolor="#aaaaff", style=filled];
  13 + "SUCCESS"[shape=none];
  14 + "FAILURE"[shape=none];
13 15 //labelfloat=true;
14 16 //lp=100;
15 17  
16 18 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
17   - fixedsize=true, width=1.4, height=1.4];
18   - "POST /api/sections/{pk}/drop"[shape=none];
19   - "Navigation Menu/Settings" -> "POST /api/sections/{pk}/drop";
20   - "POST /api/sections/{pk}/drop" -> "Controller";
  19 + fixedsize=true, width=1.4, height=1.4];
  20 + "POST /api/sections/{pk}/drop"[shape=none];
  21 + "Navbar" -> "POST /api/sections/{pk}/drop";
  22 + "POST /api/sections/{pk}/drop" -> "Controller";
21 23 "Controller" -> "User Check";
22   - "User did not\ndrop class"[shape=none];
23   - "User Check" -> "User did not\ndrop class";
24   - "User did not\ndrop class" -> "Navigation Menu/Settings";
25   - "User successfully\ndropped class"[shape=none];
26   - "User Check" -> "User successfully\ndropped class";
27   - "User successfully\ndropped class" -> "Navigation Menu/Settings";
  24 +
  25 + "Class not dropped"[shape=none];
  26 + "User Check" -> "FAILURE";
  27 + "FAILURE" -> "Class not dropped";
  28 + "Class not dropped" -> "Navbar";
  29 +
  30 + "Class dropped"[shape=none];
  31 + "User Check" -> "SUCCESS";
  32 + "SUCCESS" -> "Class dropped";
  33 + "Class dropped" -> "Navbar";
28 34 }
screen_sequence_diagrams/fix_flashcard.dot View file @ 2d7d97a
... ... @@ -10,9 +10,9 @@
10 10 "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
11 11 "View Deck" -> "Edit Flashcard";
12 12 "Edit Flashcard" -> "POST /api/flashcard/{pk}/edit";
13   - "POST /api/flashcard/{pk}/edit" -> "FlashcardViewSet.edit";
14   - "FlashcardViewSet.edit" -> "Text or material date altered";
15   - "FlashcardViewSet.edit" -> "Only mask altered";
  13 + "POST /api/flashcard/{pk}/edit" -> "Controller";
  14 + "Controller" -> "Text or material date altered";
  15 + "Controller" -> "Only mask altered";
16 16 "Only mask altered" -> "Update UserFlashcard object";
17 17 "Text or material date altered" -> "Create new Flashcard with prev pointer\nNotify all users who've pulled the card";
18 18 "Only mask altered"[shape=none];
19 19  
20 20  
21 21  
22 22  
... ... @@ -22,22 +22,21 @@
22 22 "POST /api/flashcard/{pk}/edit"[shape=none];
23 23 labelfloat=true;
24 24 lp=100;
25   - "FlashcardViewSet.edit"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2];
26   - "Navigation Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  25 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
27 26 "WhiteListCheck"[center=true, fillcolor="#aaaaff", style=filled, style=filled];
28   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=1.1, height=1.1];
  27 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=2.2, height=2.2];
29 28 "POST"[shape=none];
30 29 "FAILURE"[shape=none];
31 30 "SUCCESS"[shape=none];
32   - "Navigation Menu" -> "POST";
  31 + "Navbar" -> "POST";
33 32 "POST" -> "Controller";
34 33 "Controller" -> "FAILURE";
35   - "FAILURE" -> "Navigation Menu";
  34 + "FAILURE" -> "Navbar";
36 35 "Controller" -> "SUCCESS";
37 36 "SUCCESS"->"WhiteListCheck";
38 37 "WhiteListCheck" -> "Permission Denied: \n User cannot be enrolled in class";
39 38 "WhiteListCheck" -> "Success! \n User is added to class";
40   - "Success! \n User is added to class" -> "Navigation Menu";
41   - "Permission Denied: \n User cannot be enrolled in class" -> "Navigation Menu";
  39 + "Success! \n User is added to class" -> "Navbar";
  40 + "Permission Denied: \n User cannot be enrolled in class" -> "Navbar";
42 41 }
screen_sequence_diagrams/reset_password.dot View file @ 2d7d97a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + node[shape=box, style="rounded,filled,bold"];
  5 + splines=ortho;
  6 + nodesep=1.4;
  7 + labelloc="t";
  8 + label="[A6] Reset password";
  9 + "Settings"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond];
  11 + "POST /api/request_password_reset"[shape=none];
  12 + labelfloat=true;
  13 + lp=100;
  14 +
  15 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  16 + fixedsize=true, width=1.4, height=1.4];
  17 +
  18 + "Settings" -> "POST /api/request_password_reset";
  19 + "POST /api/request_password_reset" -> "Controller";
  20 + "Controller" -> "Email";
  21 +
  22 + "Email" -> "Failure: User did not\nreset password"[shape=none];
  23 + "Failure: User did not\nreset password" -> "Settings";
  24 +
  25 + "Email" -> "Success: User \nreset password"[shape=none];
  26 + "Success: User \nreset password" -> "Settings";
  27 +}
screen_sequence_diagrams/review_notification.dot View file @ 2d7d97a
... ... @@ -6,8 +6,9 @@
6 6 node[shape=box, style="rounded,filled,bold"];
7 7 splines=ortho;
8 8 nodesep=1.4;
9   - "Sidebar Menu"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  9 + "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10 10 "Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  11 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond, fixedsize=true, width=1.1, height=1.1];
11 12  
12 13 "Notification"[shape=none];
13 14 "UPDATE"[shape=none];
... ... @@ -15,7 +16,7 @@
15 16 "Server" -> "Notification";
16 17 "Notification" -> "Controller";
17 18 "Controller" -> "UPDATE";
18   - "UPDATE" -> "Sidebar Menu";
  19 + "UPDATE" -> "Navbar";
19 20  
20 21 }
screen_sequence_diagrams/study_deck.dot View file @ 2d7d97a
... ... @@ -13,7 +13,7 @@
13 13 "StudyView Blank"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
14 14 "StudyView Response"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
15 15 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
16   - fixedsize=true, width=1.4, height=1.4];
  16 + fixedsize=true, width=2.2, height=2.2];
17 17 "POST"[shape=none];
18 18 labelfloat=true;
19 19 lp=100;
... ... @@ -26,7 +26,7 @@
26 26 "POST" -> "Controller";
27 27 "Controller" -> "FAILURE:\nUser has no card in the deck.";
28 28 "Controller" -> "SUCCESS\nUser has at least a card in the deck.";
29   - "FAILURE:\nUser has no card in the deck." -> "Sidebar Menu";
  29 + "FAILURE:\nUser has no card in the deck." -> "Navbar";
30 30 "SUCCESS\nUser has at least a card in the deck." -> "StudyView Blank";
31 31 "StudyView Blank" -> "POST";
32 32 "Controller" -> "StudyView Response";
screen_sequence_diagrams/user_login_out.dot View file @ 2d7d97a
1 1 digraph G{
2   - labelloc="t";
3   - label="[A2] Login & [A8] Logout";
  2 + labelloc="t";
  3 + label="[A2] Login & [A8] Logout";
4 4  
5   - // Other
  5 + // Other
6 6 ratio=0.75;
7 7 node[shape=box, style="rounded,filled,bold"];
8 8 splines=ortho;
9 9  
... ... @@ -10,9 +10,9 @@
10 10 "Navbar"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
11 11 "Login/Register Page"[center=true, fillcolor="#aaaaff", style=filled];
12 12 "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
13   - fixedsize=true, width=1.8, height=1.8];
  13 + fixedsize=true, width=1.8, height=1.8];
14 14 "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape=diamond,
15   - fixedsize=true, width=1.8, height=1.8];
  15 + fixedsize=true, width=1.8, height=1.8];
16 16 "POST"[shape=none];
17 17 labelfloat=true;
18 18 lp=100;
19 19  
20 20  
21 21  
22 22  
23 23  
24 24  
25 25  
... ... @@ -21,26 +21,26 @@
21 21 "SUCCESS:\n User logged out"[shape=none];
22 22 "Logout FAILURE"[shape=none];
23 23 "Login FAILURE"[shape=none];
24   -
  24 +
25 25 "Logout Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
26   - fixedsize=true, width=1.8, height=1.8];
  26 + fixedsize=true, width=1.8, height=1.8];
27 27 "Login Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
28   - fixedsize=true, width=1.8, height=1.8];
  28 + fixedsize=true, width=1.8, height=1.8];
29 29  
30   - // Graph
31   - "Navbar" -> "POST"[dir=none];
  30 + // Graph
  31 + "Navbar" -> "POST";
32 32 "POST" -> "Logout Controller";
33   - "Logout Controller" -> "Logout FAILURE"[dir=none];
  33 + "Logout Controller" -> "Logout FAILURE";
34 34 "Logout FAILURE" -> "Sidebar Menu";
35 35  
36 36 "Logout Controller" -> "SUCCESS:\n User logged out";
37   - "SUCCESS:\n User logged out" -> "Login/Register Page";
  37 + "SUCCESS:\n User logged out" -> "Login/Register Page";
38 38  
39   - "Login/Register Page" -> "Login Controller";
40   - "Login Controller" -> "SUCCESS:\n User logged in";
41   - "SUCCESS:\n User logged in" -> "Sidebar Menu";
  39 + "Login/Register Page" -> "Login Controller";
  40 + "Login Controller" -> "SUCCESS:\n User logged in";
  41 + "SUCCESS:\n User logged in" -> "Sidebar Menu";
42 42  
43   - "Login Controller" -> "Login FAILURE";
44   - "Login FAILURE" -> "Login/Register Page";
  43 + "Login Controller" -> "Login FAILURE";
  44 + "Login FAILURE" -> "Login/Register Page";
45 45 }
screen_sequence_diagrams/user_register.dot View file @ 2d7d97a
... ... @@ -4,7 +4,7 @@
4 4 labelloc="t";
5 5 label="[A1] User Registration";
6 6  
7   - // Other
  7 + // Other
8 8 ratio=0.75;
9 9 node[shape=box, style="rounded,filled,bold"];
10 10 splines=ortho;
11 11  
... ... @@ -23,10 +23,9 @@
23 23  
24 24 "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
25 25 fixedsize=true, width=1.5, height=1.5];
26   - "Server"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
27   - fixedsize=true, width=1.5, height=1.5];
  26 + "Server"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
28 27  
29   - // Graph
  28 + // Graph
30 29 "Login/Register Page" -> "POST";
31 30 "POST" -> "Controller";
32 31  
screen_sequence_diagrams/view_by_material_time.dot View file @ 2d7d97a
  1 +digraph G{
  2 + ratio=0.75;
  3 + //rankdir="LR";
  4 + labelloc="t";
  5 + label="[D2] View A Card by Material Time";
  6 + node[shape=box, style="rounded,filled,bold"];
  7 + splines=ortho;
  8 + nodesep=1.0;
  9 + "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
  10 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  11 + fixedsize=true, width=1.4, height=1.4];
  12 + "POST"[shape=none];
  13 + labelfloat=true;
  14 + lp=100;
  15 +
  16 + "FAILURE"[shape=none];
  17 +
  18 + "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
  19 + fixedsize=true, width=1.4, height=1.4];
  20 + "POST"[shape=none];
  21 + "View Deck" -> "POST";
  22 + "POST" -> "Controller";
  23 + "Controller" -> "FAILURE";
  24 + "FAILURE" -> "View Deck";
  25 + "Controller" -> "Sort by Ascending\nor Descending Time";
  26 + "Sort by Ascending\nor Descending Time" -> "View Deck";
  27 +}
screen_sequence_diagrams/view_by_pull_time.dot View file @ 2d7d97a
1   -digraph G{
2   - ratio=0.75;
3   - //rankdir="LR";
4   - labelloc="t";
5   - label="[D2] View A Card by Pull Time";
6   - node[shape=box, style="rounded,filled,bold"];
7   - splines=ortho;
8   - nodesep=1.0;
9   - "View Deck"[center=true, fillcolor="#aaaaff", style=filled,pos="0,0!"];
10   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
11   - fixedsize=true, width=1.4, height=1.4];
12   - "POST"[shape=none];
13   - labelfloat=true;
14   - lp=100;
15   -
16   - "FAILURE"[shape=none];
17   -
18   - "Controller"[center=true, fillcolor="#aaaaff", style=filled, shape = diamond,
19   - fixedsize=true, width=1.4, height=1.4];
20   - "POST"[shape=none];
21   - "View Deck" -> "POST";
22   - "POST" -> "Controller";
23   - "Controller" -> "FAILURE";
24   - "FAILURE" -> "View Deck";
25   - "Controller" -> "Sort by Ascending\nor Descending Time";
26   - "Sort by Ascending\nor Descending Time" -> "View Deck";
27   -}
use_cases_diagram.dot View file @ 2d7d97a
... ... @@ -34,7 +34,7 @@
34 34 "[R1] Study Deck"[fillcolor="#ffeeaa", style=filled];
35 35  
36 36 // User
37   - [shape=none, shapefile="stick.png"];
  37 + "User"[shape=none, shapefile="stick.png"];
38 38  
39 39 //Graph
40 40 "User"->"[A1] User Registration";
... ... @@ -44,6 +44,7 @@
44 44 "[A2] User Login"->"[A5] Password Change";
45 45 "[A2] User Login"->"[A3] Add a Class";
46 46 "[A2] User Login"->"[A8] User Logout";
  47 + "[A2] User Login" ->"[A10] Configure Account Notifications";
47 48 "[A3] Add a Class"->"[F9] View Class Feed";
48 49 "[A3] Add a Class"->"[A4] Drop a Class"
49 50 "[A8] User Logout"->"[A2] User Login";