Click here to see current Prototype and Here to see the Code or below to learn more
- Why Insectic?
- What is Insectic
- Use-Case Diagram
- ERD
- Draft WireFrames
- User Stories
- Use Cases
- Requirements
- Test Table
- Issues Encountered
- Prototype Section
- Todo List
πͺ² Why Insectic? πͺ² π
Insectic is a side project I am working on to help viuslize one of the 4 pillars of work; Unplanned work. This idea came to me after reading The Phoenix Project I wanted to follow along with Bill and Patty and see if I could create an application that would of helped visualize, track, and streamline the completion of unplanned tasks and work.
What Is Insectic? π
Insectic will be an interactive bug/patches tracking web application that will forcus on the unplanned work aspect of DevOPs. This Web application will allow Managers to track current items being worked on with detailed statistics to help locate bottle necks. Team leaders will be able to utilize this tool to task out team members, track team progress and will be able to see team analytics to better articulate the needs of the team to the department manager. Check out the Prototype.
π Use-Case Diagram π
Database Diagram π
DRAFT WIREFRAMES π
User Stories π
- As a Department Manager, I need to create βticketsβ when ever a problem is detected in our process, so that we can visualize the bottleneck and common trends.
- As a Department Manager, I need to see the analytics of all the tickets in our system so that I can provide detailed reports to the CEO.
- As a Team lead, I need to be able manage my team assign them to tasks so that I can provide the Department Manager with daily status updates.
- As a Team Members, I need to be able to submit tickets for issues encountered with a detailed description and categories so that my team lead can articulate our current issues and progress with the Department Manager
Use Cases π
-
Given a new user When user fills out application Then assign values to new user object
-
Given a user discovers a reportable issue When all required forms are filled properly, Then create a ticket object and store the data.
-
Given a ticket number when a user desires to update a ticket Then pull ticket data and allow comments to be added and update database.
-
Given a ticket number, When a team member desires to close a ticket, Then query ticket and change status to pending closure and alert Department Manager.
-
Given a ticket number, When a Department manager desires to close a ticket, Then query ticket and change status to close to add to archives.
-
Given a Ticket ID When user wants to view the ticket Then populate the ticket into a table.
-
Given a filtering condition, When user wants to pull analytics, Then generate a query that outputs values to display the count of all tickets by category, subcategory.
-
Given a user ID When a user needs to be assigned to a group Then populate drop by selection to select groups available and update userβs group in DB.
Requirements π
Requirement ID | Requirement Description | Test Method | Test ID |
---|---|---|---|
1 | The system shall create a user account with all required fields filled. | Analysis | 100 |
1.1 | The system shall allow github authentication. | Analysis | 101 |
2 | The system shall display the users name and roles on all pages | Inspection | 200 |
3 | The system Shall create unique ticket objects for each ticket submitted | Test | 300 |
3.1 | The system shall make a unique ticket ID for every ticket creation | Test | 301 |
3.2 | The system shall store all attributes of the ticket. | Test | 302 |
4 | The system shall provide Department managers with Analytics for the whole company | Demonstration | 400 |
4.1 | The system shall provide Department managers with Analytics for the whole company | Demonstration | 401 |
4.2 | The System shall provide the Team Leaders with analytics for their team | Demonstration | 402 |
4.3 | The system shall provide Team members with only their analytics. | Demonstration | 403 |
5 | The System shall archive closed tickets | Test | 500 |
5.1 | The System shall only allow Department managers to close tickets | Demonstration | 501 |
5.2 | The System shall provide users the option to place ticket in pending close status | Demonstration | 502 |
6 | The System shall allow Department managers to move team member groups around | Demonstration | 600 |
7 | The System shall utilize a API to perform C.R.U.D operations for the Ticket Objects | Test | 700 |
8 | The System shall utilize a API to perform C.R.U.D operations for the Comment Objects | Test | 800 |
9 | The System shall utilize a API to perform C.R.U.D operations for the User Objects | Test | 900 |
Test Table π
Test ID | Requirement ID | Test Prodedure | Current Status | TimeStamp |
---|---|---|---|---|
100 | 1 | Fill out form on page and verify model biniding occured and stored the values to a new user object | π’ | TBD |
101 | 1.1 | Utilizing GitHub authentication, ensure new user object is created and values are stores in the DB | π΄ | TBD |
200 | 2 | With seveal users created in multiple roles, verify all pages render appropriate headers | π’ | TBD |
300 | 3 | Upon creation of a ticket verify ticket values are unique utilizing test method | π’ | TBD |
301 | 3.1 | Upon creation of a ticket verify ticket values are unique utilizing test method | π’ | TBD |
302 | 3.2 | Upon creation of a ticket verify all required fields are assigned values in the ticket table on server | π’ | TBD |
400 | 4 | Inspect the Analytics web page ensuring data values are correct and match data in the server | π’ | TBD |
401 | 4.1 | Utilizing a department Manager assigned user account, verify detailed analytics page displayes correct information | π΄ | TBD |
402 | 4.2 | Utilizing a Team Leader assigned user account, verify detailed analytics page displayes correct information | π΄ | TBD |
403 | 4.3 | Utilizing a Team Member assigned user account, verify detailed analytics page displayes correct information | π΄ | TBD |
500 | 5 | Utilizing a Department manager role user, change an open ticket to closed and verify status in date base has been changed | π΄ | TBD |
501 | 5.1 | Utilizing any role besides Department Manager role, ensure close ticket is not a drop down option | π΄ | TBD |
502 | 5.2 | Utilizing any role besides Department Manager role, ensure pending close ticket is a drop down option | π΄ | TBD |
600 | 6 | Utilizing a Department Manager role user attempt to change user permissions | π΄ | TBD |
700 | 7 | Utilizing Postman, ensure all TicketController API requests work and output expected results | π’ | March 30, 2021 |
701 | 7.1 | Utilizing Postman, ensure GetAllTickets TicketController API request works and output expected results | π’ | March 30, 2021 |
702 | 7.2 | Utilizing Postman, ensure GetTicket TicketController API request works and output expected results | π’ | March 30, 2021 |
703 | 7.3 | Utilizing Postman, ensure AddTicket TicketController API request works and output expected results | π’ | March 30, 2021 |
704 | 7.4 | Utilizing Postman, ensure EditTicket TicketController API request works and output expected results | π’ | March 30, 2021 |
705 | 7.5 | Utilizing Postman, ensure DeleteTicket TicketController API request works and output expected results | π’ | March 30, 2021 |
800 | 8 | Utilizing Postman, ensure all TicketCommentController API requests work and output expected results | π’ | TBD |
900 | 9 | Utilizing Postman, ensure all UserController requests API work and output expected results | π’ | TBD |
Issues Encountered π
Problem ID | Problem Description | Solution | Encounter Date | Solution Date |
---|---|---|---|---|
01 | After Creating my layout for my views, the βtextareaβ input on the ticket page expands out of the container when the browser is less than 500px. | I reconstructed the webpage utilizing Grid in the main content space. The web page now uses several media queries to hide several tags at various lengths and with the utilization of grid has become more responsive. | March 6, 2021 | March 7,2021 |
02 | Difficulty making a Ticket ID property that increments each time an object is made. I attempted to make a constructor that incremented +1 however that seemed to not work. I believe there is an error on my side. | The failure was in the fact I did not have a static variable to assign to my βTicketIdβ property. I was attempting to increment βTicketIdβ by 1 every time an instance was created however since βTicketIdβ is not static the value reset to 0 every instance. | March 8,2021 | March 8,2021 |
03 | Visual Studio has a bug where if you copy and paste in a CSS script from Visual studio code it will not assist in linking a photo in the root folder into the URL block. This results in me having to reset VS every time I make to deploy changes, I made in VSC. | No current solution found besides restarting VS | March 11,2021 | March 11,2021 |
04 | Red and green tacks were placed on the page to add small fun details. the bottom red tack would move the screen height was adjusted. | This was due to the .Main-section class starting with a lowercase letter resulting in the parent element not being in βposition: relativeβ. Issue was corrected on all pages. Media queries will need to be made to remove tacks from view once screen width is 850px or less. | March 14,2021 | March 14,2021 |
05 | Foreach loop for auto table generation for each of the ticket priority boxes would not work with LINQ syntax | I believe this was due to me writing the syntax in the SQL syntax variant. Intelisense did not like me utilizing the "select" keyword. I am not sure if this is because It knew more than one value would be returned from the query. This was corrected by using the more appropriate method syntax | March 20,2021 | March 21,2021 |
06 | Attempted to add new controller (TicketsContoller) to call views in a folder in the view folder(Tickets). I was doing this hoping to separate my view pages into meaningful groups. However, When I select the createTicket link. the Controller does not change from "port/Home/CreateTicket" to "port/Tickets/createTickets" as I expected, resulting in a 404 | Discovered the helper tag of asp-controller. This oversight was the reason why my controllers were not switching between HomeController and the TicketController. This was discovered when I was helping a classmate with their issue. | March 26,2021 | April 03, 2021 |
07 | Discovered upon visual inspection the "Status" property of the Ticket object does not display in the ticket table. I believe this is an issue with the data binding of the drop down list values. The values are returned which is how they are sorted but do not print to screen. | Discovered that the "name" and "Id" must match the model's property identifier as well. I was under the assumption that the helper tag (asp-for) was responsible for the binding. | March 26,2021 | March 26, 2021 |
08 | Created an API in my solution to act as the "middle-man" between my webapp and my database. The API has three controllers "Tickets". " ticketComments", and "users". The Ticket controller CRUD action methods are complete but an error populates on postman when trying to send a "Patch" request. My generated message of "Ticket with Guid of {00000000-0000-0000-0000-000000000000} does not exist" is returned to me. That message should only return if the ticket is not in the Database. The get request works with the inputted GUID so the ticket is in the DB. | After placing several stoppers, I noticed my Guid was not being passed to the action method and instead was getting passed a empty Guid. The reason behind this was do to my action method parameter was named guid of type Guid. by changing the identifier to id of type Guid the action method started to pass the input request id to the GetTicket method inside the action method to pull the existing ticket and perform a deep copy. I was not aware the parameter name has to match the {id} route argument identifier. | March 30,2021 | March 31, 2021 |
09 | Created some tests for my API using WebApplicationFactory and Xunit. Tests work however the tests do modify the database. and require hard coded values to compare to that are pre-existing in the database. Currently looking for a way to use Moq to run Unit tests without having to modify Db or hard code dynamic values. Click here to see image of test setup. test setup | I now have a good understanding of how to properly use Moq to test units and have created several unit tests for my API controllers and will continue to create more to ensure full test coverage. | March 31,2021 | April 10. 2021 |
10 | While consuming APIs in postman worked, I ran into issues with sending post request in my project. The properties that required DateTime inputs are requiring Datetime inputs even though in the model the datatype is DateTime.Date. Currently looking for solutions to this issue. | Problem is now resolved. Issue was caused by having the default value of "dateTime.Now" in the model to be assigned upon construction of a new object of type Ticket. This was interfering with the assignment of the incident date and due date properties in SQL server | April 5,2021 | April 6, 2021 |
11 | While creating Xunit tests for Api controllers utilizing Moq I ran into an issue where Asserting the return value for the AddTicket action method. The mothod returns a CreatedResult object. The issue seems to be in the controller where it can not retrieve the values passed to the method in the Set portion of my test. The method works as show in postman. | Issue occured becuase of null Reff when creating a createResult object. Issue was solved by returning an OkResult object | April 14,2021 | May 06, 2021 |
12 | Critical Issue occured after I modified all my user CRUD operations in both my API and my DB. Tickets do not save into the DB utilizing either the API or the Web operation. Issue was discovered while attempting to test web features. | I=Issue occurred because of changes I made to the API and DB. The Api would not add tickets because the "save.changes" method was commented out for some reason. The Web page would not save the ticket because a required value of UserID was not being properly bound to the model being retrieved by the Action method which pushes that model/object to the API where the UserId can not be null error was being thrown. | May 09,2021 | May 09, 2021 |
SQL Mock DB Script: Users:20, Tickets:500, TicketComments:750
TODO:// π
- Create Dashboard view
- Create Ticket Submission view
- Create Contact Page
- Create Contact Page Profile Cards
- Create View Tickets Page
- create database Api
- Create Scrum board
- Create Manage Team View Page and BLL
- Assign name values to grid columns and rows for easier media queries.
- Normalize DB
- Link DB
- Optimize Mobile View
- Optimize classes
- Create Unit tests
- Run Unit Tests
- Regression Tests
- Intigration Tests
- Systems Test
- Acceptance Test