コード例 #1
0
        public async Task UpdatesItemAfterAddingIt()
        {
            // add an item
            var repository   = GetRepository();
            var initialTitle = Guid.NewGuid().ToString();
            var item         = new ToDoItemBuilder().Title(initialTitle).Build();

            repository.Add(item);
            _dbContext.SaveChanges();

            // detach the item so we get a different instance
            _dbContext.Entry(item).State = EntityState.Detached;

            // fetch the item and update its title
            var newItem = await repository.FirstOrDefaultAsync(ToDoItemSpecs.ByTitle(initialTitle));

            Assert.NotNull(newItem);
            Assert.NotSame(item, newItem);
            var newTitle = Guid.NewGuid().ToString();

            newItem.Title = newTitle;

            // Update the item
            repository.Update(newItem);
            var updatedItem = await repository.FirstOrDefaultAsync(ToDoItemSpecs.ByTitle(initialTitle));

            Assert.NotNull(updatedItem);
            Assert.NotEqual(item.Title, updatedItem.Title);
            Assert.Equal(newItem.Id, updatedItem.Id);
        }
コード例 #2
0
        public void DeletesItemAfterAddingIt()
        {
            // add an item
            var repository   = GetRepository();
            var initialTitle = Guid.NewGuid().ToString();
            var item         = new ToDoItemBuilder().Title(initialTitle).Build();

            repository.Add(item);

            // delete the item
            repository.Delete(item);

            // verify it's no longer there
            Assert.DoesNotContain(repository.List(ToDoItemSpecs.ByTitle(initialTitle)),
                                  i => i.Title == initialTitle);
        }