//****************************************************************************//
//****************** User Stories - February 12th, 2020 *********************//
//**************************************************************************//

- Okay, we're going to continue our trend of having no class on Fridays - happy Valentine's Day! Don't forget your MVP mapping/acceptance criteria are due then!
    - I'll start grading your well-defined user statements this Friday, and hopefully have them done before the weekend starts

- "This is one of the bigger early projects, but hopefully it'll guide you the rest of the semester and make your final report much more about assembly than creating something brand-spanking new"

--------------------------------------------------------------------------------
- What I'd like teams to do today is to write a user story/set of acceptance criteria for an EXISTING application you use, like Spotify or something - "basically, you're reverse-engineering user stories"
    - Here's the example I came up with:

            As a user, I want to create/edit playlists so that I can catalog tracks I wish to frequently access

            Scenario 1:
            Given the playlist that the user wants to modify/exists has been created
                and the desired track has been located
                and the track is available
            When the user selects "add to playlist"
            Then a menu of the user's existing playlists appears

            Scenario 2:
            Given the menu of the existing playlist's has appeared
                and the user has selected a track to be added to the playlist
            When the user selects the playlist to which to add the track
            Then the desired track is added to the selected playlist
                and the user is returned to the original screen/page
                and a banner message appears on the bottom the banner
                and the banner message disappears after 3 seconds

    - "So, writing it out in this much detail forces us to think about what "adding to a playlist" REALLY means, and not just in a vague way"
        - 2 scenarios is pretty good for making you think things through a bit

- Our example, for Slack:
    - As a project manager, I want to start a message thread so that I can communicate with 1 person but leave it visible to the rest of the team

            Scenario 1:
            Given an existing message in the channel
                and the project manager has access to the channel
                and there's no existing reply thread on the message
            When the the project manager clicks the "reply" button
                and enters/sends a message correctly
            Then it opens a new thread on the message
                and displays a "Thread" banner underneath the replied-to message

            Scenario 2:
            Given an existing message in the channel
                and the project manager has access to the channel
                and there is an existing reply thread on the message
            When the project manager clicks the thread banner underneath the message
            Then it opens a new window for replying to that thread

            Given the project manager has opened the window for a thread
            When they enter/submit a message to the thread
            Then the message appears as a new message in that thread
                and the message counter for the thread banner increments

- Hopefully, this gets you guys to pay attention to the small things that apps do that you don't really notice, like incrementing a counter or pulling up the keyboard; this stuff is what separates professional projects