Beispiel #1
0
        public async Task CompleteCompletesProjectAndChildTasks()
        {
            //Given
            var db         = GenerateInMemDbContext(nameof(CompleteCompletesProjectAndChildTasks));
            var cctx       = GenerateFakeControllerContext();
            var mapper     = GetMapper();
            var controller = new ProjectController(db, mapper);

            //When
            controller.ControllerContext = cctx;
            var user = new IdentityUser();

            user.Id    = USER_ID;
            user.Email = USER_NAME;
            var other = new IdentityUser();

            other.Id    = Guid.NewGuid().ToString();
            other.Email = "someone else";
            var projects = new []
            {
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 100
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 50
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 0
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = other, UserId = other.Id, CompletionStatus = 0
                },
            };
            var tasks = new []
            {
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 0, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 50, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 100, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 0, Project = projects[2], ProjectId = projects[2].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 50, Project = projects[2], ProjectId = projects[2].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 100, Project = projects[2], ProjectId = projects[2].Id
                },
            };

            await db.Users.AddAsync(user);

            await db.Projects.AddRangeAsync(projects);

            await db.Tasks.AddRangeAsync(tasks);

            await db.SaveChangesAsync();

            //Then
            var obj = await controller.Complete(projects[2].Id);

            var result = obj as RedirectToActionResult;

            result.Should().NotBeNull(because: "We expect a Redirect result, not a " + obj.GetType().Name);
            result.ActionName.Should().Be("Index");
            projects[2].CompletionStatus.Should().Be((int)CompletionStatus.Completed);
            tasks.Where(t => t.ProjectId == projects[2].Id).All(t => t.CompletionStatus == (int)CompletionStatus.Completed).Should().BeTrue();
        }
Beispiel #2
0
        public async Task CompleteReturnsNotFoundForNonExistingProject()
        {
            //Given
            var db         = GenerateInMemDbContext(nameof(CompleteReturnsNotFoundForNonExistingProject));
            var cctx       = GenerateFakeControllerContext();
            var mapper     = GetMapper();
            var controller = new ProjectController(db, mapper);

            //When
            controller.ControllerContext = cctx;
            var user = new IdentityUser();

            user.Id    = USER_ID;
            user.Email = USER_NAME;
            var other = new IdentityUser();

            other.Id    = Guid.NewGuid().ToString();
            other.Email = "someone else";
            var projects = new []
            {
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 100
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 50
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = user, UserId = USER_ID, CompletionStatus = 0
                },
                new ProjectDto {
                    Id = Guid.NewGuid(), User = other, UserId = other.Id, CompletionStatus = 0
                },
            };
            var tasks = new []
            {
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 0, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 50, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 100, Project = projects[1], ProjectId = projects[1].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 0, Project = projects[2], ProjectId = projects[2].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 50, Project = projects[2], ProjectId = projects[2].Id
                },
                new TaskDto {
                    Id = Guid.NewGuid(), CompletionStatus = 100, Project = projects[2], ProjectId = projects[2].Id
                },
            };

            await db.Users.AddAsync(user);

            await db.Projects.AddRangeAsync(projects);

            await db.Tasks.AddRangeAsync(tasks);

            await db.SaveChangesAsync();

            //Then
            var obj = await controller.Complete(projects[3].Id);

            var result = obj as NotFoundResult;

            result.Should().NotBeNull(because: "We expect a NotFound result, not a " + obj.GetType().Name);
        }