public void ReturnNotFoundIfCantFindTodo()
        {
            var controller = new TodosController(_mockRepository.Object, Mapper.Engine);

            var response = controller.Get(1) as NotFoundResult;
            response.ShouldNotBeNull();
        }
        public void GetOverdueTodos()
        {
            var controller = new TodosController(_mockRepository.Object, Mapper.Engine);
            var query = SetupDefaultODataQuery(controller);
            var allTodos = new List<TodoModel>
            {
                new TodoModel {completed = true, deadlineUtc = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1))}, // deadline was yesterday, but its already completed
                new TodoModel {id = 5, completed = false, deadlineUtc = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1))},// overdue
                new TodoModel {completed = false, deadlineUtc = DateTime.UtcNow.Add(TimeSpan.FromDays(1))}, // not due until tomorrow
                new TodoModel {completed = true, deadlineUtc = DateTime.UtcNow.Add(TimeSpan.FromDays(1))},  // not due until tomorrow
            };
            _mockRepository.Setup(x => x.GetAll()).Returns(allTodos);

            var response = controller.Get(query, true) as OkNegotiatedContentResult<List<TodoRepresentation>>;
            response.ShouldNotBeNull();
            response.Content.Count.ShouldEqual(1);
            response.Content.Single().id.ShouldEqual(5);
            AreEquivalent(allTodos[1], response.Content.Single()).ShouldBeTrue();
        }
        public void GetTodo()
        {
            var controller = new TodosController(_mockRepository.Object, Mapper.Engine);

            TodoModel todo = new TodoModel
            {
                id = 3,
                deadlineUtc = DateTime.UtcNow,
                completed = false,
                task = "Some task"
            };

            _mockRepository.Setup(x => x.Get(todo.id)).Returns(todo);

            var response = controller.Get(todo.id) as OkNegotiatedContentResult<TodoRepresentation>;
            response.ShouldNotBeNull();
            AreEquivalent(todo, response.Content).ShouldBeTrue();
        }