public void CanGetById()
        {
            var provider   = new PlanStorageProviderMonitor(GenerateRefTree());
            var repository = new PlanRepository(new PlanStorage(new PlanCache(new ExpirationStrategyMock()), provider));

            Assert.AreEqual(NewGuid(2), repository.GetById <ActivityDO>(NewGuid(2)).Id);
        }
        public void CanPersistPropertyChanges()
        {
            var provider   = new PlanStorageProviderMonitor(GenerateRefTree());
            var cache      = new PlanCache(new ExpirationStrategyMock());
            var repository = new PlanRepository(new PlanStorage(cache, provider));

            repository.GetById <ActivityDO>(NewGuid(2)).Label = "newName";
            repository.GetById <ActivityDO>(NewGuid(3)).Label = "newName3";

            repository.SaveChanges();

            repository = new PlanRepository(new PlanStorage(cache, provider));

            Assert.AreEqual("newName", repository.GetById <ActivityDO>(NewGuid(2)).Label, "Labels are different");
            Assert.AreEqual("newName3", repository.GetById <ActivityDO>(NewGuid(3)).Label, "Labels are different");
        }
        public void CanUpdateProperties()
        {
            var provider        = new PlanStorageProviderMonitor(GenerateRefTree());
            var repository      = new PlanRepository(new PlanStorage(new PlanCache(new ExpirationStrategyMock()), provider));
            var expectedChanges = new ExpectedChanges
            {
                Updates =
                {
                    new ExpectedObjectChange(NewGuid(2), "Label", "newName"),
                    new ExpectedObjectChange(NewGuid(3), "Label", "newName3")
                }
            };

            repository.GetById <ActivityDO>(NewGuid(2)).Label = "newName";
            repository.GetById <ActivityDO>(NewGuid(3)).Label = "newName3";

            repository.SaveChanges();

            ValidateChanges(expectedChanges, provider.SubmittedChanges);
        }
        public void CanUpdateStructure()
        {
            var provider        = new PlanStorageProviderMonitor(GenerateRefTree());
            var repository      = new PlanRepository(new PlanStorage(new PlanCache(new ExpirationStrategyMock()), provider));
            var expectedChanges = new ExpectedChanges
            {
                Inserted = { NewGuid(4) },
                Deleted  = { NewGuid(3) }
            };

            repository.GetById <ActivityDO>(NewGuid(3)).Label = "newName";
            repository.GetById <ActivityDO>(NewGuid(3)).RemoveFromParent();
            repository.GetById <ActivityDO>(NewGuid(1)).ChildNodes.Add(new ActivityDO
            {
                Id    = NewGuid(4),
                Label = "Base4",
            });

            repository.SaveChanges();

            ValidateChanges(expectedChanges, provider.SubmittedChanges);
        }