private static Bug CreateClosedBug()
        {
            var bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            bug.Resolve();
            bug.Close("reason");
            return(bug);
        }
        public void Bug_WhenResolve_ThenStausIsDone()
        {
            //Given
            Bug bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            var mondayDate = new DateTime(2017, 10, 2);

            TimeProvider.Current = new TestTimeProvider(mondayDate);
            //When
            bug.Resolve();
            //Then
            bug.Status.ShouldBe(Status.Done);
        }
        public void Bug_WhenResolveOnWeekend_ThenExceptionIsThrown()
        {
            //Given
            Bug bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            var sundayDate = new DateTime(2017, 10, 1);

            TimeProvider.Current = new TestTimeProvider(sundayDate);
            //When
            Action action = () => bug.Resolve();

            //Then
            Should.Throw <DomainException>(action);
        }
        public void Bug_WhenClosing_ThenNoUserIsAssigned()
        {
            //Given
            var bug = new Bug();

            bug.Triage(Severity.High, Priority.High);
            bug.AssignUser(new User("testuser", UserRole.Dev));
            var mondayDate = new DateTime(2017, 10, 2);

            TimeProvider.Current = new TestTimeProvider(mondayDate);
            bug.Resolve();
            //When
            bug.Close("reason");
            //Then
            bug.AssignedUser.ShouldBeNull();
        }
        public static void Seed(BugManagementContext context)
        {
            var bug1 = new Bug
            {
                Id          = Guid.NewGuid(),
                Title       = "Cannot create ticket",
                Description = "When clicking create button exception is thrown"
            };

            bug1.AssignUser(context.Users.First(u => u.Role == UserRole.Dev));

            var bug2 = new Bug
            {
                Id          = Guid.NewGuid(),
                Title       = "Create button has typo 'crete'",
                Description = "Create button has text 'crete' instead of 'create'"
            };

            bug2.Triage(Severity.Low, Priority.Low);

            var bug3 = new Bug
            {
                Id          = Guid.NewGuid(),
                Title       = "Cannot assign bug to developer",
                Description = "There should be possiblity to assign bug to developer so that everyone knows who is fixing the bug"
            };

            bug3.Triage(Severity.Medium, Priority.High);
            bug3.AssignUser(context.Users.First(u => u.Role == UserRole.Qa));
            bug3.Resolve();

            var bug4 = new Bug
            {
                Id          = Guid.NewGuid(),
                Title       = "Poor performance of application",
                Description = "Application is slow, almost every action requires >5sec to complete."
            };

            context.Bugs.AddRange(new List <Bug>
            {
                bug1,
                bug2,
                bug3,
                bug4
            });
        }