public void UpdatingItemThatDoesNotExistActsLikeAdd()
        {
            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var entity = testRepository.Create();
                testRepository.Update(entity);
                testRepository.Save();
            }

            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4, 5 }, testRepository.Entities.Select(x => x.Id).ToArray());
            }
        }
        public void UpdateTheSameItemMultipleTimes()
        {
            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var entity = testRepository.Entities.First(x => x.Id == 1);
                entity.Contents.Name   = "newname1";
                entity.Contents.Number = -1;
                testRepository.Update(entity);
                entity.Contents.Name   = "newname2";
                entity.Contents.Number = -2;
                testRepository.Update(entity);
                testRepository.Save();
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, testRepository.Entities.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, testRepository.Entities.Select(x => x.Id).ToArray());
                var entity = testRepository.Entities.First(x => x.Id == 1);
                Assert.AreEqual("newname2", entity.Contents.Name);
                Assert.AreEqual(-2, entity.Contents.Number);
            }
        }
        public void DataReadFromRepoIsDisconnectedFromSession()
        {
            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var collection1 = testRepository.Entities.Where(x => new[] { 1, 2 }.Contains(x.Id)).ToArray();
                testRepository.Delete(collection1[0]);
                testRepository.Delete(collection1[1]);
                var collection2 = testRepository.Entities.Where(x => new[] { 1, 2 }.Contains(x.Id)).ToArray();
                CollectionAssert.AreEquivalent(new[] { 1, 2 }, collection1.Select(x => x.Id).ToArray());
                CollectionAssert.AreEquivalent(new int[] {}, collection2.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var collection1 = testRepository.Entities.ToArray();
                var entity1     = testRepository.Create();
                var entity2     = testRepository.Create();
                testRepository.Add(entity1);
                testRepository.Add(entity2);
                var collection2 = testRepository.Entities.ToArray();

                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, collection1.Select(x => x.Id).ToArray());
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4, 5, 6 }, collection2.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var    collection1    = testRepository.Entities.ToArray();
                var    entity         = collection1[0];
                string originalName   = entity.Contents.Name;
                int    originalNumber = entity.Contents.Number;
                entity.Contents.Name   = "foo";
                entity.Contents.Number = -1;
                testRepository.Update(entity);
                var collection2 = testRepository.Entities.ToArray();

                Assert.AreNotEqual(originalName, collection2[0].Contents.Name);
                Assert.AreNotEqual(originalNumber, collection2[0].Contents.Number);
            }
        }
        public void UpdateNullEntity()
        {
            var testRepository = new DurableMemoryRepository <EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object);

            testRepository.Update(null);
        }
        public void DataReadFromRepoIsDisconnectedFromSession()
        {
            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var collection1 = testRepository.Entities.Where(x => new[]{1, 2}.Contains(x.Id)).ToArray();
                testRepository.Delete(collection1[0]);
                testRepository.Delete(collection1[1]);
                var collection2 = testRepository.Entities.Where(x => new[] { 1, 2 }.Contains(x.Id)).ToArray();
                CollectionAssert.AreEquivalent(new[] { 1, 2 }, collection1.Select(x => x.Id).ToArray());
                CollectionAssert.AreEquivalent(new int[] {}, collection2.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var collection1 = testRepository.Entities.ToArray();
                var entity1 = testRepository.Create();
                var entity2 = testRepository.Create();
                testRepository.Add(entity1);
                testRepository.Add(entity2);
                var collection2 = testRepository.Entities.ToArray();
                
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, collection1.Select(x => x.Id).ToArray());
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4, 5, 6 }, collection2.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var collection1 = testRepository.Entities.ToArray();
                var entity = collection1[0];
                string originalName = entity.Contents.Name;
                int originalNumber = entity.Contents.Number;
                entity.Contents.Name = "foo";
                entity.Contents.Number = -1;
                testRepository.Update(entity);
                var collection2 = testRepository.Entities.ToArray();

                Assert.AreNotEqual(originalName, collection2[0].Contents.Name);
                Assert.AreNotEqual(originalNumber, collection2[0].Contents.Number);
            }
        }
        public void UpdateTheSameItemMultipleTimes()
        {
            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var entity = testRepository.Entities.First(x => x.Id == 1);
                entity.Contents.Name = "newname1";
                entity.Contents.Number = -1;
                testRepository.Update(entity);
                entity.Contents.Name = "newname2";
                entity.Contents.Number = -2;
                testRepository.Update(entity);
                testRepository.Save();
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, testRepository.Entities.Select(x => x.Id).ToArray());
            }

            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4 }, testRepository.Entities.Select(x => x.Id).ToArray());
                var entity = testRepository.Entities.First(x => x.Id == 1);
                Assert.AreEqual("newname2", entity.Contents.Name);
                Assert.AreEqual(-2, entity.Contents.Number);
            }
        }
        public void UpdatingItemThatDoesNotExistActsLikeAdd()
        {
            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                var entity = testRepository.Create();
                testRepository.Update(entity);
                testRepository.Save();
            }

            using (var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object))
            {
                CollectionAssert.AreEquivalent(new[] { 1, 2, 4, 5 }, testRepository.Entities.Select(x => x.Id).ToArray());
            }
        }
 public void UpdateNullEntity()
 {
     var testRepository = new DurableMemoryRepository<EntityTest>(MockDataPath, _mockProvider.MockFileSystem.Object);
     testRepository.Update(null);
 }