Commit 88d1384790ad4a7ee48acb5137162f48b6b49b78

Authored by mjeng
Exists in master

Merges

Showing 3 changed files Side-by-side Diff

DesignUseCases.tex View file @ 88d1384
... ... @@ -585,7 +585,7 @@
585 585 the students who are actually in his class participate, and nobody
586 586 else.}
587 587  
588   -{Primary Actor: }{User (instructor)}
  588 +\item[Primary Actor]{Instructor}
589 589  
590 590 \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User
591 591 Login}
... ... @@ -784,8 +784,8 @@
784 784 {The User shall highlight keywords in the flashcard text.}
785 785 \item
786 786 {The User shall click on the `Contribute' button.}
787   -\item {The frontend shallsubmit the flashcard text,
788   - blanks, and material date, in JSON form as a POST request.}
  787 +\item {The frontend shall generate a POST request consisting of the flashcard text,
  788 + blanks, and material date, in JSON form in FeedController.js and send it to /api/flashcards/.}
789 789 \item
790 790 {The backend shall obtain the flashcard information by deserializing
791 791 the JSON in the POST request in views.py.}
792 792  
793 793  
794 794  
795 795  
796 796  
797 797  
798 798  
... ... @@ -846,29 +846,29 @@
846 846 \item
847 847 {The user shall click `Save Changes'}
848 848 \item
849   - {The client shall generate a POST request for a new flashcard and send
850   - it to the server at /api/flashcards/}
  849 + {The client shall generate a PATCH request for a new flashcard in CardGridController.js
  850 + and send it to the server at /api/flashcards/}
851 851 \item
852 852 {If the user changed only the blanks of the cards, the server shall
853 853 create a new FlashcardMask object and update the appropriate
854 854 UserFlashcard object with a reference to it.}
855 855 \item
856 856 {If the user changed the text of the card, the server will instead:}
857   -\end{enumerate}
858 857  
859 858 \begin{enumerate}
860 859 \itemsep1pt\parskip0pt\parsep0pt
861 860 \item
862   - {create a new flashcard for the section}
  861 + {Create a new flashcard for the section}
863 862 \item
864   - {push it to the feed}
  863 + {Push it to the feed}
865 864 \item
866   - {add it to the user's deck}
  865 + {Add it to the user's deck}
867 866 \item
868   - {hide the old card from the user}
  867 + {Hide the old card from the user}
869 868 \item
870   - {and return the new card to the user}
  869 + {Return the new card to the user}
871 870 \end{enumerate}
  871 +\end{enumerate}
872 872 \end{description}
873 873 {}
874 874  
875 875  
876 876  
877 877  
... ... @@ -922,19 +922,21 @@
922 922 \begin{enumerate}
923 923 \itemsep1pt\parskip0pt\parsep0pt
924 924 \item
925   - {User shall click on the ``Pull Flashcard'' button on a Flashcard in
926   - the Feed.}
  925 + {The user shall hover over the flashcard he wants to add to his deck and click on the '+'
  926 + icon that appears in the center of the card.}
927 927 \item
928   - {The frontend shall }
  928 + {The frontend shall make the pulled Flashcard appear in the user's deck.}
929 929 \item
930   - {The Client shall make the pulled Flashcard appear in the User's Deck
931   - on the sidebar.}
932   -\item
933   - {The Client shall submit a POST request to
  930 + {The frontend shall generate a POST request in FlashcardFactory.js and send it to
934 931 /api/flashcards/\textless{}flashcard id\textgreater{}/pull}
935 932 \item
936   - {The server shall create a UserFlashcard object to represent that the
937   - user's deck contains the card.}
  933 + {The server shall call the FlashcardViewSet.pull to handle the POST request sent by the frontend.}
  934 +\item
  935 + {The FlashcardViewSet.pull method should call the user.pull method in models.py with the flashcard object
  936 + to be pulled as an argument}
  937 +\item
  938 + {The user.pull method shall create a UserFlashcard object associated with the request's user and the
  939 + passed in flashcard object and save it in the database.}
938 940 \item
939 941 {The server shall notify connected clients about the new card rating,
940 942 if any}
TestCases.tex View file @ 88d1384
... ... @@ -47,11 +47,11 @@
47 47 \section{Testing Notes}
48 48 \subsection{Testing Accounts}
49 49 UserX\\
50   -- email: userx@flashy.cards\
  50 +- email: UserX@flashy.cards\
51 51 - password: mynameisuserx
52 52 \\
53 53 UserY\\
54   -- email: usery@flashy.cards\
  54 +- email: UserY@flashy.cards\
55 55 - password: mynameisusery
56 56  
57 57 \subsection{Fixtures}
... ... @@ -87,7 +87,7 @@
87 87 \item[Dependency Use Cases:]{None}
88 88 \\
89 89  
90   -\item[Priority Level:]{``Must''}
  90 +\item[Priority Level:]{``Must''}
91 91  
92 92 \item[Status:]{Implemented}
93 93  
... ... @@ -340,7 +340,7 @@
340 340 \item
341 341 {UserX shall begin to type ``TEST 103''.}
342 342 \item
343   - {The System shall show suggestions as a user types.}
  343 + {The System shall show suggestions as UserX types.}
344 344 \item
345 345 {The System shall check if there is a whitelist for each class in the suggestions.}
346 346 \item
347 347  
348 348  
349 349  
... ... @@ -384,18 +384,18 @@
384 384 \begin{itemize}
385 385 \itemsep1pt\parskip0pt\parsep0pt
386 386 \item
387   - {User is logged in as UserX.}
  387 + {The User is logged in as UserX.}
388 388 \item
389   - {User has enrolled in TEST 101.}
  389 + {The User has enrolled in TEST 101.}
390 390 \item
391   - {User is at Settings page.}
  391 + {The User is at Settings page.}
392 392 \end{itemize}
393 393  
394 394 \item[Postconditions:]
395 395 \begin{itemize}
396 396 \itemsep1pt\parskip0pt\parsep0pt
397 397 \item
398   - {User shall no longer have access to TEST 101, or associated flashcards.}
  398 + {The User shall no longer have access to TEST 101, or associated flashcards.}
399 399 \end{itemize}
400 400  
401 401 \item[Trigger:]{UserX wants to stop seeing the class's Live Feed and remove
402 402  
403 403  
404 404  
405 405  
406 406  
407 407  
408 408  
409 409  
410 410  
411 411  
412 412  
413 413  
414 414  
415 415  
416 416  
417 417  
418 418  
419 419  
... ... @@ -974,61 +974,107 @@
974 974 \item
975 975 {User has added the class TEST 101.}
976 976 \item
977   - {TEST 101 contains the flashcard ``This is made for \textbf{edit}''
  977 + {TEST 101 contains the flashcard ``This is made for edit''
978 978 , which was made by other user and is not in UserX's deck.}
979 979 \item
980   - {UserX has the flashcard ``I have made an error'', which was created by UserX, in their deck.}
  980 + {UserX has the flashcard ``I have made an \textbf{error}'',
  981 +which was created by UserX, and was pulled by UserY.}
  982 +\item
  983 + {UserX is at the live feed of TEST 101.}
981 984 \end{itemize}
982 985  
983 986 \item[Postconditions:]
984 987 \begin{itemize}
985 988 \itemsep1pt\parskip0pt\parsep0pt
986 989 \item
987   - {The selected flashcard is edited}
  990 + {The selected flashcards are edited.}
988 991 \end{itemize}
989 992  
990   -\item[Trigger:]{The User wants to edit a card.}
  993 +\item[Trigger:]{The User wants to edit existing flashcards.}
991 994  
992 995 \item[Workflow:]
993 996 \begin{enumerate}
994 997 \itemsep1pt\parskip0pt\parsep0pt
995 998 \item
996   - {UserX shall hover the cursor over the flashcard ``this is made for \textbf{edit}''.}
  999 + {UserX shall hover the cursor over the flashcard
  1000 +``this is made for edit''.}
997 1001 \item
998   - {UserX shall click the edit button on bottom left of the hovered flashcard. The blue edit button looks like a pencil slanted writing on a paper.}
  1002 + {UserX shall click the blue pencil edit icon on
  1003 +the bottom left of the hovered flashcard.}
999 1004 \item
1000   - {The System shall present a modal that contains the text of the selected flashcard.}
  1005 + {The System shall present a modal that contains the
  1006 +``this is made for edit'' of the selected flashcard.}
1001 1007 \item
1002   - {UserX shall be able to change the text to ``Edit has been made''.}
  1008 + {UserX shall select the entire text.}
1003 1009 \item
1004   - {UserX shall click ``Save Changes''.}
  1010 + {UserX shall change the text to ``Edit has been made''.}
1005 1011 \item
  1012 + {UserX shall click 'SAVE CHANGES'}
  1013 +\item
1006 1014 {The System shall hide the modal from UserX.}
1007 1015 \end{enumerate}
1008 1016  
1009   -\item[Expected Results:]{The selected flashcard's text shall be changed to ``Edit has been made''.}
  1017 +\item[Expected Results:]{UserX shall see a new flashcard with the
  1018 +text ``Edit has been made'' added to the top of the feed and the new
  1019 +flashcard will be added to UserX's deck.
  1020 +The flashcard with the text ``this is made for edit''
  1021 +will be hidden from UserX.}
1010 1022  
1011   -\item[Alternative Workflow A:]
  1023 +\item[Alternate Workflow A:]
1012 1024 \begin{enumerate}
1013 1025 \itemsep1pt\parskip0pt\parsep0pt
1014 1026 \item
1015   - {UserX shall move the cursor over the flash card ``this is made for edit2''.}
  1027 + {UserX shall move the cursor over the flash card
  1028 +``I have made an \textbf{error}''.}
1016 1029 \item
1017   - {UserX shall click the edit button on bottom left of the selected flashcard.}
  1030 + {UserX shall click the blue pencil edit icon on
  1031 +the bottom left of the hovered flashcard.}
1018 1032 \item
1019   - {The System shall present a modal that contains the text of the selected flashcard.}
  1033 + {The System shall present a modal that contains the text
  1034 +``I have made an \textbf{error}'' of the selected flashcard.}
1020 1035 \item
1021   - {UserX shall be able to change the bolded text from ``edit2'' to ``fun'' by highlighting the words and click blank words.}
  1036 + {UserX shall select the bolded text ``\textbf{error}''}
1022 1037 \item
  1038 + {UserX shall select }
  1039 +\item
1023 1040 {UserX shall click ``Save Changes''.}
1024 1041 \item
1025 1042 {The System shall hide the modal from UserX.}
1026 1043 \item
1027   - {The selected flashcard's blanked words shall be changed to ``fun''.}
  1044 + {The selected flashcard's blanked words shall be
  1045 +changed to ``fun''.}
1028 1046 \end{enumerate}
1029 1047  
1030 1048 \item[Expected Result:]{The selected flashcard's blanked words shall be changed to ``fun''.}
1031 1049  
  1050 +\item[Alternate Workflow B:]
  1051 +\begin{enumerate}
  1052 +\itemsep1pt\parskip0pt\parsep0pt
  1053 +\item
  1054 + {UserX shall hover the cursor over the flashcard
  1055 +``Edit has been made''.}
  1056 +\item
  1057 + {UserX shall click the blue pencil edit icon on
  1058 +the bottom left of the hovered flashcard.}
  1059 +\item
  1060 + {The System shall present a modal that contains the
  1061 +``Edit has been made'' of the selected flashcard.}
  1062 +\item
  1063 + {UserX shall select the entire text.}
  1064 +\item
  1065 + {UserX shall change the text to blanks.}
  1066 +\item
  1067 + {UserX shall click 'SAVE CHANGES' (button may not change
  1068 +color).}
  1069 +\item
  1070 + {The System shall hide the modal from UserX.}
  1071 +\end{enumerate}
  1072 +
  1073 +\item[Expected Result:]{UserX shall see a new flashcard with the
  1074 +text ``Edit has been made'' added to the top of the feed and the new
  1075 +flashcard will be added to UserX's deck.
  1076 +The flashcard with the text ``this is made for edit''
  1077 +will be hidden from UserX.}
1032 1078 \item[Alternative Workflow B:]
1033 1079  
1034 1080 \begin{enumerate}
1035 1081  
... ... @@ -1504,11 +1550,11 @@
1504 1550 \subsection{[F9] View a Feed}
1505 1551  
1506 1552 \begin{description}
1507   -\item[Description:]{This Test Case outlines the presentation layer process
1508   - process of a user viewing a class feed of flashcards.}
  1553 +\item[Description:]{This test case outlines the presentation
  1554 +layer process process of a user viewing a class Feed.}
1509 1555  
1510   -\item[Desired Outcome:]{The System shall show the user the Feed for their
1511   - class.}
  1556 +\item[Desired Outcome:]{The System shall show the user the
  1557 +Feed for their class.}
1512 1558 \\
1513 1559  
1514 1560 \item[User Goals:]{The User will see the Feed for the class User selected.}
1515 1561  
1516 1562  
... ... @@ -1534,21 +1580,24 @@
1534 1580 \item {User shall see the Feed for the class TEST 101.}
1535 1581 \end{itemize}
1536 1582  
1537   -\item[Trigger:]{The User wants to view Feed of their class.}
  1583 +\item[Trigger:]{The User wants to view the live feed of their class.}
1538 1584  
1539 1585 \item[Workflow:]
1540 1586 \begin{enumerate}
1541 1587 \itemsep1pt\parskip0pt\parsep0pt
1542 1588 \item
1543 1589 {UserX is at any view on the application.}
1544   -\item {UserX shall press the menu on the far left of the navigation bar.}
1545   -\item {UserX shall select the class TEST 101 from the menu.}
  1590 +\item
  1591 +{UserX shall click the down arrow on the top left
  1592 +of the screen that's on the left of the navigation bar.}
  1593 +\item {UserX shall select the class TEST 101 from the drop down menu.}
1546 1594 \item
1547 1595 {The System shall display the Feed view of TEST 101 to UserX.}
1548 1596 \end{enumerate}
1549 1597  
1550   -\item[Expected Result:]{UserX should be able to see the Feed view for the
1551   - selected class TEST 101.}
  1598 +\item[Expected Result:]{UserX should be able to see
  1599 +the Feed view for the selected class TEST 101. The top left
  1600 +of the screen shall display TEST 101 to indicate the class.}
1552 1601 \end{description}
1553 1602 \newpage
1554 1603  
UserStories.tex View file @ 88d1384
... ... @@ -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}