Commit 6c8360177c7a9c89c779c430dfb8ead44775d565
Exists in
master
Merge branch 'master' of git.ucsd.edu:110swag/docs
Showing 2 changed files Side-by-side Diff
DesignUseCases.tex
View file @
6c83601
... | ... | @@ -1130,14 +1130,17 @@ |
1130 | 1130 | \item |
1131 | 1131 | {The User shall highlight the words that he wishes to blank out.} |
1132 | 1132 | \item |
1133 | + {The frontend shall enclose the selected text in \textless{}b\textgreater{} tags to alter its appearance.} | |
1134 | +\item | |
1133 | 1135 | {The User shall click the 'Contribute' button.} |
1134 | 1136 | \item |
1137 | + {The frontend shall convert the blanked portion of the text into a list of offsets to be | |
1138 | + sent to the backend in FeedController.js.} | |
1139 | +\item | |
1135 | 1140 | {The backend shall mark those words by updating the field mask for |
1136 | 1141 | that userflashcard object in views.py in function create. } |
1137 | 1142 | \item |
1138 | - {The backend shall save those in models.py.} | |
1139 | -\item | |
1140 | - {The frontend shall change the color of the text that was blanked out in flashcard.html.} | |
1143 | + {The backend shall save the new mask in models.py.} | |
1141 | 1144 | \end{enumerate} |
1142 | 1145 | |
1143 | 1146 | {Alternative Workflows:} |
1144 | 1147 | |
... | ... | @@ -1149,13 +1152,15 @@ |
1149 | 1152 | \item |
1150 | 1153 | {The User shall highlight selection text and click either ctrl-b or 'Blank Selected Text'.} |
1151 | 1154 | \item |
1155 | + {The frontend shall enclose the selected text in \textless{}b\textgreater{} tags to alter its appearance.} | |
1156 | +\item | |
1157 | + {The frontend shall convert the blanked portion of the text into a list of offsets to be | |
1158 | + sent to the backend in CardGridController.js.} | |
1159 | +\item | |
1152 | 1160 | {The backend shall mark those words by updating the field mask for |
1153 | 1161 | that userflashcard object in views.py in function create. } |
1154 | 1162 | \item |
1155 | 1163 | {The backend shall save those in models.py.} |
1156 | -\item | |
1157 | - {The frontend shall change the color of the text that was blanked out in flashcard.html.} | |
1158 | - | |
1159 | 1164 | \end{enumerate} |
1160 | 1165 | \end{description} |
1161 | 1166 | {} |
1162 | 1167 | |
... | ... | @@ -1343,97 +1348,7 @@ |
1343 | 1348 | |
1344 | 1349 | {} |
1345 | 1350 | \section{Decks} |
1346 | -\subsection{[-D2-] Making a deck - Removed} | |
1347 | 1351 | |
1348 | -\begin{description} | |
1349 | -\item[Description]{Upon selecting the right course, the student has the | |
1350 | -power to make a deck by either selecting existing flashcard or adding a | |
1351 | -new flashcard.} | |
1352 | - | |
1353 | -\item[Desired Outcome]{The user can keep track of cards that s/he wants.} | |
1354 | -\\ | |
1355 | -\item[User Goals]{The user has a personal deck ready for review later.} | |
1356 | - | |
1357 | -\item[Primary Actor]{User (student)} | |
1358 | - | |
1359 | -\item[Dependency Use Cases]{Add a class {[}A3{]}, Add Flashcards to Deck | |
1360 | -{[}F1{]}, Make a Flashcard {[}F3{]}} | |
1361 | -\\ | |
1362 | -\item[Priority Level]{``Must''} | |
1363 | - | |
1364 | -\item[Status]{In Progress} | |
1365 | - | |
1366 | -\item[Pre-conditions] | |
1367 | - | |
1368 | -\begin{itemize} | |
1369 | -\itemsep1pt\parskip0pt\parsep0pt | |
1370 | -\item | |
1371 | - {The user has an account with the application. } | |
1372 | -\item | |
1373 | - {The user has been added to the desired class.} | |
1374 | -\end{itemize} | |
1375 | - | |
1376 | -\item[Post-conditions] | |
1377 | - | |
1378 | -\begin{itemize} | |
1379 | -\itemsep1pt\parskip0pt\parsep0pt | |
1380 | -\item | |
1381 | - {Desired cards are added to user's deck to the specific class } | |
1382 | -\item | |
1383 | - {User's deck is added to the database.} | |
1384 | -\end{itemize} | |
1385 | - | |
1386 | -\item[Trigger]{The User wants to have a collection of cards.} | |
1387 | - | |
1388 | -\item[Workflow] | |
1389 | - | |
1390 | -\begin{enumerate} | |
1391 | -\itemsep1pt\parskip0pt\parsep0pt | |
1392 | -\item | |
1393 | - {User is at their dashboard.} | |
1394 | -\item | |
1395 | - {User selects the class of interest that they had no activity in yet.} | |
1396 | -\item | |
1397 | - {Client displays the Live Feed for the class.} | |
1398 | -\item | |
1399 | - {User presses ``Pull Flashcard'' button on a Flashcard that they want | |
1400 | - in their Deck.} | |
1401 | -\item | |
1402 | - {The server creates a Deck for the User for the Class of interest.} | |
1403 | -\item | |
1404 | - {The server adds the Flashcard to the User's Deck.} | |
1405 | -\item | |
1406 | - {The Client makes the Flashcard disappear from the Live Feed.} | |
1407 | -\item | |
1408 | - {The Client displays the Flashcard in the User's Deck in the sidebar.} | |
1409 | -\end{enumerate} | |
1410 | - | |
1411 | -{Alternate Workflow:} | |
1412 | - | |
1413 | -\begin{enumerate} | |
1414 | -\itemsep1pt\parskip0pt\parsep0pt | |
1415 | -\item | |
1416 | - {User is at their dashboard.} | |
1417 | -\item | |
1418 | - {User selects the class of interest that they had no activity in yet.} | |
1419 | -\item | |
1420 | - {Client displays the Live Feed for the class.} | |
1421 | -\item | |
1422 | - {The User adds a Flashcard into the Class.} | |
1423 | -\item | |
1424 | - {The server creates a Deck for the User for the Class of interest.} | |
1425 | -\item | |
1426 | - {The server adds the new Flashcard to the User's Deck.} | |
1427 | -\item | |
1428 | - {The Client makes the Flashcard disappear from the Live Feed.} | |
1429 | -\item | |
1430 | - {The Client displays the Flashcard in the User's Deck in the sidebar.} | |
1431 | -\end{enumerate} | |
1432 | -\end{description} | |
1433 | -\newpage | |
1434 | - | |
1435 | -{} | |
1436 | - | |
1437 | 1352 | \subsection{[D1] Remove a card from a deck} |
1438 | 1353 | |
1439 | 1354 | \begin{description} |
... | ... | @@ -1527,93 +1442,6 @@ |
1527 | 1442 | \end{enumerate} |
1528 | 1443 | \end{description} |
1529 | 1444 | |
1530 | -\subsection{[-D2-] Shuffling deck - Removed} | |
1531 | - | |
1532 | -\begin{description} | |
1533 | -\item[Description]{User is able to shuffle his/her deck as a way to study | |
1534 | -the flashcards} | |
1535 | - | |
1536 | -\item[Desired Outcome]{When taking a quiz, the user will notice that | |
1537 | -flashcards appear in random order} | |
1538 | - | |
1539 | -{User Goals:}{Improve quiz taking skills and knowledge consumption} | |
1540 | - | |
1541 | -\item[Primary Actor]{User (student)} | |
1542 | - | |
1543 | -\item[Dependency Use Cases]{Deck has been created {[}D2{]}} | |
1544 | -\\ | |
1545 | -\item[Priority Level]{}{''Won't''} | |
1546 | - | |
1547 | -\item[Status]{Implemented } | |
1548 | - | |
1549 | -\item[Pre-conditions] | |
1550 | - | |
1551 | -\begin{itemize} | |
1552 | -\itemsep1pt\parskip0pt\parsep0pt | |
1553 | -\item | |
1554 | - {User must have registered for course } | |
1555 | -\end{itemize} | |
1556 | - | |
1557 | -\begin{itemize} | |
1558 | -\itemsep1pt\parskip0pt\parsep0pt | |
1559 | -\item | |
1560 | - {User must have added cards to deck.} | |
1561 | -\end{itemize} | |
1562 | - | |
1563 | -\item[Post-conditions]{} | |
1564 | - | |
1565 | -\begin{itemize} | |
1566 | -\itemsep1pt\parskip0pt\parsep0pt | |
1567 | -\item | |
1568 | - {User takes a quiz and notice the deck has been shuffled.} | |
1569 | -\end{itemize} | |
1570 | - | |
1571 | -\item[Trigger]{The User wants to review their cards in random order.} | |
1572 | - | |
1573 | -\item[Workflow] | |
1574 | - | |
1575 | -\begin{enumerate} | |
1576 | -\itemsep1pt\parskip0pt\parsep0pt | |
1577 | -\item | |
1578 | - {User is on the homepage.} | |
1579 | -\item | |
1580 | - {User selects the ``Study'' button for the Class they want to view or | |
1581 | - shuffle cards for.} | |
1582 | -\item | |
1583 | - {The Client displays their Deck for the Class of interest.} | |
1584 | -\item | |
1585 | - {User clicks on ``shuffle deck'' button to shuffle the deck, | |
1586 | - randomizing the order in which it will be displayed.} | |
1587 | -\item | |
1588 | - {The Client displays a change in card ordering.} | |
1589 | -\item | |
1590 | - {System reorders cards' study order.} | |
1591 | -\end{enumerate} | |
1592 | - | |
1593 | -{Alternate Workflow: } | |
1594 | - | |
1595 | -\begin{enumerate} | |
1596 | -\itemsep1pt\parskip0pt\parsep0pt | |
1597 | -\item | |
1598 | - {User is on the homepage.} | |
1599 | -\item | |
1600 | - {User selects Class of interest.} | |
1601 | -\item | |
1602 | - {The Client displays the Live Feed for the Class.} | |
1603 | -\item | |
1604 | - {User clicks on ``shuffle deck'' button to shuffle the deck, | |
1605 | - randomizing the order in which it will be displayed.} | |
1606 | -\item | |
1607 | - {The Client displays a change in card ordering.} | |
1608 | -\item | |
1609 | - {System reorders cards' study order.} | |
1610 | -\end{enumerate} | |
1611 | -\end{description} | |
1612 | -{} | |
1613 | - | |
1614 | -\newpage | |
1615 | - | |
1616 | -{} | |
1617 | 1445 | |
1618 | 1446 | \subsection{[D2] Viewing cards in deck by pull time} |
1619 | 1447 |
TestCases.tex
View file @
6c83601
... | ... | @@ -74,7 +74,7 @@ |
74 | 74 | \subsection{[A1] User Registration} |
75 | 75 | \begin{description}[style=multiline,leftmargin=3cm] |
76 | 76 | |
77 | -\item[Description:]{This test case outlines the presentation layer step | |
77 | +\item[Description:]{This test case outlines the presentation layering step | |
78 | 78 | process of a user registering for an account with our application.} |
79 | 79 | |
80 | 80 | \item[Desired Outcome:]{An account will be created for the User from the |
... | ... | @@ -241,7 +241,7 @@ |
241 | 241 | |
242 | 242 | \subsection{[A3] Add a Class} |
243 | 243 | \begin{description} |
244 | -\item[Description:]{This test case outlines the presentation layer step | |
244 | +\item[Description:]{This test case outlines the presentation layering step | |
245 | 245 | process of a user adding a class.} |
246 | 246 | |
247 | 247 | \item[Desired Outcome:]{The class shall be linked with the student's account |
... | ... | @@ -363,7 +363,7 @@ |
363 | 363 | \subsection{[A4] Drop a Class} |
364 | 364 | |
365 | 365 | \begin{description} |
366 | -\item[Description:]{This test case outlines the presentation layer step process of a user dropping a class.} | |
366 | +\item[Description:]{This test case outlines the presentation layering step process of a user dropping a class.} | |
367 | 367 | |
368 | 368 | \item[Desired Outcome:]{The User has dropped the class and no longer needs |
369 | 369 | access to the flashcards for the dropped class. They can no longer |
... | ... | @@ -421,8 +421,8 @@ |
421 | 421 | \subsection{[A5] Password Change} |
422 | 422 | |
423 | 423 | \begin{description} |
424 | -\item[Description:]{The User shall be able to change the password for their | |
425 | -account in the account settings. This requires that they are logged in.} | |
424 | +\item[Description:]{This test case outlines the presentation layering step process | |
425 | +of a user changing their password.} | |
426 | 426 | |
427 | 427 | \item[Desired Outcome:]{The User's password shall be changed and the user |
428 | 428 | shall be able to log in with the new password in the future.} |
... | ... | @@ -495,7 +495,7 @@ |
495 | 495 | \item[Expected Result:] {The System shall display a toast ``Your old password is not correct''.} |
496 | 496 | \\ |
497 | 497 | |
498 | -\item[Workflow:] | |
498 | +\item[Alternate Workflow B:] | |
499 | 499 | \begin{enumerate} |
500 | 500 | \itemsep1pt\parskip0pt\parsep0pt |
501 | 501 | \item |
... | ... | @@ -518,7 +518,7 @@ |
518 | 518 | \subsection{[A6] Password Reset} |
519 | 519 | |
520 | 520 | \begin{description} |
521 | -\item[Description:]{This test case outlines the presentation step layering process of | |
521 | +\item[Description:]{This test case outlines the presentation layering step process of | |
522 | 522 | a user requesting a password reset without logging in.} |
523 | 523 | |
524 | 524 | \item[Desired Outcome:]{The User's password shall be changed to one that |
525 | 525 | |
... | ... | @@ -591,11 +591,12 @@ |
591 | 591 | |
592 | 592 | \item[Alternate Workflow:] |
593 | 593 | \begin{enumerate} |
594 | -\setcounter{enumi}{4} | |
594 | +\setcounter{enumi}{2} | |
595 | 595 | \itemsep1pt\parskip0pt\parsep0pt |
596 | 596 | \item |
597 | - {If no such account exists, the System shall display an error message | |
598 | -``Enter a valid email!'' to UserX.} | |
597 | + {UserX shall submit an invalid email \mbox{``NotUserX@flashy.cards''}.} | |
598 | +\item | |
599 | + {The System shall display an error message ``Enter a valid email!'' to UserX.} | |
599 | 600 | \end{enumerate} |
600 | 601 | |
601 | 602 | \item[Expected Result:] {UserX's password will not be reset.} |
... | ... | @@ -607,7 +608,8 @@ |
607 | 608 | \subsection{[A7] Student Prevented From Accessing A Restricted Course} |
608 | 609 | |
609 | 610 | \begin{description} |
610 | -\item[Description:]{The User shall not be able to access a restricted course.} | |
611 | +\item[Description:]{This test case outlines the presentation layering step process of | |
612 | +an instructor limiting access to a class.} | |
611 | 613 | |
612 | 614 | \item[Desired Outcome:]{The class will have limited access and only those |
613 | 615 | users who are whitelisted may enroll in the class.} |
... | ... | @@ -725,7 +727,8 @@ |
725 | 727 | \subsection{[A9] Contact Admin} |
726 | 728 | |
727 | 729 | \begin{description} |
728 | -\item[Description]{The User shall be able to contact the admin.} | |
730 | +\item[Description]{This test case outlines the presentation layering step | |
731 | +process of a user contacting site admins.} | |
729 | 732 | |
730 | 733 | \item[Desired Outcome]{The User shall send a message to the admin; the |
731 | 734 | admin shall receive the message.} |
... | ... | @@ -820,7 +823,7 @@ |
820 | 823 | \subsection{[F1] Push Flashcard} |
821 | 824 | |
822 | 825 | \begin{description} |
823 | -\item[Description:]{This test case outlines the presentation layer step | |
826 | +\item[Description:]{This test case outlines the presentation layering step | |
824 | 827 | process of a User contributing a flashcard to the live feed and to their deck.} |
825 | 828 | |
826 | 829 | \item[Desired Outcome:]{The User shall have the flashcard added to their own deck |
... | ... | @@ -1248,7 +1251,7 @@ |
1248 | 1251 | \subsection{[F5] Filter Flashcards} |
1249 | 1252 | |
1250 | 1253 | \begin{description} |
1251 | -\item[Description:]{This test case outlines the presentation layer process | |
1254 | +\item[Description:]{This test case outlines the presentation layering process | |
1252 | 1255 | of a user filtering existing flashcards to view only a specified subset.} |
1253 | 1256 | |
1254 | 1257 | \item[Desired Outcome:]{The User shall see flashcards based on the filter |
... | ... | @@ -1318,7 +1321,7 @@ |
1318 | 1321 | \subsection{[F6] Blank Out Words in Flashcard} |
1319 | 1322 | |
1320 | 1323 | \begin{description} |
1321 | -\item[Description:]{This test case outlines the presentation layer process | |
1324 | +\item[Description:]{This test case outlines the presentation layering process | |
1322 | 1325 | of the User to create keywords in a card they are pushing.} |
1323 | 1326 | |
1324 | 1327 | \item[Desired Outcome:]{The blanked out words (visually bolded) in the |
... | ... | @@ -1386,7 +1389,7 @@ |
1386 | 1389 | \subsection{[F7] Fix Flashcard} |
1387 | 1390 | |
1388 | 1391 | \begin{description} |
1389 | -\item[Description:]{This Test Case outlines the presentation layer process | |
1392 | +\item[Description:]{This Test Case outlines the presentation layering process | |
1390 | 1393 | for the User to alter (``fix'') a flashcard they made originally and not have |
1391 | 1394 | to make a new copy of it. It is only a ``fix'' if no other users have the |
1392 | 1395 | flashcard in their Decks AND the User is the author.} |
... | ... | @@ -1473,7 +1476,7 @@ |
1473 | 1476 | \subsection{[F8] Hide cards from feed} |
1474 | 1477 | |
1475 | 1478 | \begin{description} |
1476 | -\item[Description:]{This test case outlines the presentation layer process | |
1479 | +\item[Description:]{This test case outlines the presentation layering process | |
1477 | 1480 | for the User shall be able to hide cards from their own view, on |
1478 | 1481 | the Feed and Deck.} |
1479 | 1482 | |
... | ... | @@ -1560,7 +1563,7 @@ |
1560 | 1563 | |
1561 | 1564 | \begin{description} |
1562 | 1565 | \item[Description:]{This test case outlines the presentation |
1563 | -layer process process of a user viewing a class Feed.} | |
1566 | +layering process process of a user viewing a class Feed.} | |
1564 | 1567 | |
1565 | 1568 | \item[Desired Outcome:]{The System shall show the user the |
1566 | 1569 | Feed for their class.} |
1567 | 1570 | |
1568 | 1571 | |
... | ... | @@ -1617,13 +1620,15 @@ |
1617 | 1620 | \subsection{[D1] Remove a Card from Deck} |
1618 | 1621 | |
1619 | 1622 | \begin{description} |
1620 | -\item[Description:]{This test case outlines the presentation layering step process | |
1621 | -of a user removing a flashcard from their deck.} | |
1623 | +\item[Description:]{This test case outlines the presentation layering | |
1624 | +step process of a user removing a flashcard from their deck.} | |
1622 | 1625 | |
1623 | -\item[Desired Outcome:]{The deck does not display the removed card.} | |
1626 | +\item[Desired Outcome:]{The selected card will not appear in | |
1627 | +the deck.} | |
1624 | 1628 | \\ |
1625 | 1629 | |
1626 | -\item[User Goals:]{The User wants to only review cards that the User wants to review.} | |
1630 | +\item[User Goals:]{The User wants to remove an undesirable card | |
1631 | +from their deck.} | |
1627 | 1632 | |
1628 | 1633 | \item[Dependency Use Cases:]{[A3] Add a class, [F1] Push Flashcard, [F3] Pull Flashcard} |
1629 | 1634 | \\ |
1630 | 1635 | |
1631 | 1636 | |
1632 | 1637 | |
... | ... | @@ -1638,18 +1643,23 @@ |
1638 | 1643 | \item |
1639 | 1644 | {User is logged in as UserX.} |
1640 | 1645 | \item |
1641 | - {UserX has enrolled in the class TEST 101.} | |
1646 | + {UserX has added the class TEST 101.} | |
1642 | 1647 | \item |
1643 | - {UserX has added cards from the feed into their deck.} | |
1648 | + {UserX has created a flashcard with the text | |
1649 | +``This is a bad card''.} | |
1644 | 1650 | \item |
1645 | - {UserX is at the deck/live feed screen for the class TEST 101.} | |
1651 | + {UserX has created a flashcard with the text | |
1652 | +``This is a bad card too''.} | |
1653 | +\item | |
1654 | + {UserX has created a flashcard with the text | |
1655 | +``This is a bad card''.} | |
1646 | 1656 | \end{itemize} |
1647 | 1657 | |
1648 | 1658 | \item[Postconditions:] |
1649 | 1659 | \begin{itemize} |
1650 | 1660 | \itemsep1pt\parskip0pt\parsep0pt |
1651 | 1661 | \item |
1652 | - {Desired card are hidden from the User.} | |
1662 | + {Selected card is hidden from the User.} | |
1653 | 1663 | \end{itemize} |
1654 | 1664 | |
1655 | 1665 | \item[Trigger:]{UserX wants a card to be removed from their deck.} |
1656 | 1666 | |
1657 | 1667 | |
1658 | 1668 | |
1659 | 1669 | |
1660 | 1670 | |
1661 | 1671 | |
1662 | 1672 | |
1663 | 1673 | |
1664 | 1674 | |
1665 | 1675 | |
... | ... | @@ -1658,40 +1668,42 @@ |
1658 | 1668 | \begin{enumerate} |
1659 | 1669 | \itemsep1pt\parskip0pt\parsep0pt |
1660 | 1670 | \item |
1661 | - {UserX is at the Deck screen for the class.} | |
1671 | + {UserX is at the deck for the class TEST 101.} | |
1662 | 1672 | \item |
1663 | - {UserX shall hover over the card they want to delete and click | |
1664 | - the trash icon (hereafter, the ``Delete'' button) in the lower right | |
1665 | - corner of the card.} | |
1673 | + {UserX shall hover the cursor over the card | |
1674 | +with the text ``This is a bad card''.} | |
1666 | 1675 | \item |
1667 | - {UserX shall select the appropriate class.} | |
1676 | + {UserX shall click the large green minus button.} | |
1668 | 1677 | \item |
1669 | - {The System removes the flashcard from UserX's Deck.} | |
1678 | + {The System shall remove the flashcard from UserX's Deck.} | |
1670 | 1679 | \item |
1671 | - {The System updates the flashcard's position in the Live Feed of class TEST 101.} | |
1672 | -\item | |
1673 | - {The System updates UserX's Deck.} | |
1680 | + {The System shall update UserX's Deck.} | |
1674 | 1681 | \end{enumerate} |
1675 | 1682 | |
1676 | -\item[Expected Result:] {The flashcard is removed from UserX's deck.} | |
1683 | +\item[Expected Result:] {The flashcard with the | |
1684 | +text ``This is a bad card'' will no longer have a checkmark | |
1685 | +on top right of the flashcard. After UserX refresh the page, | |
1686 | +the flashcard will be removed from the deck.} | |
1677 | 1687 | |
1678 | 1688 | \item[Alternate Workflow:] |
1679 | 1689 | \begin{enumerate} |
1680 | 1690 | \itemsep1pt\parskip0pt\parsep0pt |
1681 | 1691 | \item |
1682 | - {UserX is at the Live Feed screen for the class.} | |
1692 | + {UserX is at the live feed screen for the class.} | |
1683 | 1693 | \item |
1684 | - {UserX shall hover over the card they want to delete and click | |
1685 | - the ``Delete'' button in the lower right corner of the card.} | |
1694 | + {UserX shall hover the cursor over the card | |
1695 | +with the text ``This is a bad card too''.} | |
1686 | 1696 | \item |
1687 | - {The System removes the flashcard from the User's Deck.} | |
1697 | + {UserX shall click the large green minus button.} | |
1688 | 1698 | \item |
1689 | - {The System updates the flashcard's position in the Live Feed.} | |
1690 | -\item | |
1691 | - {The System updates the User's Deck.} | |
1699 | + {The System shall update UserX's Deck, and the flashcard's | |
1700 | +position in the live feed.} | |
1692 | 1701 | \end{enumerate} |
1693 | 1702 | |
1694 | -\item[Expected Result:] {The flashcard is removed from UserX's deck.} | |
1703 | +\item[Expected Result:] | |
1704 | +{The flashcard with the text ``This is a bad card too'' will | |
1705 | +no longer have a checkmark on the top right of the flashcard. | |
1706 | +The flashcard will no longer be in UserX's deck.} | |
1695 | 1707 | |
1696 | 1708 | \end{description} |
1697 | 1709 | \newpage |