Commit 7787075eb3c103dadbd2c0cb0eb09df86dcd459b

Authored by Kevin Mach
1 parent 95ab912866
Exists in master

d1,d2,r1

Showing 1 changed file with 20 additions and 21 deletions Inline Diff

TestCases.tex View file @ 7787075
\documentclass[letterpaper]{scrartcl} % or whatever 1 1 \documentclass[letterpaper]{scrartcl} % or whatever
\usepackage{tgpagella} 2 2 \usepackage{tgpagella}
\setkomafont{disposition}{\normalfont\bfseries} 3 3 \setkomafont{disposition}{\normalfont\bfseries}
%\usepackage[markuppercase]{scrpage2} 4 4 %\usepackage[markuppercase]{scrpage2}
\title{\huge System Test Plan} 5 5 \title{\huge System Test Plan}
\date{\today} 6 6 \date{\today}
\author{\Large Students With A Goal (S.W.A.G.)} 7 7 \author{\Large Students With A Goal (S.W.A.G.)}
\usepackage[pass]{geometry} 8 8 \usepackage[pass]{geometry}
\usepackage{hyperref} 9 9 \usepackage{hyperref}
\usepackage{graphicx} 10 10 \usepackage{graphicx}
\usepackage{enumitem} 11 11 \usepackage{enumitem}
\setlist[description]{style=multiline,leftmargin=3cm,font=\normalfont\textbf} 12 12 \setlist[description]{style=multiline,leftmargin=3cm,font=\normalfont\textbf}
\setlistdepth{9} 13 13 \setlistdepth{9}
14 14
\setlist[itemize,1]{label=$\bullet$} 15 15 \setlist[itemize,1]{label=$\bullet$}
\setlist[itemize,2]{label=$\bullet$} 16 16 \setlist[itemize,2]{label=$\bullet$}
\setlist[itemize,3]{label=$\bullet$} 17 17 \setlist[itemize,3]{label=$\bullet$}
\setlist[itemize,4]{label=$\bullet$} 18 18 \setlist[itemize,4]{label=$\bullet$}
\setlist[itemize,5]{label=$\bullet$} 19 19 \setlist[itemize,5]{label=$\bullet$}
\setlist[itemize,6]{label=$\bullet$} 20 20 \setlist[itemize,6]{label=$\bullet$}
\setlist[itemize,7]{label=$\bullet$} 21 21 \setlist[itemize,7]{label=$\bullet$}
\setlist[itemize,8]{label=$\bullet$} 22 22 \setlist[itemize,8]{label=$\bullet$}
\setlist[itemize,9]{label=$\bullet$} 23 23 \setlist[itemize,9]{label=$\bullet$}
\renewlist{itemize}{itemize}{9} 24 24 \renewlist{itemize}{itemize}{9}
\begin{document} 25 25 \begin{document}
\maketitle 26 26 \maketitle
\begin{center} 27 27 \begin{center}
\includegraphics[width=12cm]{../swag_logo.png}\\ 28 28 \includegraphics[width=12cm]{../swag_logo.png}\\
29 29
\begin{tabular}{l r} 30 30 \begin{tabular}{l r}
Melody Jeng & System Architect \\ 31 31 Melody Jeng & System Architect \\
Arno Gau & Senior System Analyst \\ 32 32 Arno Gau & Senior System Analyst \\
Rachel Lee & Software Development Lead \\ 33 33 Rachel Lee & Software Development Lead \\
Laura Hawkins & Project Manager \\ 34 34 Laura Hawkins & Project Manager \\
Rohan Rangray & Algorithms Specialist\\ 35 35 Rohan Rangray & Algorithms Specialist\\
Andrew Buss & Database Specialist \\ 36 36 Andrew Buss & Database Specialist \\
Phuong Tran & Quality Assurance Lead \\ 37 37 Phuong Tran & Quality Assurance Lead \\
Chung Kang Wang & Business Analyst\\ 38 38 Chung Kang Wang & Business Analyst\\
Masud Rahman & User Interface Specialist\\ 39 39 Masud Rahman & User Interface Specialist\\
Kevin Mach & User Interface Specialist\\ 40 40 Kevin Mach & User Interface Specialist\\
\end{tabular} 41 41 \end{tabular}
\end{center} 42 42 \end{center}
\newpage 43 43 \newpage
\tableofcontents 44 44 \tableofcontents
\newpage 45 45 \newpage
\section{Testing Notes} 46 46 \section{Testing Notes}
\subsection{Testing Multiple Users} 47 47 \subsection{Testing Multiple Users}
Some test cases relating to real-time functionality require two users simultaneously logged into the the application. This requires two separate browser sessions. Refer to browser documentation for this. 48 48 Some test cases relating to real-time functionality require two users simultaneously logged into the the application. This requires two separate browser sessions. Refer to browser documentation for this.
\newpage 49 49 \newpage
\section{Accounts} 50 50 \section{Accounts}
51 51
\subsection{[A1] User Registration} 52 52 \subsection{[A1] User Registration}
\begin{description}[style=multiline,leftmargin=3cm] 53 53 \begin{description}[style=multiline,leftmargin=3cm]
54 54
\item[Description:]{This Test Case outlines the presentation layer step process of a user registering for an account with our application. } 55 55 \item[Description:]{This Test Case outlines the presentation layer step process of a user registering for an account with our application. }
56 56
\item[Desired Outcome:]{An account will be created for the user from the 57 57 \item[Desired Outcome:]{An account will be created for the user from the
specified username, password, email. The user will be able to log into 58 58 specified username, password, email. The user will be able to log into
the aforementioned account.} 59 59 the aforementioned account.}
60 60
\item[User Goals:]{The user shall have an account to participate in the 61 61 \item[User Goals:]{The user shall have an account to participate in the
website's activities.} 62 62 website's activities.}
63 63
\item[Dependency Use Cases:]{None} 64 64 \item[Dependency Use Cases:]{None}
\\ 65 65 \\
\item[Priority Level:]{``Must''} 66 66 \item[Priority Level:]{``Must''}
67 67
\item[Status:]{Not Implemented} 68 68 \item[Status:]{Not Implemented}
69 69
\item[Preconditions:] 70 70 \item[Preconditions:]
\begin{itemize} 71 71 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 72 72 \itemsep1pt\parskip0pt\parsep0pt
\item 73 73 \item
{None} 74 74 {None}
\end{itemize} 75 75 \end{itemize}
76 76
\item[Postconditions:] 77 77 \item[Postconditions:]
\begin{itemize} 78 78 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 79 79 \itemsep1pt\parskip0pt\parsep0pt
\item 80 80 \item
{The user has an account registered with the system.} 81 81 {The user has an account registered with the system.}
\end{itemize} 82 82 \end{itemize}
83 83
\item[Trigger:]{UserX wants to start creating flashcards for a class.} 84 84 \item[Trigger:]{UserX wants to start creating flashcards for a class.}
85 85
\item[Workflow:] 86 86 \item[Workflow:]
87 87
\begin{enumerate} 88 88 \begin{enumerate}
\item 89 89 \item
{UserX shall click the ``Sign Up'' button.} 90 90 {UserX shall click the ``Sign Up'' button.}
\item 91 91 \item
{The System shall display a registration form.} 92 92 {The System shall display a registration form.}
\item 93 93 \item
{UserX shall fill in the form with email testuser@flashy.cards and password ``test''.} 94 94 {UserX shall fill in the form with email testuser@flashy.cards and password ``test''.}
\item 95 95 \item
{The System shall successfully receive the correct credentials and send an email to the User's address with a link to validate the User's email address and displays the Add Class page to the User.} 96 96 {The System shall successfully receive the correct credentials and send an email to the User's address with a link to validate the User's email address and displays the Add Class page to the User.}
\item 97 97 \item
{UserX receives an email with a link to verify their email. The 98 98 {UserX receives an email with a link to verify their email. The
User clicks the link.} 99 99 User clicks the link.}
\item 100 100 \item
{The Server marks the user's email as valid and saves the User object 101 101 {The Server marks the user's email as valid and saves the User object
again.} 102 102 again.}
\end{enumerate} 103 103 \end{enumerate}
104 104
\item [Expected Results:]{UserX's account is now active (registered with the system)} 105 105 \item [Expected Results:]{UserX's account is now active (registered with the system)}
106 106
\end{description} 107 107 \end{description}
\newpage 108 108 \newpage
109 109
{} 110 110 {}
111 111
\subsection{[A2] User Login} 112 112 \subsection{[A2] User Login}
113 113
\begin{description} 114 114 \begin{description}
\item[Description:]{This Test Case outlines the presentation layering step process of a user logging into the application} 115 115 \item[Description:]{This Test Case outlines the presentation layering step process of a user logging into the application}
116 116
\item[Desired Outcome:]{The user shall be able to provide their email address and 117 117 \item[Desired Outcome:]{The user shall be able to provide their email address and
password to access their courses and flash cards. The user shall gain 118 118 password to access their courses and flash cards. The user shall gain
access to the list of the courses they have added, and be able to review 119 119 access to the list of the courses they have added, and be able to review
the flash cards they have added to their decks.} 120 120 the flash cards they have added to their decks.}
\\ 121 121 \\
\item[User Goals:]{The user wants to resume use of the site on another 122 122 \item[User Goals:]{The user wants to resume use of the site on another
device, or use the site after logging out.} 123 123 device, or use the site after logging out.}
124 124
\item[Dependency Use Cases:]{[A1] User Registration} 125 125 \item[Dependency Use Cases:]{[A1] User Registration}
\\ 126 126 \\
\item[Priority Level:]{``Must''} 127 127 \item[Priority Level:]{``Must''}
128 128
\item[Status:]{Not Implemented} 129 129 \item[Status:]{Not Implemented}
130 130
\item[Preconditions:] 131 131 \item[Preconditions:]
132 132
\begin{itemize} 133 133 \begin{itemize}
\item 134 134 \item
{The User has created an account before with email ``testuser@flashy.cards'' with password ``test''.} 135 135 {The User has created an account before with email ``testuser@flashy.cards'' with password ``test''.}
\end{itemize} 136 136 \end{itemize}
137 137
\item[Postconditions:] 138 138 \item[Postconditions:]
139 139
\begin{itemize} 140 140 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 141 141 \itemsep1pt\parskip0pt\parsep0pt
\item 142 142 \item
{The user can navigate the site and see their data.} 143 143 {The user can navigate the site and see their data.}
\end{itemize} 144 144 \end{itemize}
145 145
\item[Trigger:]{ UserX wants to view, add, or create cards for a class or classes.} 146 146 \item[Trigger:]{ UserX wants to view, add, or create cards for a class or classes.}
147 147
\item[Workflow:] 148 148 \item[Workflow:]
149 149
\begin{enumerate} 150 150 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 151 151 \itemsep1pt\parskip0pt\parsep0pt
\item 152 152 \item
{UserX shall enter his or her email ``testuser@flashy.cards'' and password ``test''. } 153 153 {UserX shall enter his or her email ``testuser@flashy.cards'' and password ``test''. }
\item 154 154 \item
{The System shall authenticate UserX's email and password and checks if UserX is active.} 155 155 {The System shall authenticate UserX's email and password and checks if UserX is active.}
\item 156 156 \item
{The System shall receive the credentials and display the ``Add Class'' page to the User. } 157 157 {The System shall receive the credentials and display the ``Add Class'' page to the User. }
\end{enumerate} 158 158 \end{enumerate}
\item [Expected Results:] 159 159 \item [Expected Results:]
{The User is brought to the page ``Add Class''.} \\ 160 160 {The User is brought to the page ``Add Class''.} \\
161 161
\item [Alternate Workflow:] 162 162 \item [Alternate Workflow:]
\begin{enumerate} 163 163 \begin{enumerate}
\item 164 164 \item
{UserX accidentally puts in the wrong credentials and clicks the ``Login'' button.} 165 165 {UserX accidentally puts in the wrong credentials and clicks the ``Login'' button.}
\item 166 166 \item
{The System shows UserX the site login page with a text message reading ``Invalid username or password!!'' displayed in the log in text box.} 167 167 {The System shows UserX the site login page with a text message reading ``Invalid username or password!!'' displayed in the log in text box.}
\end {enumerate} 168 168 \end {enumerate}
169 169
\item [Expected Results:] 170 170 \item [Expected Results:]
{The User is not able to login.} \\ 171 171 {The User is not able to login.} \\
172 172
\end{description} 173 173 \end{description}
\newpage 174 174 \newpage
175 175
{} 176 176 {}
177 177
\subsection{[A3] Add a Class} 178 178 \subsection{[A3] Add a Class}
\begin{description} 179 179 \begin{description}
\item[Description:]{This Test Case outlines the presentation layer step process of a User adding a class.} 180 180 \item[Description:]{This Test Case outlines the presentation layer step process of a User adding a class.}
181 181
\item[Desired Outcome:]{The class shall be linked with the student's account 182 182 \item[Desired Outcome:]{The class shall be linked with the student's account
and the student shall have the ability to read and publish flashcards 183 183 and the student shall have the ability to read and publish flashcards
for this class.} 184 184 for this class.}
185 185
\item[User Goals:]{The user wants to publish flashcards for this class and 186 186 \item[User Goals:]{The user wants to publish flashcards for this class and
read the flashcards for this class that are published by other users.} 187 187 read the flashcards for this class that are published by other users.}
188 188
\item[Primary Actor:]{User (student)} 189 189 \item[Primary Actor:]{User (student)}
190 190
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login} 191 191 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login}
\\ 192 192 \\
193 193
\item[Priority Level:]{``Must''} 194 194 \item[Priority Level:]{``Must''}
195 195
\item[Status:]{Not implemented} 196 196 \item[Status:]{Not implemented}
197 197
\item[Pre-conditions:] 198 198 \item[Pre-conditions:]
199 199
\begin{itemize} 200 200 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 201 201 \itemsep1pt\parskip0pt\parsep0pt
\item 202 202 \item
{The user has created an account.} 203 203 {The user has created an account.}
\item 204 204 \item
{The user is logged in to their account and is at root view.} 205 205 {The user is logged in to their account and is at root view.}
\end{itemize} 206 206 \end{itemize}
207 207
\item[Post-conditions:] 208 208 \item[Post-conditions:]
209 209
\begin{itemize} 210 210 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 211 211 \itemsep1pt\parskip0pt\parsep0pt
\item 212 212 \item
{The user can read the flashcards being published for the class and 213 213 {The user can read the flashcards being published for the class and
add them to his/her deck.} 214 214 add them to his/her deck.}
\item 215 215 \item
{The user can publish flashcards to be viewed and added by other users 216 216 {The user can publish flashcards to be viewed and added by other users
in the same class.} 217 217 in the same class.}
\end{itemize} 218 218 \end{itemize}
219 219
\item[Trigger:]{UserX wants to view the Live Feed and have a flashcard deck for a class.} 220 220 \item[Trigger:]{UserX wants to view the Live Feed and have a flashcard deck for a class.}
221 221
\item[Workflow:] 222 222 \item[Workflow:]
223 223
\begin{enumerate} 224 224 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 225 225 \itemsep1pt\parskip0pt\parsep0pt
\item 226 226 \item
{UserX shall click ``Add Class'' on the menu.} 227 227 {UserX shall click ``Add Class'' on the menu.}
\item 228 228 \item
{The System shall show the user ``Add Class'' page.} 229 229 {The System shall show the user ``Add Class'' page.}
\item 230 230 \item
{UserX shall begin to type ``CSE 110''.} 231 231 {UserX shall begin to type ``CSE 110''.}
\item 232 232 \item
{The System shall show suggestions as a user types.} 233 233 {The System shall show suggestions as a user types.}
\item 234 234 \item
{UserX shall click on ``CSE 110: Software Engineering (Gillespie, Gary N)''.} 235 235 {UserX shall click on ``CSE 110: Software Engineering (Gillespie, Gary N)''.}
\item 236 236 \item
{UserX shall click on the ``Add'' button.} 237 237 {UserX shall click on the ``Add'' button.}
\item 238 238 \item
{The System shall check if there is a whitelist for the CSE 110 section that 239 239 {The System shall check if there is a whitelist for the CSE 110 section that
UserX is trying to add.} 240 240 UserX is trying to add.}
\item 241 241 \item
{The System shall ensure that UserX is on the whitelist for the specified CSE 110 section.} 242 242 {The System shall ensure that UserX is on the whitelist for the specified CSE 110 section.}
\item 243 243 \item
{The System shall add UserX to the specified CSE 110 section.} 244 244 {The System shall add UserX to the specified CSE 110 section.}
\end{enumerate} 245 245 \end{enumerate}
246 246
\item[Expected Result:] {UserX has added the section and sees the Live Feed for the specified CSE 110 section.} 247 247 \item[Expected Result:] {UserX has added the section and sees the Live Feed for the specified CSE 110 section.}
248 248
\item[Alternate Workflow - Planned:] 249 249 \item[Alternate Workflow - Planned:]
\begin{enumerate} 250 250 \begin{enumerate}
\setcounter{enumi}{6} 251 251 \setcounter{enumi}{6}
\itemsep1pt\parskip0pt\parsep0pt 252 252 \itemsep1pt\parskip0pt\parsep0pt
\item 253 253 \item
{The System shall see that UserX is not on the whitelist. } 254 254 {The System shall see that UserX is not on the whitelist. }
\item 255 255 \item
{The System shall deny UserX access to the specified CSE 110 section.} 256 256 {The System shall deny UserX access to the specified CSE 110 section.}
\item 257 257 \item
{The System shall display failure message to UserX.} \\ 258 258 {The System shall display failure message to UserX.} \\
\end{enumerate} 259 259 \end{enumerate}
260 260
\item[Expected Result:] {UserX cannot add the specified CSE 110 section and cannot view contents related to this class.} 261 261 \item[Expected Result:] {UserX cannot add the specified CSE 110 section and cannot view contents related to this class.}
262 262
\item[Alternate Workflow - Planned:] 263 263 \item[Alternate Workflow - Planned:]
\begin{enumerate} 264 264 \begin{enumerate}
\setcounter{enumi}{6} 265 265 \setcounter{enumi}{6}
\itemsep1pt\parskip0pt\parsep0pt 266 266 \itemsep1pt\parskip0pt\parsep0pt
\item 267 267 \item
{The System shall see there is not whitelist for the specified CSE 110 section.} 268 268 {The System shall see there is not whitelist for the specified CSE 110 section.}
\item 269 269 \item
{The System shall link UserX to the specified CSE 110 section.} 270 270 {The System shall link UserX to the specified CSE 110 section.}
\item 271 271 \item
{UserX shall see the Live Feed for the specified CSE 110 section.} 272 272 {UserX shall see the Live Feed for the specified CSE 110 section.}
\end{enumerate} 273 273 \end{enumerate}
274 274
\item[Expected Workflow:] {User has added the section and sees the Live Feed for the specified CSE 110 section.} 275 275 \item[Expected Workflow:] {User has added the section and sees the Live Feed for the specified CSE 110 section.}
\end{description} 276 276 \end{description}
277 277
\newpage 278 278 \newpage
279 279
{} 280 280 {}
281 281
\subsection{[A4] Drop a Class: Planned} 282 282 \subsection{[A4] Drop a Class: Planned}
283 283
\begin{description} 284 284 \begin{description}
\item[Description:]{This Test Case outlines the presentation layer step process of a user dropping a class.} 285 285 \item[Description:]{This Test Case outlines the presentation layer step process of a user dropping a class.}
286 286
\item[Desired Outcome:]{The user has dropped the class and no longer needs 287 287 \item[Desired Outcome:]{The user has dropped the class and no longer needs
access to the flashcards for the dropped class. They can no longer 288 288 access to the flashcards for the dropped class. They can no longer
see the flashcards associated to the class that they dropped } 289 289 see the flashcards associated to the class that they dropped }
\\ 290 290 \\
\item[User Goals:]{The user shall not have access to a class and the 291 291 \item[User Goals:]{The user shall not have access to a class and the
flashcards associated with that class. They will no longer see the class 292 292 flashcards associated with that class. They will no longer see the class
listed in their list of ``Enrolled Classes''} 293 293 listed in their list of ``Enrolled Classes''}
294 294
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login, [A3] Add a Class} 295 295 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login, [A3] Add a Class}
\\ 296 296 \\
\item[Priority Level:]{ ``Should''} 297 297 \item[Priority Level:]{ ``Should''}
298 298
\item[Status:]{Not Implemented} 299 299 \item[Status:]{Not Implemented}
300 300
\item[Preconditions:] 301 301 \item[Preconditions:]
302 302
\begin{itemize} 303 303 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 304 304 \itemsep1pt\parskip0pt\parsep0pt
\item 305 305 \item
{User has a valid account.} 306 306 {User has a valid account.}
\item 307 307 \item
{User is logged in.} 308 308 {User is logged in.}
\item 309 309 \item
{User has enrolled in classes.} 310 310 {User has enrolled in classes.}
\end{itemize} 311 311 \end{itemize}
312 312
\item[Postconditions]{} 313 313 \item[Postconditions]{}
314 314
\begin{itemize} 315 315 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 316 316 \itemsep1pt\parskip0pt\parsep0pt
\item 317 317 \item
{User shall no longer have access to dropped class, or associated 318 318 {User shall no longer have access to dropped class, or associated
flashcards} 319 319 flashcards}
\end{itemize} 320 320 \end{itemize}
321 321
\item[Trigger:]{UserX wants to stop seeing the class's Live Feed and remove all of their flashcards.} 322 322 \item[Trigger:]{UserX wants to stop seeing the class's Live Feed and remove all of their flashcards.}
323 323
\item[Workflow:] 324 324 \item[Workflow:]
325 325
\begin{enumerate} 326 326 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 327 327 \itemsep1pt\parskip0pt\parsep0pt
\item 328 328 \item
{UserX shall click ``Drop'' (or equivalent) button for CSE 110: Software Engineering (Gillespie, Gary N).} 329 329 {UserX shall click ``Drop'' (or equivalent) button for CSE 110: Software Engineering (Gillespie, Gary N).}
\item 330 330 \item
{The System shall display a dialogue box which will say ``Are you 331 331 {The System shall display a dialogue box which will say ``Are you
sure you want to drop this class?''.} 332 332 sure you want to drop this class?''.}
\item 333 333 \item
{UserX shall click ``Yes'' to confirm that they want to drop the specified CSE 110 section.} 334 334 {UserX shall click ``Yes'' to confirm that they want to drop the specified CSE 110 section.}
\item 335 335 \item
{The System shall remove UserX from the specified CSE 110 section's roster.} 336 336 {The System shall remove UserX from the specified CSE 110 section's roster.}
\item 337 337 \item
{The System shall remove the specified CSE 110 section from the User's list of classes.} 338 338 {The System shall remove the specified CSE 110 section from the User's list of classes.}
\item {UserX shall have one less class to select on the menu.} 339 339 \item {UserX shall have one less class to select on the menu.}
\end{enumerate} 340 340 \end{enumerate}
341 341
\item[Expected Result:] {UserX no longer has access to any content related to to the class that has been dropped.} 342 342 \item[Expected Result:] {UserX no longer has access to any content related to to the class that has been dropped.}
\end{description} 343 343 \end{description}
\newpage 344 344 \newpage
345 345
{} 346 346 {}
347 347
\subsection{[A5] Password Change} 348 348 \subsection{[A5] Password Change}
349 349
\begin{description} 350 350 \begin{description}
\item[Description:]{The user shall be able to change the password for their 351 351 \item[Description:]{The user shall be able to change the password for their
account in the account settings. This requires that they are logged in. 352 352 account in the account settings. This requires that they are logged in.
} 353 353 }
354 354
\item[Desired Outcome:]{The user's password shall be changed and the user 355 355 \item[Desired Outcome:]{The user's password shall be changed and the user
shall be able to log in with the new password in the future} 356 356 shall be able to log in with the new password in the future}
\\ 357 357 \\
\item[User Goals:]{The user wants to use a different password in the future} 358 358 \item[User Goals:]{The user wants to use a different password in the future}
359 359
\item[Primary Actor:]{User (student)} 360 360 \item[Primary Actor:]{User (student)}
361 361
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login} 362 362 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login}
\\ 363 363 \\
364 364
\item[Details:]{The user provides their current password and a new password 365 365 \item[Details:]{The user provides their current password and a new password
in a form. If the current password is correct, the system updates their 366 366 in a form. If the current password is correct, the system updates their
password to the requested new password.} 367 367 password to the requested new password.}
368 368
\item[Priority Level:]{``Must''} 369 369 \item[Priority Level:]{``Must''}
370 370
\item[Status:]{Not implemented} 371 371 \item[Status:]{Not implemented}
372 372
\item[Preconditions:] 373 373 \item[Preconditions:]
374 374
\begin{itemize} 375 375 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 376 376 \itemsep1pt\parskip0pt\parsep0pt
\item 377 377 \item
{The user has created an account} 378 378 {The user has created an account}
\item 379 379 \item
{The user has logged in } 380 380 {The user has logged in }
\item 381 381 \item
{The user knows their current password} 382 382 {The user knows their current password}
\end{itemize} 383 383 \end{itemize}
384 384
\item[Postconditions:] 385 385 \item[Postconditions:]
386 386
\begin{itemize} 387 387 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 388 388 \itemsep1pt\parskip0pt\parsep0pt
\item 389 389 \item
{The user's password is changed} 390 390 {The user's password is changed}
\item 391 391 \item
{The user can log in with the new password} 392 392 {The user can log in with the new password}
\end{itemize} 393 393 \end{itemize}
394 394
\item[Trigger:]{UserX wants to change their password.} 395 395 \item[Trigger:]{UserX wants to change their password.}
396 396
\item[Error Handling:] 397 397 \item[Error Handling:]
\begin{description} 398 398 \begin{description}
\item[\small Missing Fields] \begin{itemize} 399 399 \item[\small Missing Fields] \begin{itemize}
\item The client shall enforce required fields 400 400 \item The client shall enforce required fields
\item The server will return an HTTP Bad Request error to the client. 401 401 \item The server will return an HTTP Bad Request error to the client.
\end{itemize} 402 402 \end{itemize}
\item[\small Incorrect Old Password] \begin{itemize} 403 403 \item[\small Incorrect Old Password] \begin{itemize}
\item The server will return an HTTP Forbidden error to the client. 404 404 \item The server will return an HTTP Forbidden error to the client.
\end{itemize} 405 405 \end{itemize}
\item[\small Blank New Password] \begin{itemize} 406 406 \item[\small Blank New Password] \begin{itemize}
\item The server will return an HTTP Bad Request error to the client. 407 407 \item The server will return an HTTP Bad Request error to the client.
\end{itemize} 408 408 \end{itemize}
\end{description} 409 409 \end{description}
410 410
\item[Workflow:] 411 411 \item[Workflow:]
\begin{enumerate} 412 412 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 413 413 \itemsep1pt\parskip0pt\parsep0pt
\item 414 414 \item
{UserX shall press the ``Change Password'' button.} 415 415 {UserX shall press the ``Change Password'' button.}
\item 416 416 \item
{The System shall render a form that requires the user to enter their old password and new password.} 417 417 {The System shall render a form that requires the user to enter their old password and new password.}
\item 418 418 \item
{UserX shall enter their current password ``oldPassword'' and the desired new password ``newPassword''.} 419 419 {UserX shall enter their current password ``oldPassword'' and the desired new password ``newPassword''.}
\item 420 420 \item
{The System shall check UserX's current password.} 421 421 {The System shall check UserX's current password.}
\item 422 422 \item
{The System shall update the UserX's current password ``oldPassword'' to the new password ``newPassword''.} 423 423 {The System shall update the UserX's current password ``oldPassword'' to the new password ``newPassword''.}
\item 424 424 \item
{The System shall display a modal displaying ``Success! You've changed your password!''} 425 425 {The System shall display a modal displaying ``Success! You've changed your password!''}
\end{enumerate} 426 426 \end{enumerate}
427 427
\item[Expected Result:] {User's password is changed from ``oldPasswrd'' to ``newPassword''.} 428 428 \item[Expected Result:] {User's password is changed from ``oldPasswrd'' to ``newPassword''.}
\end{description} 429 429 \end{description}
\newpage 430 430 \newpage
431 431
{} 432 432 {}
433 433
\subsection{[A6] Password Reset} 434 434 \subsection{[A6] Password Reset}
435 435
\begin{description} 436 436 \begin{description}
\item[Description:]{The user shall be able to reset their password without 437 437 \item[Description:]{The user shall be able to reset their password without
being logged in } 438 438 being logged in }
439 439
\item[Desired Outcome:]{The user's password shall be changed to one that 440 440 \item[Desired Outcome:]{The user's password shall be changed to one that
they remember} 441 441 they remember}
\\ 442 442 \\
\item[User Goals:]{The user does not know their current password but wants 443 443 \item[User Goals:]{The user does not know their current password but wants
to log into the site} 444 444 to log into the site}
445 445
\item[Primary Actor:]{User (student)} 446 446 \item[Primary Actor:]{User (student)}
447 447
\item[Dependency Use Cases:]{[A1] User Registration} 448 448 \item[Dependency Use Cases:]{[A1] User Registration}
\\ 449 449 \\
450 450
\item[Details:]{The user provides their email in a password reset form. If 451 451 \item[Details:]{The user provides their email in a password reset form. If
the address is valid, the site sends a password reset link with a random 452 452 the address is valid, the site sends a password reset link with a random
token to that address. If the address is invalid, the site does not send 453 453 token to that address. If the address is invalid, the site does not send
a link. For security reasons, we do not reveal to the user whether the 454 454 a link. For security reasons, we do not reveal to the user whether the
email address was valid, and we expire the link after 24 hours. When a 455 455 email address was valid, and we expire the link after 24 hours. When a
user visits the link emailed to them, they are able to specify a new 456 456 user visits the link emailed to them, they are able to specify a new
password in a form. When they submit the form, their password is updated 457 457 password in a form. When they submit the form, their password is updated
if the token is correct. } 458 458 if the token is correct. }
459 459
\item[Priority Level:]{``Must''} 460 460 \item[Priority Level:]{``Must''}
461 461
\item[Status:]{Not implemented} 462 462 \item[Status:]{Not implemented}
463 463
\item[Preconditions:] 464 464 \item[Preconditions:]
465 465
\begin{itemize} 466 466 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 467 467 \itemsep1pt\parskip0pt\parsep0pt
\item 468 468 \item
{The user has created an account before} 469 469 {The user has created an account before}
\item 470 470 \item
{The user knows the email address attached to their account} 471 471 {The user knows the email address attached to their account}
\end{itemize} 472 472 \end{itemize}
473 473
\item[Postconditions:] 474 474 \item[Postconditions:]
475 475
\begin{itemize} 476 476 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 477 477 \itemsep1pt\parskip0pt\parsep0pt
\item 478 478 \item
{The user's password is changed} 479 479 {The user's password is changed}
\item 480 480 \item
{The user can log in with the new password} 481 481 {The user can log in with the new password}
\end{itemize} 482 482 \end{itemize}
483 483
\item[Trigger]{UserX forgot their password and wants to access the site.} 484 484 \item[Trigger]{UserX forgot their password and wants to access the site.}
485 485
\item[Workflow:][Requesting password reset] 486 486 \item[Workflow:][Requesting password reset]
487 487
\begin{enumerate} 488 488 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 489 489 \itemsep1pt\parskip0pt\parsep0pt
\item 490 490 \item
{UserX shall click the ``Forgot Password'' button.} 491 491 {UserX shall click the ``Forgot Password'' button.}
\item 492 492 \item
{The System shall prompt the user for their current email} 493 493 {The System shall prompt the user for their current email}
\item 494 494 \item
{UserX shall submit their email ``testuser@flahy.cards''.} 495 495 {UserX shall submit their email ``testuser@flahy.cards''.}
\item 496 496 \item
{The System shall check if an account exists with the email entered by 497 497 {The System shall check if an account exists with the email entered by
UserX.} 498 498 UserX.}
\end{enumerate} 499 499 \end{enumerate}
500 500
\item[Workflow:] 501 501 \item[Workflow:]
\begin{enumerate} 502 502 \begin{enumerate}
\setcounter{enumi}{4} 503 503 \setcounter{enumi}{4}
\itemsep1pt\parskip0pt\parsep0pt 504 504 \itemsep1pt\parskip0pt\parsep0pt
\item 505 505 \item
{The System shall create a new password reset token for the user} 506 506 {The System shall create a new password reset token for the user}
\item 507 507 \item
{The System shall send an email to the user with a link containing the token and the 508 508 {The System shall send an email to the user with a link containing the token and the
user's ID} 509 509 user's ID}
\item 510 510 \item
{UserX shall click the link in the email and visit 511 511 {UserX shall click the link in the email and visit
/app/password\_reset} 512 512 /app/password\_reset}
\item 513 513 \item
{The System shall render a form that will prompt the user for a new 514 514 {The System shall render a form that will prompt the user for a new
password} 515 515 password}
\item 516 516 \item
{UserX shall provide a new password ``newPassword'' in the form} 517 517 {UserX shall provide a new password ``newPassword'' in the form}
\item 518 518 \item
{The System shall change the password associated with the user's email. } 519 519 {The System shall change the password associated with the user's email. }
\end{enumerate} 520 520 \end{enumerate}
\item[Expected Result:] {UserX's password will change to ``newPasword''.} 521 521 \item[Expected Result:] {UserX's password will change to ``newPasword''.}
522 522
\begin{enumerate} 523 523 \begin{enumerate}
\setcounter{enumi}{4} 524 524 \setcounter{enumi}{4}
\itemsep1pt\parskip0pt\parsep0pt 525 525 \itemsep1pt\parskip0pt\parsep0pt
\item 526 526 \item
{If no such account exists, the System shall display a modal display ``Cannot find account.'' to UserX.} 527 527 {If no such account exists, the System shall display a modal display ``Cannot find account.'' to UserX.}
\end{enumerate} 528 528 \end{enumerate}
529 529
\item[Expected Result:] {UserX's password will not be reset.} 530 530 \item[Expected Result:] {UserX's password will not be reset.}
531 531
\end{description} 532 532 \end{description}
\newpage 533 533 \newpage
534 534
{} 535 535 {}
536 536
\subsection{[A7] Limit Student Access to Courses - Planned} 537 537 \subsection{[A7] Limit Student Access to Courses - Planned}
538 538
\begin{description} 539 539 \begin{description}
\item[Description:]{The instructor shall be able to limit access to the 540 540 \item[Description:]{The instructor shall be able to limit access to the
courses that he is in charge of by whitelisting only those students that 541 541 courses that he is in charge of by whitelisting only those students that
are actually in the class.} 542 542 are actually in the class.}
543 543
\item[Desired Outcome:]{The class will have limited access and only those 544 544 \item[Desired Outcome:]{The class will have limited access and only those
users who are whitelisted may enroll in the class.} 545 545 users who are whitelisted may enroll in the class.}
\\ 546 546 \\
\item[User Goals:]{The instructor wants to limit access to his class so only 547 547 \item[User Goals:]{The instructor wants to limit access to his class so only
the students who are actually in his class participate, and nobody 548 548 the students who are actually in his class participate, and nobody
else.} 549 549 else.}
550 550
\item[Primary Actor:] {User (instructor)} 551 551 \item[Primary Actor:] {User (instructor)}
552 552
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login} 553 553 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login}
\\ 554 554 \\
\item[Priority Level:]{``Should''} 555 555 \item[Priority Level:]{``Should''}
556 556
\item[Status:]{Not Implemented} 557 557 \item[Status:]{Not Implemented}
558 558
\item[Preconditions:] 559 559 \item[Preconditions:]
560 560
\begin{itemize} 561 561 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 562 562 \itemsep1pt\parskip0pt\parsep0pt
\item 563 563 \item
{User has valid instructor's account} 564 564 {User has valid instructor's account}
\end{itemize} 565 565 \end{itemize}
566 566
\item[Postconditions:] 567 567 \item[Postconditions:]
568 568
\begin{itemize} 569 569 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 570 570 \itemsep1pt\parskip0pt\parsep0pt
\item 571 571 \item
{Only those users who were whitelisted may add the class.} 572 572 {Only those users who were whitelisted may add the class.}
\end{itemize} 573 573 \end{itemize}
574 574
\item[Trigger:]{The instructor emails the administrator and requests to 575 575 \item[Trigger:]{The instructor emails the administrator and requests to
limit access to his class.} 576 576 limit access to his class.}
577 577
\item[Workflow:] 578 578 \item[Workflow:]
579 579
\begin{enumerate} 580 580 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 581 581 \itemsep1pt\parskip0pt\parsep0pt
\item 582 582 \item
{The instructor, ``INSTR1'', shall email the administrators from his UCSD email address 583 583 {The instructor, ``INSTR1'', shall email the administrators from his UCSD email address
and requests to limit access to his course.} 584 584 and requests to limit access to his course.}
\item 585 585 \item
{ INSTR1 shall provide a list of 586 586 { INSTR1 shall provide a list of
emails of the students that are to be whitelisted.} 587 587 emails of the students that are to be whitelisted.}
\item 588 588 \item
{The administrators shall visit a custom admin page, select the course, and 589 589 {The administrators shall visit a custom admin page, select the course, and
paste the list of emails.} 590 590 paste the list of emails.}
\item 591 591 \item
{The administrators shall submit the page directly to the System.} 592 592 {The administrators shall submit the page directly to the System.}
\item 593 593 \item
{The System shall create a WhitelistedAddress for each provided email, 594 594 {The System shall create a WhitelistedAddress for each provided email,
attaching it to the section taught by INST1.} 595 595 attaching it to the section taught by INST1.}
\item 596 596 \item
{The System shall add any existing users whose email addresses appear 597 597 {The System shall add any existing users whose email addresses appear
in the whitelist to the class. } 598 598 in the whitelist to the class. }
\end{enumerate} 599 599 \end{enumerate}
600 600
\item[Expected Result:] {A whitelist is added to a section.} 601 601 \item[Expected Result:] {A whitelist is added to a section.}
\end{description} 602 602 \end{description}
\newpage 603 603 \newpage
604 604
{} 605 605 {}
606 606
\subsection{[A8] User Logout} 607 607 \subsection{[A8] User Logout}
608 608
\begin{description} 609 609 \begin{description}
\item[Description:]{The user shall be able to log out of his/her account on 610 610 \item[Description:]{The user shall be able to log out of his/her account on
the site.} 611 611 the site.}
612 612
\item[Desired Outcome:]{The user's information and data will no longer be 613 613 \item[Desired Outcome:]{The user's information and data will no longer be
accessible after logging out. } 614 614 accessible after logging out. }
\\ 615 615 \\
\item[User Goals:]{The user is done with his/her session of using the 616 616 \item[User Goals:]{The user is done with his/her session of using the
website, and wants to make sure others cannot access the data in his/her 617 617 website, and wants to make sure others cannot access the data in his/her
account.} 618 618 account.}
619 619
\item[Dependency Use Cases:] None 620 620 \item[Dependency Use Cases:] None
\\ 621 621 \\
622 622
\item[Priority Level:]{``Must''} 623 623 \item[Priority Level:]{``Must''}
624 624
\item[Status:]{Implemented} 625 625 \item[Status:]{Implemented}
626 626
\item[Preconditions:]{The user is logged into their account} 627 627 \item[Preconditions:]{The user is logged into their account}
628 628
\item[Postconditions:]{The user's data can no longer be accessed.} 629 629 \item[Postconditions:]{The user's data can no longer be accessed.}
630 630
\item[Trigger:] 631 631 \item[Trigger:]
632 632
\item[Workflow:] 633 633 \item[Workflow:]
634 634
\begin{enumerate} 635 635 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 636 636 \itemsep1pt\parskip0pt\parsep0pt
\item 637 637 \item
{UserX shall click the ``Logout'' button.} 638 638 {UserX shall click the ``Logout'' button.}
\item 639 639 \item
{The System shall logs out UserX.} 640 640 {The System shall logs out UserX.}
\item 641 641 \item
{The System shall redirect UserX to the login page.} 642 642 {The System shall redirect UserX to the login page.}
\end{enumerate} 643 643 \end{enumerate}
644 644
\item[Expected Result:] {User is logged out and is redirected to the login page.} 645 645 \item[Expected Result:] {User is logged out and is redirected to the login page.}
\end{description} 646 646 \end{description}
647 647
\newpage 648 648 \newpage
649 649
{} 650 650 {}
651 651
\subsection{[A9] Contact Admin} 652 652 \subsection{[A9] Contact Admin}
653 653
\begin{description} 654 654 \begin{description}
\item[Description]{The user shall be able to contact the admin.} 655 655 \item[Description]{The user shall be able to contact the admin.}
656 656
\item[Desired Outcome]{The user shall send a message to the admin; the 657 657 \item[Desired Outcome]{The user shall send a message to the admin; the
admin shall receive the message.} 658 658 admin shall receive the message.}
659 659
{User Goals:}{The user sends a message to the admin.} 660 660 {User Goals:}{The user sends a message to the admin.}
661 661
\item[Primary Actor]{User} 662 662 \item[Primary Actor]{User}
663 663
\item[Dependency Use Cases]{None} 664 664 \item[Dependency Use Cases]{None}
\\ 665 665 \\
\item[Priority Level]{``Must''} 666 666 \item[Priority Level]{``Must''}
667 667
\item[Status]{Not implemented} 668 668 \item[Status]{Not implemented}
669 669
\item[Pre-conditions]{None.} 670 670 \item[Pre-conditions]{None.}
671 671
\item[Post-conditions]{The admin receives the user's message.} 672 672 \item[Post-conditions]{The admin receives the user's message.}
673 673
\item[Trigger]{UserX wants to contact the administrators of our application.} 674 674 \item[Trigger]{UserX wants to contact the administrators of our application.}
675 675
\item[Workflow] 676 676 \item[Workflow]
677 677
\begin{enumerate} 678 678 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 679 679 \itemsep1pt\parskip0pt\parsep0pt
\item 680 680 \item
{The System shall display the admin email address on every page in the 681 681 {The System shall display the admin email address on every page in the
application.} 682 682 application.}
\end{enumerate} 683 683 \end{enumerate}
684 684
\item[Expect Result:] {The admin's email address can be seen by UserX on every page.} 685 685 \item[Expect Result:] {The admin's email address can be seen by UserX on every page.}
\end{description} 686 686 \end{description}
\newpage 687 687 \newpage
688 688
\subsection{[A10] Configure Account Notifications} 689 689 \subsection{[A10] Configure Account Notifications}
\begin{description} 690 690 \begin{description}
\item[Description]{This test case outlines the presentation layering step process of a user configuring notification settings.} 691 691 \item[Description]{This test case outlines the presentation layering step process of a user configuring notification settings.}
692 692
\item[Desired Outcome]{The User shall only receive notifications at the 693 693 \item[Desired Outcome]{The User shall only receive notifications at the
times that were specified} 694 694 times that were specified}
\\ 695 695 \\
\item[User Goals]{The User shall not be bothered needlessly or at 696 696 \item[User Goals]{The User shall not be bothered needlessly or at
inconvenient times} 697 697 inconvenient times}
698 698
\item[Primary Actor]{User (student)} 699 699 \item[Primary Actor]{User (student)}
700 700
\item[Dependency Use Cases:]{{[}A1{]} User Registration, {[}A2{]} User 701 701 \item[Dependency Use Cases:]{{[}A1{]} User Registration, {[}A2{]} User
Login} 702 702 Login}
\\ 703 703 \\
704 704
\item[Priority Level]{``Must''} 705 705 \item[Priority Level]{``Must''}
706 706
\item[Status]{In progress} 707 707 \item[Status]{In progress}
708 708
\item[Preconditions] 709 709 \item[Preconditions]
710 710
\begin{itemize} 711 711 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 712 712 \itemsep1pt\parskip0pt\parsep0pt
\item 713 713 \item
{The User has registered with the email testuser@flashy.cards. } 714 714 {The User has registered with the email testuser@flashy.cards. }
\item 715 715 \item
{The user has verified their email address.} 716 716 {The user has verified their email address.}
\item {The User is logged in with the above email.} 717 717 \item {The User is logged in with the above email.}
\end{itemize} 718 718 \end{itemize}
719 719
\item[Postconditions] 720 720 \item[Postconditions]
721 721
\begin{itemize} 722 722 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 723 723 \itemsep1pt\parskip0pt\parsep0pt
\item 724 724 \item
{User only receive notifications at specified times} 725 725 {User only receive notifications at specified times}
\end{itemize} 726 726 \end{itemize}
727 727
\item[Trigger]{UserX wants to change their notification settings} 728 728 \item[Trigger]{UserX wants to change their notification settings}
729 729
\item[Workflow] 730 730 \item[Workflow]
731 731
\begin{enumerate} 732 732 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 733 733 \itemsep1pt\parskip0pt\parsep0pt
\item 734 734 \item
{UserX shall select ``Account Settings'' button from the top header.} 735 735 {UserX shall select ``Account Settings'' button from the top header.}
\item 736 736 \item
{The System shall display a settings screen.} 737 737 {The System shall display a settings screen.}
\item 738 738 \item
{UserX shall change the notification timing to 1 min.} 739 739 {UserX shall change the notification timing to 1 min.}
\item 740 740 \item
{UserX shall click ``Save Settings'' button.} 741 741 {UserX shall click ``Save Settings'' button.}
\item 742 742 \item
{The System shall display a message confirming the settings are saved.} 743 743 {The System shall display a message confirming the settings are saved.}
\item 744 744 \item
{The System shall save notification settings to the user's attributes.} 745 745 {The System shall save notification settings to the user's attributes.}
\end{enumerate} 746 746 \end{enumerate}
747 747
\item[Expected Results]{UserX shall be notified at least as slow as 1 min.} 748 748 \item[Expected Results]{UserX shall be notified at least as slow as 1 min.}
\end{description} 749 749 \end{description}
750 750
\newpage 751 751 \newpage
\section{Flashcards} 752 752 \section{Flashcards}
\subsection{[F1] Push Flashcard} 753 753 \subsection{[F1] Push Flashcard}
754 754
\begin{description} 755 755 \begin{description}
\item[Description:]{ This Test Case outlines the presentation layer step process of a User contributing a flashcard to the Live Feed and to their deck. } 756 756 \item[Description:]{ This Test Case outlines the presentation layer step process of a User contributing a flashcard to the Live Feed and to their deck. }
757 757
\item[Desired Outcome:]{The user shall have the flashcard added to their own deck and the Live Feed.} 758 758 \item[Desired Outcome:]{The user shall have the flashcard added to their own deck and the Live Feed.}
\\ 759 759 \\
\item[User Goals:]{The user will see their flashcard in their deck and the flashcard will be shared with others.} 760 760 \item[User Goals:]{The user will see their flashcard in their deck and the flashcard will be shared with others.}
761 761
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login, [A3] Add a Class} 762 762 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User Login, [A3] Add a Class}
\\ 763 763 \\
\item[Preconditions:] 764 764 \item[Preconditions:]
765 765
\begin{itemize} 766 766 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 767 767 \itemsep1pt\parskip0pt\parsep0pt
\item 768 768 \item
{UserX has registered with the email testuser@flashy.cards and password ``test''. } 769 769 {UserX has registered with the email testuser@flashy.cards and password ``test''. }
\item 770 770 \item
{UserY has registered with the email TEST1@flashy.cards and password ``test''. } 771 771 {UserY has registered with the email TEST1@flashy.cards and password ``test''. }
\item 772 772 \item
{UserX and UserY have verified their email addresses.} 773 773 {UserX and UserY have verified their email addresses.}
\item {UserX and UserY are logged in with their respective emails.} 774 774 \item {UserX and UserY are logged in with their respective emails.}
\item 775 775 \item
{UserX and UserY have added the class TEST 1.} 776 776 {UserX and UserY have added the class TEST 1.}
\item 777 777 \item
{UserX and UserY are on the Live Feed for TEST 1.} 778 778 {UserX and UserY are on the Live Feed for TEST 1.}
\end{itemize} 779 779 \end{itemize}
780 780
\item[Postconditions:] 781 781 \item[Postconditions:]
782 782
\begin{itemize} 783 783 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 784 784 \itemsep1pt\parskip0pt\parsep0pt
\item 785 785 \item
{UserX has flashcard added to their deck.} 786 786 {UserX has flashcard added to their deck.}
\item 787 787 \item
{The Flashcard is shown in the Live Feed.} 788 788 {The Flashcard is shown in the Live Feed.}
\item 789 789 \item
{UserY and other users can add this flashcard to their decks.} 790 790 {UserY and other users can add this flashcard to their decks.}
\end{itemize} 791 791 \end{itemize}
792 792
\item[Trigger:]{UserX wants to make a flashcard.} 793 793 \item[Trigger:]{UserX wants to make a flashcard.}
794 794
\item[Workflow:] 795 795 \item[Workflow:]
796 796
\begin{enumerate} 797 797 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 798 798 \itemsep1pt\parskip0pt\parsep0pt
\item {UserX has clicked the circular plus button (``Create Card'' button) in the lower right corner of the Live Feed.} 799 799 \item {UserX has clicked the circular plus button (``Create Card'' button) in the lower right corner of the Live Feed.}
\item 800 800 \item
{The System shall present a modal with a text box.} 801 801 {The System shall present a modal with a text box.}
\item 802 802 \item
{UserX shall select the input field of the modal and type ``The rain in Spain stays mainly in the plain''.} 803 803 {UserX shall select the input field of the modal and type ``The rain in Spain stays mainly in the plain''.}
\item 804 804 \item
{UserX shall select the ``Contribute'' button in the modal.} 805 805 {UserX shall select the ``Contribute'' button in the modal.}
\item 806 806 \item
{The System shall add the new card containing the text ``The rain in Spain stays mainly in the plain'' to the feed of each user enrolled in ``TEST 1''.} 807 807 {The System shall add the new card containing the text ``The rain in Spain stays mainly in the plain'' to the feed of each user enrolled in ``TEST 1''.}
\item 808 808 \item
{UserY shall see the card appear in their feed within a minute (See Notes).} 809 809 {UserY shall see the card appear in their feed within a minute (See Notes).}
\item 810 810 \item
{The System shall hide the modal from UserX.} 811 811 {The System shall hide the modal from UserX.}
\item 812 812 \item
{The flashcard shall be included in the UserX's deck.(c.f. Note 2 for procedure.} 813 813 {The flashcard shall be included in the UserX's deck.(c.f. Note 2 for procedure.}
814 814
\end{enumerate} 815 815 \end{enumerate}
816 816
\item[Expected Result:] {UserX will have the new flashcard in their deck, and the new flashcard will show up on the live feed of class TEST 1.} 817 817 \item[Expected Result:] {UserX will have the new flashcard in their deck, and the new flashcard will show up on the live feed of class TEST 1.}
818 818
\item[Alternative Workflow:] 819 819 \item[Alternative Workflow:]
\begin{enumerate} 820 820 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 821 821 \itemsep1pt\parskip0pt\parsep0pt
\item 822 822 \item
{The System shall present a modal with a text box.} 823 823 {The System shall present a modal with a text box.}
\item 824 824 \item
{UserX shall select the input field of the modal and type ``The rain in Spain stays mainly in the plain''.} 825 825 {UserX shall select the input field of the modal and type ``The rain in Spain stays mainly in the plain''.}
\item 826 826 \item
{UserX shall user their cursor to select the word Spain in the text box, then click the ``Blank Word'' button.} 827 827 {UserX shall user their cursor to select the word Spain in the text box, then click the ``Blank Word'' button.}
\item 828 828 \item
{The System shall bold the word Spain.} 829 829 {The System shall bold the word Spain.}
\item 830 830 \item
{UserX shall use the cursor to select the word ``plain'' in the text box, then click the ``Blank Word'' button.} 831 831 {UserX shall use the cursor to select the word ``plain'' in the text box, then click the ``Blank Word'' button.}
\item 832 832 \item
{The System shall bold the word plain.} 833 833 {The System shall bold the word plain.}
\item 834 834 \item
{UserX shall click the ``Contribute'' button in the dialog.} 835 835 {UserX shall click the ``Contribute'' button in the dialog.}
\item 836 836 \item
{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 1.} 837 837 {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 1.}
\item 838 838 \item
{UserY shall view the Live Feed and within a minute see the new flashcard appear with ``Spain'' and ``plain'' bolded.} 839 839 {UserY shall view the Live Feed and within a minute see the new flashcard appear with ``Spain'' and ``plain'' bolded.}
\end{enumerate} 840 840 \end{enumerate}
841 841
\item[Expected Result:] {UserX will have the new flashcard with the words ``Spain'' and ``plain'' bolded and the new flashcard will appear visible to UserX and UserY on the Live Feed of the class TEST 1.} 842 842 \item[Expected Result:] {UserX will have the new flashcard with the words ``Spain'' and ``plain'' bolded and the new flashcard will appear visible to UserX and UserY on the Live Feed of the class TEST 1.}
843 843
\end{description} 844 844 \end{description}
\newpage 845 845 \newpage
846 846
{} 847 847 {}
848 848
\subsection{[F2] Edit Flashcard} 849 849 \subsection{[F2] Edit Flashcard}
850 850
\begin{description} 851 851 \begin{description}
\item[Description:]{This test case outlines the presentation layering step process of a user editting a flashcard.} 852 852 \item[Description:]{This test case outlines the presentation layering step process of a user editting a flashcard.}
853 853
\item[Desired Outcome:]{Flashcard is edited and saved appropriately} 854 854 \item[Desired Outcome:]{Flashcard is edited and saved appropriately}
\\ 855 855 \\
856 856
\item[User Goals:]{To be able to change the text, the blanked words, and the study date on a flashcard.} 857 857 \item[User Goals:]{To be able to change the text, the blanked words, and the study date on a flashcard.}
858 858
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 859 859 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard, [F3] Pull Flashcard} 860 860 Login, [A3] Add a Class, [F1] Push Flashcard, [F3] Pull Flashcard}
861 861
\item[Preconditions:] 862 862 \item[Preconditions:]
863 863
\begin{itemize} 864 864 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 865 865 \itemsep1pt\parskip0pt\parsep0pt
\item 866 866 \item
{The User has registered with the email testuser@flashy.cards. } 867 867 {The User has registered with the email testuser@flashy.cards. }
\item 868 868 \item
{The user has verified their email address.} 869 869 {The user has verified their email address.}
\item {The User is logged in with the above email.} 870 870 \item {The User is logged in with the above email.}
\item 871 871 \item
{The User has added the class TEST EDIT} 872 872 {The User has added the class TEST EDIT}
\item 873 873 \item
{The User is their deck for TEST EDIT.} 874 874 {The User is their deck for TEST EDIT.}
\end{itemize} 875 875 \end{itemize}
876 876
\item[Postconditions:] 877 877 \item[Postconditions:]
878 878
\begin{itemize} 879 879 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 880 880 \itemsep1pt\parskip0pt\parsep0pt
\item 881 881 \item
{Flashcard is edited} 882 882 {Flashcard is edited}
\end{itemize} 883 883 \end{itemize}
884 884
\item[Trigger:]{The User wants to edit their card.} 885 885 \item[Trigger:]{The User wants to edit their card.}
886 886
\item[Workflow:] 887 887 \item[Workflow:]
888 888
\begin{enumerate} 889 889 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 890 890 \itemsep1pt\parskip0pt\parsep0pt
\item 891 891 \item
{UserX shall move the cursor over the flashcard ``this is made for edit''.} 892 892 {UserX shall move the cursor over the flashcard ``this is made for edit''.}
\item 893 893 \item
{UserX shall click the edit button on bottom left of the selected flashcard.} 894 894 {UserX shall click the edit button on bottom left of the selected flashcard.}
\item 895 895 \item
{The System shall present a modal that contains the text of the selected flashcard.} 896 896 {The System shall present a modal that contains the text of the selected flashcard.}
\item 897 897 \item
{UserX shall be able to change the text to ``Edit has been made''.} 898 898 {UserX shall be able to change the text to ``Edit has been made''.}
\item 899 899 \item
{UserX shall click 'Save'} 900 900 {UserX shall click 'Save'}
\item 901 901 \item
{The System shall hide the model from UserX.} 902 902 {The System shall hide the model from UserX.}
\end{enumerate} 903 903 \end{enumerate}
904 904
\item[Expected Results:]{The selected flashcard's text shall be changed to ``Edit has been made''.} 905 905 \item[Expected Results:]{The selected flashcard's text shall be changed to ``Edit has been made''.}
906 906
\item[Alternative Workflow A:] 907 907 \item[Alternative Workflow A:]
908 908
\begin{enumerate} 909 909 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 910 910 \itemsep1pt\parskip0pt\parsep0pt
\item 911 911 \item
{UserX shall move the cursor over the flash card ``this is made for edit2''.} 912 912 {UserX shall move the cursor over the flash card ``this is made for edit2''.}
\item 913 913 \item
{UserX shall click the edit button on bottom left of the selected flashcard.} 914 914 {UserX shall click the edit button on bottom left of the selected flashcard.}
\item 915 915 \item
{The System shall present a modal that contains the text of the selected flashcard.} 916 916 {The System shall present a modal that contains the text of the selected flashcard.}
\item 917 917 \item
{UserX shall be able to change the bolded text from ``edit2'' to ``fun'' by highlighting the words and click blank words.} 918 918 {UserX shall be able to change the bolded text from ``edit2'' to ``fun'' by highlighting the words and click blank words.}
\item 919 919 \item
{UserX shall click 'Save'} 920 920 {UserX shall click 'Save'}
\item 921 921 \item
{The System shall hide the modal from UserX.} 922 922 {The System shall hide the modal from UserX.}
\item 923 923 \item
{The selected flashcard's blanked words shall be changed to ``fun''.} 924 924 {The selected flashcard's blanked words shall be changed to ``fun''.}
\end{enumerate} 925 925 \end{enumerate}
926 926
\item[Expected Result:]{The selected flashcard's blanked words shall be changed to ``fun''.} 927 927 \item[Expected Result:]{The selected flashcard's blanked words shall be changed to ``fun''.}
928 928
\item[Alternative Workflow B:] 929 929 \item[Alternative Workflow B:]
930 930
\begin{enumerate} 931 931 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 932 932 \itemsep1pt\parskip0pt\parsep0pt
\item 933 933 \item
{UserX shall move the cursor over the flash card ``this is made for edit3''.} 934 934 {UserX shall move the cursor over the flash card ``this is made for edit3''.}
\item 935 935 \item
{UserX shall click the edit button on bottom left of the selected flashcard.} 936 936 {UserX shall click the edit button on bottom left of the selected flashcard.}
\item 937 937 \item
{The System shall present a modal that contains the text of the selected flashcard.} 938 938 {The System shall present a modal that contains the text of the selected flashcard.}
\item 939 939 \item
{UserX shall be able the study date to 6/12.} 940 940 {UserX shall be able the study date to 6/12.}
\item 941 941 \item
{UserX shall click 'Save'} 942 942 {UserX shall click 'Save'}
\item 943 943 \item
{The System shall hide the modal from UserX.} 944 944 {The System shall hide the modal from UserX.}
\end{enumerate} 945 945 \end{enumerate}
946 946
\item[Expected Result:]{The selected flashcard's study date shall be changed to 6/12.} 947 947 \item[Expected Result:]{The selected flashcard's study date shall be changed to 6/12.}
\end{description} 948 948 \end{description}
949 949
\newpage 950 950 \newpage
951 951
{} 952 952 {}
953 953
\subsection{[F3] Pull Flashcard} 954 954 \subsection{[F3] Pull Flashcard}
\begin{description} 955 955 \begin{description}
\item[Description:]{This test case outlines the presentation layering step 956 956 \item[Description:]{This test case outlines the presentation layering step
process of a user pulling a flashcard.} 957 957 process of a user pulling a flashcard.}
958 958
\item[Desired Outcome:]{The User shall have the flashcard added to their own 959 959 \item[Desired Outcome:]{The User shall have the flashcard added to their own
deck } 960 960 deck }
\\ 961 961 \\
962 962
\item[User Goals:]{The user will be able to review that flashcard. } 963 963 \item[User Goals:]{The user will be able to review that flashcard. }
964 964
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 965 965 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashard} 966 966 Login, [A3] Add a Class, [F1] Push Flashard}
\\ 967 967 \\
968 968
\item[Priority Level:]{``Must'' } 969 969 \item[Priority Level:]{``Must'' }
970 970
\item[Status:]{Not Implemented} 971 971 \item[Status:]{Not Implemented}
972 972
\item[Preconditions:] 973 973 \item[Preconditions:]
974 974
\begin{itemize} 975 975 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 976 976 \itemsep1pt\parskip0pt\parsep0pt
\item 977 977 \item
{User has registered for a class.} 978 978 {User has registered for a class.}
\item 979 979 \item
{User is at live feed for said class.} 980 980 {User is at live feed for said class.}
\item 981 981 \item
{Flashcard with text ``TESTY FLASHY'' has been created.} 982 982 {Flashcard with text ``TESTY FLASHY'' has been created.}
\item 983 983 \item
{That flashcard with the text ``TESTY FLASHY'' is in the Live Feed of class TEST 1.} 984 984 {That flashcard with the text ``TESTY FLASHY'' is in the Live Feed of class TEST 1.}
\end{itemize} 985 985 \end{itemize}
986 986
\item[Postconditions:] 987 987 \item[Postconditions:]
988 988
\begin{itemize} 989 989 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 990 990 \itemsep1pt\parskip0pt\parsep0pt
\item 991 991 \item
{User shall have that flashcard with the text ``TESTY FLASHY'' added to their deck} 992 992 {User shall have that flashcard with the text ``TESTY FLASHY'' added to their deck}
\item 993 993 \item
{User can review this flashcard later} 994 994 {User can review this flashcard later}
\end{itemize} 995 995 \end{itemize}
996 996
\item[Trigger:]{UserX wants to add a flashcard to their deck to study it.} 997 997 \item[Trigger:]{UserX wants to add a flashcard to their deck to study it.}
998 998
\item[Workflow:] 999 999 \item[Workflow:]
1000 1000
\begin{enumerate} 1001 1001 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1002 1002 \itemsep1pt\parskip0pt\parsep0pt
\item 1003 1003 \item
{UserX shall choose the flashcard with the text ``TESTY FLASHY'' from the class TEST 1 feed and hover their cursor 1004 1004 {UserX shall choose the flashcard with the text ``TESTY FLASHY'' from the class TEST 1 feed and hover their cursor
over it.} 1005 1005 over it.}
\item 1006 1006 \item
{The System shall present buttons on mouseover.} 1007 1007 {The System shall present buttons on mouseover.}
\item 1008 1008 \item
{UserX shall click on the large plus that appears over the flashcard with the text ``TESTY FLASHY''.} 1009 1009 {UserX shall click on the large plus that appears over the flashcard with the text ``TESTY FLASHY''.}
\item 1010 1010 \item
{The System shall hide the flashcard with the text ``TESTY FLASHY'' from the class TEST 1 feed for UserX.} 1011 1011 {The System shall hide the flashcard with the text ``TESTY FLASHY'' from the class TEST 1 feed for UserX.}
\item 1012 1012 \item
{UserX shall check that card with the text ``TESTY FLASHY'' has been added to their class TEST 1 deck by checking API.} 1013 1013 {UserX shall check that card with the text ``TESTY FLASHY'' has been added to their class TEST 1 deck by checking API.}
\end{enumerate} 1014 1014 \end{enumerate}
1015 1015
\item[Expected Result:] {The flashcard with the text ``TESTY FLASHY'' is in the class TEST 1 deck.} 1016 1016 \item[Expected Result:] {The flashcard with the text ``TESTY FLASHY'' is in the class TEST 1 deck.}
\end{description} 1017 1017 \end{description}
\newpage 1018 1018 \newpage
1019 1019
{} 1020 1020 {}
1021 1021
\subsection{[F4] Flag Inappropriate Cards} 1022 1022 \subsection{[F4] Flag Inappropriate Cards}
1023 1023
\begin{description} 1024 1024 \begin{description}
\item[Description:]{This test case outlines the presentation layering step 1025 1025 \item[Description:]{This test case outlines the presentation layering step
process of a user flagging a card they have deemed inappropriate.} 1026 1026 process of a user flagging a card they have deemed inappropriate.}
1027 1027
\item[Desired Outcome:]{The flashcard's inappropriateness variable is 1028 1028 \item[Desired Outcome:]{The flashcard's inappropriateness variable is
adjusted} 1029 1029 adjusted}
\\ 1030 1030 \\
\item[User Goals:]{To note if a card should not belong in the class and 1031 1031 \item[User Goals:]{To note if a card should not belong in the class and
should not be displayed in the feed} 1032 1032 should not be displayed in the feed}
1033 1033
\item[Primary Actor:]{User (Student)} 1034 1034 \item[Primary Actor:]{User (Student)}
1035 1035
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 1036 1036 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard} 1037 1037 Login, [A3] Add a Class, [F1] Push Flashcard}
\\ 1038 1038 \\
\item[Priority Level:]{``Should''} 1039 1039 \item[Priority Level:]{``Should''}
1040 1040
\item[Status:]{Unimplemented} 1041 1041 \item[Status:]{Unimplemented}
1042 1042
\item[Preconditions:] 1043 1043 \item[Preconditions:]
\begin{itemize} 1044 1044 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1045 1045 \itemsep1pt\parskip0pt\parsep0pt
\item 1046 1046 \item
{UserX has registered for a class TEST 1.} 1047 1047 {UserX has registered for a class TEST 1.}
\item 1048 1048 \item
{UserX is in the live feed for class TEST 1.} 1049 1049 {UserX is in the live feed for class TEST 1.}
\item 1050 1050 \item
{Flashcard has been created.} 1051 1051 {Flashcard has been created.}
\item 1052 1052 \item
{That flashcard is in the Live Feed.} 1053 1053 {That flashcard is in the Live Feed.}
\end{itemize} 1054 1054 \end{itemize}
1055 1055
\item[Postconditions:] 1056 1056 \item[Postconditions:]
1057 1057
\begin{itemize} 1058 1058 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1059 1059 \itemsep1pt\parskip0pt\parsep0pt
\item 1060 1060 \item
{User shall have that flashcard added to their deck} 1061 1061 {User shall have that flashcard added to their deck}
\item 1062 1062 \item
{User can review this flashcard later} 1063 1063 {User can review this flashcard later}
\end{itemize} 1064 1064 \end{itemize}
1065 1065
\item[Trigger:]{UserX wants to mark a card innapropriate.} 1066 1066 \item[Trigger:]{UserX wants to mark a card innapropriate.}
1067 1067
\item[Workflow:] 1068 1068 \item[Workflow:]
1069 1069
\begin{enumerate} 1070 1070 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1071 1071 \itemsep1pt\parskip0pt\parsep0pt
\item 1072 1072 \item
{UserX shall choose the flashcard with the text ``TESTY FLASHY'' from the feed and hover their cursor 1073 1073 {UserX shall choose the flashcard with the text ``TESTY FLASHY'' from the feed and hover their cursor
over it.} 1074 1074 over it.}
\item 1075 1075 \item
{The System shall present buttons on mouseover.} 1076 1076 {The System shall present buttons on mouseover.}
\item 1077 1077 \item
{UserX shall click on the flag icon that appears on the card.} 1078 1078 {UserX shall click on the flag icon that appears on the card.}
\item 1079 1079 \item
{The System shall mark the card as flagged and hide the card from the 1080 1080 {The System shall mark the card as flagged and hide the card from the
feed for the User.} 1081 1081 feed for the User.}
\end{enumerate} 1082 1082 \end{enumerate}
1083 1083
\item[Expected Result:] {The flashycard with the text ``TESTY FLASHY'' will be flagged for inappropriateness.} 1084 1084 \item[Expected Result:] {The flashycard with the text ``TESTY FLASHY'' will be flagged for inappropriateness.}
\end{description} 1085 1085 \end{description}
1086 1086
\newpage 1087 1087 \newpage
1088 1088
{} 1089 1089 {}
1090 1090
\subsection{[F5] Filter Flashcards} 1091 1091 \subsection{[F5] Filter Flashcards}
1092 1092
\begin{description} 1093 1093 \begin{description}
\item[Description:]{This test case outlines the presentation layering step 1094 1094 \item[Description:]{This test case outlines the presentation layering step
process of a user filtering existing flashcards to view only a specified subset.} 1095 1095 process of a user filtering existing flashcards to view only a specified subset.}
1096 1096
\item[Desired Outcome:]{The user shall see flashcards based on the filter 1097 1097 \item[Desired Outcome:]{The user shall see flashcards based on the filter
options} 1098 1098 options}
1099 1099
\item[User Goals:]{The user can find what he/she is specifically looking 1100 1100 \item[User Goals:]{The user can find what he/she is specifically looking
for} 1101 1101 for}
1102 1102
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 1103 1103 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard, [F3] Pull 1104 1104 Login, [A3] Add a Class, [F1] Push Flashcard, [F3] Pull
Flashcard} 1105 1105 Flashcard}
\\ 1106 1106 \\
\item[Priority Level:]{``Should''} 1107 1107 \item[Priority Level:]{``Should''}
1108 1108
\item[Status:]{Not Implemented } 1109 1109 \item[Status:]{Not Implemented }
1110 1110
\item[Preconditions:] 1111 1111 \item[Preconditions:]
1112 1112
\begin{itemize} 1113 1113 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1114 1114 \itemsep1pt\parskip0pt\parsep0pt
\item 1115 1115 \item
{UserX has registered for the class TEST 1.} 1116 1116 {UserX has registered for the class TEST 1.}
\item 1117 1117 \item
{Flashcards exist in the course} 1118 1118 {Flashcards exist in the course}
\item 1119 1119 \item
{USerX is at Card List View for the class.} 1120 1120 {USerX is at Card List View for the class.}
\end{itemize} 1121 1121 \end{itemize}
1122 1122
\item[Postconditions:] 1123 1123 \item[Postconditions:]
1124 1124
\begin{itemize} 1125 1125 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1126 1126 \itemsep1pt\parskip0pt\parsep0pt
\item 1127 1127 \item
{User only sees specific flashcards} 1128 1128 {User only sees specific flashcards}
\end{itemize} 1129 1129 \end{itemize}
1130 1130
\item[Trigger:]{User is looking for specific flashcards.} 1131 1131 \item[Trigger:]{User is looking for specific flashcards.}
1132 1132
\item[Workflow:] 1133 1133 \item[Workflow:]
1134 1134
\begin{enumerate} 1135 1135 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1136 1136 \itemsep1pt\parskip0pt\parsep0pt
\item 1137 1137 \item
{UserX shall select certain tags (checkboxes) from top box.} 1138 1138 {UserX shall select certain tags (checkboxes) from top box.}
\item 1139 1139 \item
{UserX shall click ``Filter'' button.} 1140 1140 {UserX shall click ``Filter'' button.}
\item 1141 1141 \item
{The System shall display only cards sorted under those tags in list.} 1142 1142 {The System shall display only cards sorted under those tags in list.}
\end{enumerate} 1143 1143 \end{enumerate}
1144 1144
\item[Expected Result:] {Flashcards are filtered.} 1145 1145 \item[Expected Result:] {Flashcards are filtered.}
\end{description} 1146 1146 \end{description}
1147 1147
\newpage 1148 1148 \newpage
1149 1149
{} 1150 1150 {}
1151 1151
\subsection{[F6] Blank Out Words in Flashcard} 1152 1152 \subsection{[F6] Blank Out Words in Flashcard}
1153 1153
\begin{description} 1154 1154 \begin{description}
\item[Description:]{The User shall be able to blank out keywords in any 1155 1155 \item[Description:]{The User shall be able to blank out keywords in any
flashcard in his deck. } 1156 1156 flashcard in his deck. }
1157 1157
\item[Desired Outcome:]{The blanked out words in the flashcard notify the 1158 1158 \item[Desired Outcome:]{The blanked out words in the flashcard notify the
System that they are keywords. } 1159 1159 System that they are keywords. }
\\ 1160 1160 \\
1161 1161
\item[User Goals:]{The User shall mark some words as keywords so the System 1162 1162 \item[User Goals:]{The User shall mark some words as keywords so the System
may later quiz theirself by blanking out the keywords and having the 1163 1163 may later quiz theirself by blanking out the keywords and having the
User guess what they are.} 1164 1164 User guess what they are.}
1165 1165
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 1166 1166 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard} 1167 1167 Login, [A3] Add a Class, [F1] Push Flashcard}
\\ 1168 1168 \\
1169 1169
\item[Preconditions:] 1170 1170 \item[Preconditions:]
1171 1171
\begin{itemize} 1172 1172 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1173 1173 \itemsep1pt\parskip0pt\parsep0pt
\item 1174 1174 \item
{The User has registered with the email testuser@flashy.cards.} 1175 1175 {The User has registered with the email testuser@flashy.cards.}
\item 1176 1176 \item
{The User has verified their email address.} 1177 1177 {The User has verified their email address.}
\item 1178 1178 \item
{The User is logged in with the above email.} 1179 1179 {The User is logged in with the above email.}
\item 1180 1180 \item
{The User has enrolled in the class TEST 1.} 1181 1181 {The User has enrolled in the class TEST 1.}
\item 1182 1182 \item
{The User is at the Deck View for the class ``TEST 1''.} 1183 1183 {The User is at the Deck View for the class ``TEST 1''.}
\item 1184 1184 \item
{The User has created and added a flashcard to their deck with text 1185 1185 {The User has created and added a flashcard to their deck with text
``The rain in Spain stays mainly in the plain''.} 1186 1186 ``The rain in Spain stays mainly in the plain''.}
\end{itemize} 1187 1187 \end{itemize}
1188 1188
\item[Postconditions:] 1189 1189 \item[Postconditions:]
1190 1190
\begin{itemize} 1191 1191 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1192 1192 \itemsep1pt\parskip0pt\parsep0pt
\item 1193 1193 \item
{The blanked out words in the flashcard are marked} 1194 1194 {The blanked out words in the flashcard are marked}
\end{itemize} 1195 1195 \end{itemize}
1196 1196
\item[Workflow:] 1197 1197 \item[Workflow:]
1198 1198
\begin{enumerate} 1199 1199 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1200 1200 \itemsep1pt\parskip0pt\parsep0pt
\item 1201 1201 \item
{UserX shall click on the edit button on the flashcard in their deck.} 1202 1202 {UserX shall click on the edit button on the flashcard in their deck.}
\item 1203 1203 \item
{The System shall bring up the edit flashcard modal.} 1204 1204 {The System shall bring up the edit flashcard modal.}
\item 1205 1205 \item
{UserX shall select the input field bold ``Spain'' highlighting it and 1206 1206 {UserX shall select the input field bold ``Spain'' highlighting it and
pressing the blank out button.} 1207 1207 pressing the blank out button.}
\item 1208 1208 \item
{UserX shall click on `Save' or the equivalent button to save the 1209 1209 {UserX shall click on `Save' or the equivalent button to save the
changes.} 1210 1210 changes.}
\item 1211 1211 \item
{The System will save the blanked out word in the Flashcard Mask.} 1212 1212 {The System will save the blanked out word in the Flashcard Mask.}
\end{enumerate} 1213 1213 \end{enumerate}
1214 1214
\item[Expected Result:] {The System shall show ``Spain'' marked in the flashcard.} 1215 1215 \item[Expected Result:] {The System shall show ``Spain'' marked in the flashcard.}
1216 1216
\item[Alternative Workflow:] 1217 1217 \item[Alternative Workflow:]
1218 1218
\begin{enumerate} 1219 1219 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1220 1220 \itemsep1pt\parskip0pt\parsep0pt
\item 1221 1221 \item
{UserX shall click on the Feed View button.} 1222 1222 {UserX shall click on the Feed View button.}
\item 1223 1223 \item
{The System shall switch the view to Feed.} 1224 1224 {The System shall switch the view to Feed.}
\item 1225 1225 \item
{UserX shall click the plus button to add a card.} 1226 1226 {UserX shall click the plus button to add a card.}
\item 1227 1227 \item
{The System shall bring up the flashcard modal.} 1228 1228 {The System shall bring up the flashcard modal.}
\item 1229 1229 \item
{UserX shall select the input field bold ``Spain'' highlighting it and 1230 1230 {UserX shall select the input field bold ``Spain'' highlighting it and
pressing the blank out button.} 1231 1231 pressing the blank out button.}
\item 1232 1232 \item
{The System will save the blanked out word in the Flashcard Mask.} 1233 1233 {The System will save the blanked out word in the Flashcard Mask.}
\end{enumerate} 1234 1234 \end{enumerate}
1235 1235
\item[Expected Result:]{The System shall show ``Spain'' marked in the flashcard.} 1236 1236 \item[Expected Result:]{The System shall show ``Spain'' marked in the flashcard.}
\end{description} 1237 1237 \end{description}
\newpage 1238 1238 \newpage
1239 1239
{} 1240 1240 {}
1241 1241
\subsection{[F7] Fix Flashcard} 1242 1242 \subsection{[F7] Fix Flashcard}
1243 1243
\begin{description} 1244 1244 \begin{description}
\item[Description:]{The User shall be able to alter a flashcard he/she made 1245 1245 \item[Description:]{The User shall be able to alter a flashcard he/she made
originally and not have to make a new copy of it.} 1246 1246 originally and not have to make a new copy of it.}
1247 1247
\item[Desired Outcome:]{The User shall alter one flashcard and that 1248 1248 \item[Desired Outcome:]{The User shall alter one flashcard and that
alteration will be shown to all users of that flashcard} 1249 1249 alteration will be shown to all users of that flashcard}
\\ 1250 1250 \\
\item[User Goals:]{The user shall make the flashcard say something different 1251 1251 \item[User Goals:]{The user shall make the flashcard say something different
than it did originally.} 1252 1252 than it did originally.}
1253 1253
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 1254 1254 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard} 1255 1255 Login, [A3] Add a Class, [F1] Push Flashcard}
\\ 1256 1256 \\
1257 1257
\item[Preconditions]: 1258 1258 \item[Preconditions]:
1259 1259
\begin{itemize} 1260 1260 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1261 1261 \itemsep1pt\parskip0pt\parsep0pt
\item 1262 1262 \item
{The User has registered with the email testuser@flashy.cards.} 1263 1263 {The User has registered with the email testuser@flashy.cards.}
\item 1264 1264 \item
{The User has verified their email address.} 1265 1265 {The User has verified their email address.}
\item 1266 1266 \item
{The User is logged in with the above email.} 1267 1267 {The User is logged in with the above email.}
\item 1268 1268 \item
{The User has enrolled in the class TEST 1.} 1269 1269 {The User has enrolled in the class TEST 1.}
\item 1270 1270 \item
{The User is at the Deck View for the class ``TEST 1''.} 1271 1271 {The User is at the Deck View for the class ``TEST 1''.}
\item 1272 1272 \item
{The User has created and added a flashcard to their deck with text 1273 1273 {The User has created and added a flashcard to their deck with text
``The rain in Spain stays mainly in the plain''.} 1274 1274 ``The rain in Spain stays mainly in the plain''.}
\end{itemize} 1275 1275 \end{itemize}
1276 1276
\item[Postconditions:] 1277 1277 \item[Postconditions:]
1278 1278
\begin{itemize} 1279 1279 \begin{itemize}
\itemsep1pt\parskip0pt\parsep0pt 1280 1280 \itemsep1pt\parskip0pt\parsep0pt
\item 1281 1281 \item
{The user shall see their alteration for that flashcard.} 1282 1282 {The user shall see their alteration for that flashcard.}
\item 1283 1283 \item
{Other users will be notified of the alteration.} 1284 1284 {Other users will be notified of the alteration.}
\end{itemize} 1285 1285 \end{itemize}
1286 1286
\item[Workflow:] 1287 1287 \item[Workflow:]
1288 1288
\begin{enumerate} 1289 1289 \begin{enumerate}
\itemsep1pt\parskip0pt\parsep0pt 1290 1290 \itemsep1pt\parskip0pt\parsep0pt
\item 1291 1291 \item
{UserX shall select the Flashcard they created.} 1292 1292 {UserX shall select the Flashcard they created.}
\item 1293 1293 \item
{UserX shall select ``Info'' button on the flashcard.} 1294 1294 {UserX shall select ``Info'' button on the flashcard.}
\item 1295 1295 \item
{The System shall bring up the flashcard information modal.} 1296 1296 {The System shall bring up the flashcard information modal.}
\item 1297 1297 \item
{UserX shall select the ``Fix'' button.} 1298 1298 {UserX shall select the ``Fix'' button.}
\item 1299 1299 \item
{The System shall bring up the edit flashcard modal.} 1300 1300 {The System shall bring up the edit flashcard modal.}
\item 1301 1301 \item
{UserX shall change the text to ``The rain in Spain stays mainly in Germany''.} 1302 1302 {UserX shall change the text to ``The rain in Spain stays mainly in Germany''.}
\item 1303 1303 \item
{UserX shall select the ``Done'' button.} 1304 1304 {UserX shall select the ``Done'' button.}
\item 1305 1305 \item
{The System shall update the flashcard's content.} 1306 1306 {The System shall update the flashcard's content.}
\item 1307 1307 \item
{The System shall close the edit flashcard modal and the close the 1308 1308 {The System shall close the edit flashcard modal and the close the
flashcard information modal.} 1309 1309 flashcard information modal.}
\end{enumerate} 1310 1310 \end{enumerate}
1311 1311
\item[Expected Results]{The Client shall show the flashcard with new text:``The rain in Spain stays mainly in Germany''.} 1312 1312 \item[Expected Results]{The Client shall show the flashcard with new text:``The rain in Spain stays mainly in Germany''.}
\end{description} 1313 1313 \end{description}
\newpage 1314 1314 \newpage
1315 1315
{} 1316 1316 {}
1317 1317
\subsection{[F8] Hide cards from feed} 1318 1318 \subsection{[F8] Hide cards from feed}
1319 1319
\begin{description} 1320 1320 \begin{description}
\item[Description:]{The user shall be able to hide cards from feed} 1321 1321 \item[Description:]{The User shall be able to hide cards from feed}
1322 1322
\item[Desired Outcome:]{The card is no longer visible to the user} 1323 1323 \item[Desired Outcome:]{The card is no longer visible to the User}
\\ 1324 1324 \\
1325 1325
\item[User Goals:]{The card has been looked at and should be hidden to 1326 1326 \item[User Goals:]{The card has been looked at and should be hidden to
reduce screen clutter} 1327 1327 reduce screen clutter}
1328 1328
\item[Dependency Use Cases:]{[A1] User Registration, [A2] User 1329 1329 \item[Dependency Use Cases:]{[A1] User Registration, [A2] User
Login, [A3] Add a Class, [F1] Push Flashcard} 1330 1330 Login, [A3] Add a Class, [F1] Push Flashcard}
\\ 1331 1331 \\
1332 1332
\item[Preconditions:] 1333 1333 \item[Preconditions:]
\item 1334 1334 \item
{The User has registered with the email testuser@flashy.cards.} 1335 1335 {The User has registered with the email testuser@flashy.cards.}
\item 1336 1336 \item
{The User has verified their email address.} 1337 1337 {The User has verified their email address.}
\item 1338 1338 \item
{The User is logged in with the above email.} 1339 1339 {The User is logged in with the above email.}