Ejemplo n.º 1
0
        public void HiveManager_OpensContentWriter_InferredFromRepositoryType()
        {
            // Arrange
            var context  = new FakeFrameworkContext();
            var metadata = new ProviderMetadata("test", new Uri("unimportant://"), true, false);
            var groups   = new[]
            {
                new ProviderMappingGroup("default-content",
                                         new WildcardUriMatch("content://*"),
                                         new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         context),
                new ProviderMappingGroup("default-storage",
                                         new WildcardUriMatch("storage://*"),
                                         new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         context),
                new ProviderMappingGroup("default-assets",
                                         new WildcardUriMatch("assets://*"),
                                         new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0),
                                         context)
            };
            HiveManager manager = new HiveManager(groups, context);

            // Act
            var writer = manager.OpenWriter <IContentStore>();

            // Assert
            Assert.IsNotNull(writer);
        }
        public void WhenEntityIsAdded_PreAddOrUpdateBeforeUnitComplete_TaskChangesItem_ItemIsSavedWithNewValues()
        {
            // Arrange
            var nhibernateTestSetup = new NhibernateTestSetupHelper();

            var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext);

            var hive = new HiveManager(
                    new[]
                        {
                            new ProviderMappingGroup(
                                "test",
                                new WildcardUriMatch("content://"),
                                nhibernateTestSetup.ReadonlyProviderSetup,
                                nhibernateTestSetup.ProviderSetup,
                                nhibernateTestSetup.FakeFrameworkContext),
                            storageProvider.CreateGroup("uploader", "storage://file-uploader"),
                        },
                    nhibernateTestSetup.FakeFrameworkContext);

            var eventMock = Substitute.For<AbstractTask>(hive.FrameworkContext);
            eventMock.When(x => x.Execute(Arg.Any<TaskExecutionContext>()))
                .Do(x =>
            {
                var context = x.Args()[0] as TaskExecutionContext;
                if(context != null)
                {
                    var uow = context.EventSource as IGroupUnit<IProviderTypeFilter>;
                    var args = context.EventArgs.CallerEventArgs as HiveEntityPreActionEventArgs;
                    if (uow != null && args != null)
                    {
                        var item = args.Entity as TypedEntity;
                        if (item != null &&
                            item.Attributes.Any(
                                y => y.AttributeDefinition.Alias == NodeNameAttributeDefinition.AliasValue))
                        {
                            item.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"] = "Something else";

                            uow.Repositories.AddOrUpdate(item);
                        }
                    }
                }
            });

            // Act
            hive.FrameworkContext.TaskManager.AddTask(TaskTriggers.Hive.PreAddOrUpdateOnUnitComplete, () => eventMock, true);

            var id = HiveId.Empty;

            using (var uow = hive.OpenWriter<IContentStore>())
            {
                var anything = HiveModelCreationHelper.MockTypedEntity();

                // Cause the task to be fired
                uow.Repositories.AddOrUpdate(anything);
                uow.Complete();

                id = anything.Id;
            }

            using (var uow = hive.OpenWriter<IContentStore>())
            {
                // Cause the task to be fired
                var getItem = uow.Repositories.Get(id); // Store is mocked

                Assert.NotNull(getItem);

                // Assert the task has been fired
                Assert.AreEqual("Something else", getItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]);
            }
        }
Ejemplo n.º 3
0
        public void HiveManager_OpensContentWriter_InferredFromRepositoryType()
        {
            // Arrange
            var context = new FakeFrameworkContext();
            var metadata = new ProviderMetadata("test", new Uri("unimportant://"), true, false);
            var groups = new[]
                             {
                                 new ProviderMappingGroup("default-content",
                                                          new WildcardUriMatch("content://*"),
                                                          new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          context),
                                 new ProviderMappingGroup("default-storage",
                                                          new WildcardUriMatch("storage://*"),
                                                          new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          context),
                                 new ProviderMappingGroup("default-assets",
                                                          new WildcardUriMatch("assets://*"),
                                                          new UninstalledReadonlyProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          new UninstalledProviderSetup(metadata, context, new NoopProviderBootstrapper(), 0), 
                                                          context)
                             };
            HiveManager manager = new HiveManager(groups , context);

            // Act
            var writer = manager.OpenWriter<IContentStore>();

            // Assert
            Assert.IsNotNull(writer);
        }
        public void WhenEntityIsAdded_PreAddOrUpdateBeforeUnitComplete_TaskChangesItem_ItemIsSavedWithNewValues()
        {
            // Arrange
            var nhibernateTestSetup = new NhibernateTestSetupHelper();

            var storageProvider = new IoHiveTestSetupHelper(nhibernateTestSetup.FakeFrameworkContext);

            var hive = new HiveManager(
                new[]
            {
                new ProviderMappingGroup(
                    "test",
                    new WildcardUriMatch("content://"),
                    nhibernateTestSetup.ReadonlyProviderSetup,
                    nhibernateTestSetup.ProviderSetup,
                    nhibernateTestSetup.FakeFrameworkContext),
                storageProvider.CreateGroup("uploader", "storage://file-uploader"),
            },
                nhibernateTestSetup.FakeFrameworkContext);

            var eventMock = Substitute.For <AbstractTask>(hive.FrameworkContext);

            eventMock.When(x => x.Execute(Arg.Any <TaskExecutionContext>()))
            .Do(x =>
            {
                var context = x.Args()[0] as TaskExecutionContext;
                if (context != null)
                {
                    var uow  = context.EventSource as IGroupUnit <IProviderTypeFilter>;
                    var args = context.EventArgs.CallerEventArgs as HiveEntityPreActionEventArgs;
                    if (uow != null && args != null)
                    {
                        var item = args.Entity as TypedEntity;
                        if (item != null &&
                            item.Attributes.Any(
                                y => y.AttributeDefinition.Alias == NodeNameAttributeDefinition.AliasValue))
                        {
                            item.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"] = "Something else";

                            uow.Repositories.AddOrUpdate(item);
                        }
                    }
                }
            });

            // Act
            hive.FrameworkContext.TaskManager.AddTask(TaskTriggers.Hive.PreAddOrUpdateOnUnitComplete, () => eventMock, true);

            var id = HiveId.Empty;

            using (var uow = hive.OpenWriter <IContentStore>())
            {
                var anything = HiveModelCreationHelper.MockTypedEntity();

                // Cause the task to be fired
                uow.Repositories.AddOrUpdate(anything);
                uow.Complete();

                id = anything.Id;
            }

            using (var uow = hive.OpenWriter <IContentStore>())
            {
                // Cause the task to be fired
                var getItem = uow.Repositories.Get(id); // Store is mocked

                Assert.NotNull(getItem);

                // Assert the task has been fired
                Assert.AreEqual("Something else", getItem.Attributes[NodeNameAttributeDefinition.AliasValue].Values["Name"]);
            }
        }