Use Case Descriptions
Use Case #1
As a user, I want to be able to track multiple repositories in the same server/workspace, so I can track all of my teams' project in one place.
- The user sends the /add owner/repo1 command to add a GitHub repository called repo1 to CollabyBot
- The user sends the commands /pull-requests repo1, /commits repo1, and /issues repo1 in the #repo1 channel to receive notifications from the repository repo1 in a dedicated channel
- The user sends the /add owner/repo2 command to add a GitHub repository called repo2 to CollabyBot
- The user sends the commands /pull-requests repo2, /commits repo2, and /issues repo2 in the #repo2 channel to receive notifications from the repository repo2 in a dedicated channel
Use Case #2
As a user, I want to be able to subscribe certain channels in my chat server to certain types of GitHub events, so that a single channel doesn't get clogged with every notification.
- The user sends the /pull-request repo command from a channel called pull-requests in a chat server/workspace that has CollabyBot installed
- The bot adds that channel's ID to a list of subscribers to the pull request webhook for repo
- The bot responds with a message stating that the pull-requests channel is now subscribed to pull request events from repo
- Notifications of pull request events from repo will be posted to the pull-requests channel from that point on
Use Case #3
As a user, I want to be able to see all of the open pull requests in my repository, so I can see what needs to be reviewed without opening GitHub.
- The user sends the /open-pull-requests repo command in a chat server/workspace that has CollabyBot installed
- The bot responds with a list of repo's open pull requests with links included
Use Case #4
As a user, I want to be able get information about a specific ticket on demand, so that I can check its status without having to open Jira.
- The user sends the /jira ticketID command in a chat server/workspace that has CollabyBot installed
- The bot responds with a message containing the ticket's summary, description, status, assignee, parent epic
Use Case #5
As a user, I want to be able to view the active sprint's backlog from a chat server/workspace, so that I can see what work needs to be done without opening Jira.
- The user sends the /sprint projectID command in a chat server/workspace that has CollabyBot installed
- The bot gets the active sprint for projectID in Jira using the Jira API
- The bot extracts the sprint's backlog as a list of tickets using the Jira API
- The bot extracts the name, ID, assignee, and status of each ticket in the list
- The bot creates a burndown chart by getting the story points of each ticket, calculating how many have been completed for each day of the sprint, and plotting the values along with a guideline representing the ideal pace of completion
- The bot responds to the command with a formatted list of tickets that displays their name, ID, assignee, and status along with an image of the burndown chart.
Use Case #6
As s user, I want to be able to assign a Jira ticket to a team member using a bot command, so that I can quickly assign tickets without having to open Jira.
- The user sends the /jira-assign ticket ID user command from a chat server/workspace with CollabyBot installed
- If the ticket is unassigned: The bot reassigns the ticket to user
- If the ticket has been already assigned to someone: The bot tells the user who it is already assigned to and asks if they want to reassign it touser
- The user replies "yes" or "no"
- If no: The does not reassign the ticket
- If yes: see 2.i.
- The user replies "yes" or "no"
- The bot changes the assignee in Jira
- The bot sends a message stating that the ticket was successfully assigned to user