[InlineData("Football", "", TodoStatus.InProgress, "2020-05-15T14:29:15.1823029Z", "2020-05-19T21:00:00.0000000Z")] // without Description
        public void GivenValidTodo_Insert_AddsTodo(string title, string description, TodoStatus status, string createdOn, string dueDate)
        {
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            var entity = new TodoModel()
            {
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn),
                DueDate     = DateTime.Parse(dueDate)
            };

            var todo = repo.Insert(entity);

            var all     = Container.Elements();
            var element = all.First(a => a.Attribute("Id").Value == todo.Id.ToString());

            Assert.NotNull(element);
            Assert.Equal(todo.Id.ToString(), element.Attribute("Id").Value);
            Assert.Equal(todo.Title, element.Element("Title").Value);
            Assert.Equal(todo.Description, element.Element("Description").Value);
            Assert.Equal(todo.Status.ToString(), element.Element("Status").Value);
            Assert.Equal(todo.CreatedOn.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("CreatedOn").Value);
            Assert.Equal(todo.DueDate.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("DueDate").Value);
        }
        public void GivenValidID_GetById_ReturnsCorrectTodo()
        {
            //arrange
            var expectedTodo = new TodoModel();
            var guid         = Guid.Parse("00000000-0000-0000-0000-000000000001");

            expectedTodo.Id          = guid;
            expectedTodo.Title       = "Unit tests";
            expectedTodo.Description = "Learn how to make unit tests";
            expectedTodo.Status      = TodoStatus.Open;
            expectedTodo.CreatedOn   = DateTime.Parse("2020-04-15T14:29:15.1823029Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
            expectedTodo.DueDate     = DateTime.Parse("2020-04-19T21:00:00.0000000Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);

            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            //act
            var todo = repo.GetById(guid);

            //assert
            Assert.Equal(todo.Id, expectedTodo.Id);
            Assert.Equal(todo.Title, expectedTodo.Title);
            Assert.Equal(todo.Description, expectedTodo.Description);
            Assert.Equal(todo.Status, expectedTodo.Status);
            Assert.Equal(todo.CreatedOn, expectedTodo.CreatedOn);
            Assert.Equal(todo.DueDate, expectedTodo.DueDate);
        }
        [InlineData("Football", "", TodoStatus.InProgress, "2020-05-15T14:29:15.1823029Z", "2020-05-19T21:00:00.0000000Z")] // without Description
        public void GivenValidTodo_Insert_ReturnsNewTodo(string title, string description, TodoStatus status, string createdOn, string dueDate)
        {
            //arrange
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            var entity = new TodoModel()
            {
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind),
                DueDate     = DateTime.Parse(dueDate, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
            };

            //act
            var todo = repo.Insert(entity);

            //assert
            Assert.NotNull(todo);
            Assert.NotEmpty(todo.Id.ToString());
            Assert.NotEqual("00000000-0000-0000-0000-000000000000", todo.Id.ToString());
            Assert.Equal(todo.Title, entity.Title);
            Assert.Equal(todo.Description, entity.Description);
            Assert.Equal(todo.Status, entity.Status);
            Assert.Equal(todo.CreatedOn, entity.CreatedOn);
            Assert.Equal(todo.DueDate, entity.DueDate);
        }
        [InlineData("600e0400-3c00-0000-3000-020050000001", "Football", "", TodoStatus.InProgress, "2020-05-15T14:29:15.1823029Z", "2020-05-19T21:00:00.0000000Z")] // without Description
        public void GivenNotExistedId_Update_DoesNothing(string id, string title, string description, TodoStatus status, string createdOn, string dueDate)
        {
            //arrange
            var todo = new TodoModel()
            {
                Id          = Guid.Parse(id),
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn),
                DueDate     = DateTime.Parse(dueDate)
            };

            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            //act
            todo.Title       = "Concert";
            todo.Description = "Go to Metallica concert";
            repo.Update(todo);

            //assert
            var all     = Container.Elements();
            var element = all.FirstOrDefault(a => a.Attribute("Id").Value == todo.Id.ToString());

            Assert.Null(element);
        }
        [InlineData("a00e0400-3000-0000-3000-000050000001", "Football", "", TodoStatus.InProgress, "2020-05-15T14:29:15.1823029Z", "2020-05-19T21:00:00.0000000Z")] // without Description
        public void GivenValidEntity_Update_UpdateEntity(string id, string title, string description, TodoStatus status, string createdOn, string dueDate)
        {
            //arrange
            var todo = new TodoModel()
            {
                Id          = Guid.Parse(id),
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn),
                DueDate     = DateTime.Parse(dueDate)
            };

            var todoAsElement = EntityToElement(todo);

            Container.Add(todoAsElement);

            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            //act
            todo.Title       = "Concert";
            todo.Description = "Go to Metallica concert";
            repo.Update(todo);

            //assert
            var all     = Container.Elements();
            var element = all.First(a => a.Attribute("Id").Value == todo.Id.ToString());

            Assert.Equal(todo.Id.ToString(), element.Attribute("Id").Value);
            Assert.Equal(todo.Title, element.Element("Title").Value);
            Assert.Equal(todo.Description, element.Element("Description").Value);
            Assert.Equal(todo.Status.ToString(), element.Element("Status").Value);
            Assert.Equal(todo.CreatedOn.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("CreatedOn").Value);
            Assert.Equal(todo.DueDate.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("DueDate").Value);
        }
        public void Save_ReturnsTrue()
        {
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            var isSaved = repo.Save();

            Assert.True(isSaved);
        }
        public void GivenValidID_GetById_ReturnsTodoEntity(string id)
        {
            var repo = new Xml.TodoRepository(MockXmlContext.Object);
            var guid = new Guid(id);

            var todo = repo.GetById(guid);

            Assert.NotNull(todo);
        }
        public void Save_CallContextSave()
        {
            MockXmlContext.Setup(a => a.Save());
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            repo.Save();

            MockXmlContext.Verify(a => a.Save(), Times.Once);
        }
Exemple #9
0
        public void GivenEmptyId_GetById_ReturnsNull()
        {
            //Arange
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            //Act
            var todo = repo.GetById(Guid.Empty);

            //Assert
            Assert.Null(todo);
        }
Exemple #10
0
        public void GivenEmptyRepository_GetAll_ReturnsEmpty()
        {
            // Arrange
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            // Act
            var all = repo.GetAll();

            // Assert
            Assert.Empty(all);
        }
Exemple #11
0
        [InlineData("", "Go to a picnic with friends", TodoStatus.Open, "2020-05-15T14:29:15.1823029Z", "2020-05-19T21:00:00.0000000Z")] // without title
        public void GivenInvalidTodo_Insert_ThrowsArgumentException(string title, string description, TodoStatus?status, string createdOn, string dueDate)
        {
            var repo  = new Xml.TodoRepository(MockXmlContext.Object);
            var model = new TodoModel
            {
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn),
                DueDate     = DateTime.Parse(dueDate)
            };

            var ex = Assert.Throws <ArgumentException>(() => repo.Insert(model));

            Assert.Equal("Empty todo!", ex.Message);
        }
Exemple #12
0
        public void GivenInvalidTodoEntity_Update_ThrowsException(string title, string description, TodoStatus?status, string createdOn, string dueDate)
        {
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            var todo = new TodoModel()
            {
                Title       = title,
                Description = description,
                Status      = status,
                CreatedOn   = DateTime.Parse(createdOn),
                DueDate     = DateTime.Parse(dueDate)
            };

            todo.Title       = "";
            todo.Description = "Go to Metallica concert";

            var ex = Assert.Throws <ArgumentException>(() => repo.Update(todo));

            Assert.Equal("Empty todo!", ex.Message);
        }
Exemple #13
0
        public void GetAll_ReturnsAllTodos()
        {
            var repo = new Xml.TodoRepository(MockXmlContext.Object);

            var elements = Container.Elements();
            var todos    = repo.GetAll();

            Assert.Equal(elements.Count(), todos.Count());
            foreach (var todo in todos)
            {
                var element = elements.First(x => x.Attribute("Id").Value == todo.Id.ToString());
                Assert.NotNull(todo);
                Assert.NotEmpty(todo.Id.ToString());
                Assert.Equal(todo.Id.ToString(), element.Attribute("Id").Value);
                Assert.Equal(todo.Title, element.Element("Title").Value);
                Assert.Equal(todo.Description, element.Element("Description").Value);
                Assert.Equal(todo.Status.ToString(), element.Element("Status").Value);
                Assert.Equal(todo.CreatedOn.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("CreatedOn").Value);
                Assert.Equal(todo.DueDate.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture), element.Element("DueDate").Value);
            }
        }