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(); }