Compare View
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} |