Ejemplo n.º 1
0
        protected virtual void ResolveDatasource(GetRenderingDatasourceArgs args)
        {
            var contextItem = args.ContentDatabase.GetItem(args.ContextItemPath);
            var source      = args.RenderingItem[Templates.DatasourceConfiguration.Fields.DatasourceLocation];
            var name        = DatasourceConfigurationService.GetSiteDatasourceConfigurationName(source);

            if (string.IsNullOrEmpty(name))
            {
                return;
            }

            var datasources = new Item[] {};
            var provider    = providerFactory.GetProvider(args.ContentDatabase);

            if (provider != null)
            {
                datasources = provider.GetDatasources(name, contextItem);
            }

            if (!datasources.Any())
            {
                provider = providerFactory.GetFallbackProvider(args.ContentDatabase);
                if (provider == null)
                {
                    return;
                }

                datasources = provider.GetDatasources(name, contextItem);
            }

            args.DatasourceRoots.AddRange(datasources);
        }
        public void Process_FallbackDatasourceProviderIsNotNull_SourcesAndTemplateAreSet(IDatasourceProvider sourceProvider, [Substitute] DatasourceProviderFactory factory, DbItem renderingItem, Db db, string settingName, Item[] sources, Item sourceTemplate)
        {
            var processor = new GetDatasourceLocationAndTemplateFromSite(factory);

            sourceProvider.GetDatasources(Arg.Any <string>(), Arg.Any <Item>()).Returns(sources);
            sourceProvider.GetDatasourceTemplate(Arg.Any <string>(), Arg.Any <Item>()).Returns(sourceTemplate);
            factory.GetProvider(Arg.Any <Database>()).Returns((IDatasourceProvider)null);
            factory.GetFallbackProvider(Arg.Any <Database>()).Returns(sourceProvider);
            var setting = settingName.Replace("-", string.Empty);

            renderingItem.Add(new DbField("Datasource Location")
            {
                { "en", $"site:{setting}" }
            });
            db.Add(renderingItem);
            var rendering = db.GetItem(renderingItem.ID);
            var args      = new GetRenderingDatasourceArgs(rendering);

            processor.Process(args);
            args.DatasourceRoots.Should().Contain(sources);
            args.Prototype.Should().Be(sourceTemplate);
        }
        public void GetFallbackProvider_ConfigurationIsNotDefined_ShouldReturnNull(DatasourceProviderFactory factory, Database db)
        {
            var provider = factory.GetFallbackProvider(db);

            provider.Should().BeNull();
        }
 public void GetFallbackProvider_ConfigurationIsNotDefined_ShouldReturnNull(DatasourceProviderFactory factory, Database db)
 {
   var provider = factory.GetFallbackProvider(db);
   provider.Should().BeNull();
 }