Compare View

switch
from
...
to
 
Commits (2)

Diff

Showing 1 changed file Inline Diff

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