From 611289c02f11f4ae4c5873f208db8457a93c9074 Mon Sep 17 00:00:00 2001 From: Ruidy Nemausat Date: Tue, 25 Feb 2020 14:19:44 +0100 Subject: [PATCH] - --- Controllers/ProjectsController.cs | 3 +- Data/ProjectRepository.cs | 4 ++- Models/Project.cs | 4 +++ Startup.cs | 6 +++- .../UnitTests/ProjectControllerTests.cs | 32 ++++++++++++++++++- 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/Controllers/ProjectsController.cs b/Controllers/ProjectsController.cs index e3b52a5..82a1ee9 100644 --- a/Controllers/ProjectsController.cs +++ b/Controllers/ProjectsController.cs @@ -38,7 +38,6 @@ namespace TicketManager.Controllers [ProducesResponseType(StatusCodes.Status200OK)] public async Task> GetProjects() { - return await _projects.List(); } @@ -196,7 +195,7 @@ namespace TicketManager.Controllers /// Not Found [ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(StatusCodes.Status404NotFound)] - [HttpPut("{id}/members")] + [HttpPatch("{id}/members")] public async Task> SetProjectMembers(int id, List projectMembers) { Project project = await _projects.Get(id); diff --git a/Data/ProjectRepository.cs b/Data/ProjectRepository.cs index ec8dede..202f9d9 100644 --- a/Data/ProjectRepository.cs +++ b/Data/ProjectRepository.cs @@ -15,7 +15,9 @@ namespace TicketManager.Data .Include(p => p.Assignments).ThenInclude(a => a.User) .Include(p => p.Tickets) .Include(p => p.Manager) - .Include(p => p.Files); + .Include(p => p.Files) + // .AsNoTracking() + ; } public override async Task Get(int id) diff --git a/Models/Project.cs b/Models/Project.cs index fceedcf..7f1df5a 100644 --- a/Models/Project.cs +++ b/Models/Project.cs @@ -95,6 +95,10 @@ namespace TicketManager.Models public void RemoveMembers(List membersToRemove) { this.Assignments.RemoveAll(a => membersToRemove.Contains(a.User)); + + // membersToRemove.ForEach( + // m => m.Assignments.RemoveAll(a => (a.Project == this)) + // ); } public void SetMembers(List projectMembers) diff --git a/Startup.cs b/Startup.cs index f86c247..6edc27f 100644 --- a/Startup.cs +++ b/Startup.cs @@ -36,7 +36,11 @@ namespace TicketManager public void ConfigureServices(IServiceCollection services) { services.AddDbContext(options => - options.UseSqlite(Configuration.GetConnectionString("Sqlite"))); + { + options.UseSqlite(Configuration.GetConnectionString("Sqlite")); + options.EnableSensitiveDataLogging(true); //Remove in production. + } + ); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/Tests/TicketManager.Tests/UnitTests/ProjectControllerTests.cs b/Tests/TicketManager.Tests/UnitTests/ProjectControllerTests.cs index 6e22d36..ce54e8f 100644 --- a/Tests/TicketManager.Tests/UnitTests/ProjectControllerTests.cs +++ b/Tests/TicketManager.Tests/UnitTests/ProjectControllerTests.cs @@ -6,7 +6,7 @@ using Moq; using TicketManager.Controllers; using TicketManager.Data; using TicketManager.Models; - +using TicketManager.DTO; namespace TicketManager.Tests { @@ -28,6 +28,22 @@ namespace TicketManager.Tests var viewResult = Assert.IsAssignableFrom>(result); } + [Fact] + public async Task Get1_ReturnsProject1() + { + // Arrange + var mockRepo = new Mock(); + mockRepo.Setup(r => r.Get(1)); + // .ReturnsAsync(GetProjectDTO()); + var controller = new ProjectsController(mockRepo.Object); + + // Act + var result = await controller.GetProject(1); + + // Assert + var viewResult = Assert.IsAssignableFrom(result); + } + private List GetTestProjects() { var projects = new List(); @@ -46,6 +62,20 @@ namespace TicketManager.Tests return projects; } + private ProjectDTO GetProjectDTO() + { + var project = new Project() + { + Id = 1, + PlannedEnding = new DateTime(2016, 7, 2), + Title = "Test One", + Description = "Lorem Ipsum", + Status = Status.InProgress + }; + + return new ProjectDTO(project); + } + // [Fact] // public void Get_ReturnsProjectList()