public ScriptedExtension ScriptProviderFor <T>(T extensionWithScripts) where T : IRequireDatabaseScripts { var scriptProvider = new FunnelWebScriptProvider( typeof(T).Assembly, x => x.EndsWith(".sql", StringComparison.InvariantCultureIgnoreCase), databaseProviderName); return(new ScriptedExtension(extensionWithScripts.SourceIdentifier, typeof(T).Assembly, scriptProvider)); }
public void WhenDatabaseProviderSpecificScriptIsPresentIgnoreGeneric() { var assembly = Substitute.For <_Assembly>(); assembly.GetManifestResourceStream(Arg.Any <string>()).Returns(c => new MemoryStream(Encoding.UTF8.GetBytes("132"))); assembly.GetManifestResourceNames().Returns(new[] { "Script0001.sql", "Script0001_sqlce.sql", "Script0001_sql.sql", //to test when multiple providers specified "Script0002.sql", "Script0002_sql.sql", //to test when another provider is specified only "Script0003.sql" }); var scriptProvider = new FunnelWebScriptProvider(assembly, s => s.StartsWith("Script"), "sqlce"); var scripts = scriptProvider.GetScripts(() => null).ToList(); Assert.AreEqual("Script0001_sqlce.sql", scripts.Single(s => s.Name == "Script0001_sqlce.sql").Name); Assert.AreEqual("Script0002.sql", scripts.Single(s => s.Name == "Script0002.sql").Name); Assert.AreEqual("Script0003.sql", scripts.Single(s => s.Name == "Script0003.sql").Name); Assert.AreEqual(3, scripts.Count); }