Example #1
0
        public IActionResult Get(Guid id)
        {
            var userId = GetUserIdFromContext();

            if (id.Equals(Guid.Empty))
            {
                return(BadRequest());
            }

            var dataModel = _todoRepository.Get(id, userId);

            if (dataModel == null)
            {
                return(NotFound());
            }

            var model = new TodoApiModel
            {
                id        = dataModel.Id,
                title     = dataModel.Title,
                completed = dataModel.IsCompleted
            };

            return(new ObjectResult(model));
        }
Example #2
0
        public void Calls_TodoRepository_Update()
        {
            // Arrange
            var testModel = new TodoApiModel()
            {
                id        = Guid.NewGuid(),
                title     = "Todo 1",
                completed = false
            };

            TodoDataModel dataModelSentToRepository = null;

            _mockTodoRepository.Setup(t => t.Update(It.IsAny <TodoDataModel>()))
            .Callback <TodoDataModel>(m => dataModelSentToRepository = m);

            // Act
            _objectUnderTest.Update(testModel.id, testModel);

            // Assert
            _mockTodoRepository.Verify(t => t.Update(It.IsAny <TodoDataModel>()), Times.Once());

            var expectedDataModel = new TodoDataModel()
            {
                Id          = testModel.id,
                IsCompleted = testModel.completed,
                Title       = testModel.title,
                UserId      = _testUserId
            };

            dataModelSentToRepository.ShouldBeEquivalentTo(expectedDataModel);
        }
Example #3
0
        public void Returns_TodoApiModel_If_Repository_Get_Returns_DataModel()
        {
            // Arrange
            var id = Guid.NewGuid();

            var repositoryGetResult = new TodoDataModel
            {
                Id          = id,
                IsCompleted = false,
                Title       = "A saved todo",
                UserId      = _testUserId
            };

            _mockTodoRepository.Setup(x => x.Get(id, _testUserId))
            .Returns(repositoryGetResult);

            // Act
            var actualResult = _objectUnderTest.Get(id);

            // Assert
            Assert.IsType <ObjectResult>(actualResult);
            var objectResult = actualResult as ObjectResult;

            var expectedResult = new TodoApiModel
            {
                id        = repositoryGetResult.Id,
                completed = repositoryGetResult.IsCompleted,
                title     = repositoryGetResult.Title
            };

            var objectResultTodoModel = objectResult?.Value as TodoApiModel;

            objectResultTodoModel.ShouldBeEquivalentTo(expectedResult);
        }
Example #4
0
        public void Put(int id, [FromBody] TodoApiModel model)
        {
            var todoItem = _todoService.Todos
                           .FirstOrDefault(todo => todo.Id == id);

            todoItem.IsComplete  = model?.IsComplete ?? todoItem.IsComplete;
            todoItem.Name        = model?.Name ?? todoItem.Name;
            todoItem.Description = model?.Description ?? todoItem.Description;
            //       null chain operator: ^             ^ :null coelesce
        }
Example #5
0
        private async Task TestGet(TodoApiClient client, TodoApiModel model)
        {
            var single = await client.GetAsync(model.Id);

            Assert.Equal(model.Task, single.Task);

            var all = await client.GetAllAsync();

            Assert.NotEmpty(all.Where(x => x.Id == model.Id && x.Task == model.Task));
        }
Example #6
0
        private async Task TestDelete(TodoApiClient client, TodoApiModel model)
        {
            var deletedTodo = await client.DeleteAsync(model.Id);

            await Assert.ThrowsAsync <ApiException>(async() => await client.GetAsync(model.Id));

            var all = await client.GetAllAsync();

            Assert.Empty(all.Where(x => x.Id == model.Id));
        }
Example #7
0
        private async Task <TodoApiModel> TestUpdate(TodoApiClient client, TodoApiModel model, string task)
        {
            var updateRequest = new TodoRequestApiModel {
                Task = task
            };
            var updatedTodo = await client.PutAsync(model.Id, updateRequest);

            await TestGet(client, updatedTodo);

            return(updatedTodo);
        }
Example #8
0
        public void Throws_InvalidOperationException_If_A_Valid_UserId_Cannot_Be_Found_In_Claims(string userId)
        {
            // Arrange
            _objectUnderTest.UserId = () => userId;

            var testModel = new TodoApiModel()
            {
                id        = Guid.NewGuid(),
                title     = "My new todo",
                completed = false
            };

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => _objectUnderTest.Add(testModel));
        }
Example #9
0
        public void Returns_BadRequest_If_Todo_Id_Is_Empty()
        {
            // Arrange
            var testModel = new TodoApiModel()
            {
                id        = Guid.Empty,
                title     = "My new todo",
                completed = false
            };

            // Act
            var actualResult = _objectUnderTest.Add(testModel);

            // Assert
            Assert.IsType <BadRequestResult>(actualResult);
        }
Example #10
0
        public void Returns_NoContentResult_On_Success()
        {
            // Arrange
            var testModel = new TodoApiModel()
            {
                id        = Guid.NewGuid(),
                title     = "Todo 1",
                completed = false
            };

            // Act
            var actualResult = _objectUnderTest.Update(testModel.id, testModel);

            // Assert
            Assert.IsType <NoContentResult>(actualResult);
        }
Example #11
0
        public void Returns_BadRequest_If_Todo_Title_Is_Not_Set(string title)
        {
            // Arrange
            var testModel = new TodoApiModel()
            {
                id        = Guid.NewGuid(),
                title     = title,
                completed = false
            };

            // Act
            var actualResult = _objectUnderTest.Update(testModel.id, testModel);

            // Assert
            Assert.IsType <BadRequestResult>(actualResult);
        }
Example #12
0
        public void Returns_BadRequest_If_Id_From_Route_Does_Not_Match_Item_Id()
        {
            // Arrange
            var modelId = Guid.NewGuid();
            var routeId = Guid.NewGuid();

            var testModel = new TodoApiModel
            {
                id        = modelId,
                title     = "My updated todo",
                completed = false
            };

            // Act
            var actualResult = _objectUnderTest.Update(routeId, testModel);

            // Assert
            Assert.IsType <BadRequestResult>(actualResult);
        }
Example #13
0
        public IActionResult Update(Guid id, [FromBody] TodoApiModel item)
        {
            var userId = GetUserIdFromContext();

            if (item == null || item.id != id || string.IsNullOrWhiteSpace(item.title))
            {
                return(BadRequest());
            }

            _todoRepository.Update(
                new TodoDataModel
            {
                Id          = item.id,
                Title       = item.title,
                IsCompleted = item.completed,
                UserId      = userId
            });

            return(new NoContentResult());
        }
Example #14
0
        public IActionResult Add([FromBody] TodoApiModel item)
        {
            var userId = GetUserIdFromContext();

            if (item == null || item.id.Equals(Guid.Empty) || string.IsNullOrWhiteSpace(item.title))
            {
                return(BadRequest());
            }

            _todoRepository.Add(
                new TodoDataModel
            {
                Id          = item.id,
                Title       = item.title,
                IsCompleted = item.completed,
                UserId      = userId
            });

            return(CreatedAtRoute("GetTodo", new { item.id }, item));
        }
Example #15
0
        public void Returns_CreatedAtRoute_On_Success()
        {
            // Arrange
            var testModel = new TodoApiModel()
            {
                id        = Guid.NewGuid(),
                title     = "Todo 1",
                completed = false
            };

            // Act
            var actualResult = _objectUnderTest.Add(testModel);

            // Assert
            Assert.IsType <CreatedAtRouteResult>(actualResult);

            var createdAtRouteResult = actualResult as CreatedAtRouteResult;

            Assert.Equal("GetTodo", createdAtRouteResult.RouteName);
            createdAtRouteResult.Value.ShouldBeEquivalentTo(testModel);
        }
Example #16
0
 public ActionResult <string> gravar([FromBody] TodoApiModel todo)
 {
     //exemplo
     return("Exemplo Post: Id: " + 20 + " Nome: " + todo.Name.ToString());
 }
Example #17
0
 public void Post([FromBody] TodoApiModel model)
 {
     _todoService.Todos.Add(model);
 }
Example #18
0
 public ActionResult <string> editar(int id, [FromBody] TodoApiModel todo)
 {
     return("Exemplo Put: Id: " + id + " Nome: " + todo.Name);
 }