12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Configuration;
- using System.IO;
- using System.Text;
- #if NETCOREAPP
- using System.Linq;
- #endif
- namespace PetaPoco.Tests.Integration.Databases
- {
- public abstract class DBTestProvider : IDisposable
- {
- protected abstract string ConnectionName { get; }
- public string ProviderName => GetProviderName(ConnectionName);
- protected IDatabase Database => LoadFromConnectionName(ConnectionName);
- protected abstract string ScriptResourceName { get; }
- public virtual void Dispose()
- {
- }
- public virtual IDatabase Execute()
- {
- var db = Database;
- using (var s = GetType().Assembly.GetManifestResourceStream(ScriptResourceName))
- {
- using (var r = new StreamReader(s, Encoding.UTF8))
- {
- ExecuteBuildScript(db, r.ReadToEnd());
- }
- }
- return db;
- }
- public virtual void ExecuteBuildScript(IDatabase database, string script)
- {
- database.Execute(script);
- }
- protected virtual IDatabaseBuildConfiguration BuildFromConnectionName(string name)
- {
- #if NETCOREAPP
- return DatabaseConfiguration.Build()
- .UsingConnectionString(AppSetting.Instance.ConnectionStringFor(name).ConnectionString)
- .UsingProviderName(AppSetting.Instance.ConnectionStringFor(name).ProviderName);
- #else
- return DatabaseConfiguration.Build().UsingConnectionStringName(name);
- #endif
- }
- protected virtual IDatabase LoadFromConnectionName(string name)
- {
- return BuildFromConnectionName(name).Create();
- }
-
- public string GetProviderName(string name)
- {
- #if NETCOREAPP
- return AppSetting.Instance.ConnectionStringFor(name).ProviderName;
- #else
- return ConfigurationManager.ConnectionStrings[name].ProviderName;
- #endif
- }
- }
- }
|