You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.3 KiB
86 lines
3.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using Datory;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using SSCMS.Configuration;
|
|
using SSCMS.Core.Extensions;
|
|
using SSCMS.Core.Plugins.Extensions;
|
|
using SSCMS.Services;
|
|
using SSCMS.Utils;
|
|
|
|
namespace SSCMS.Core.Tests
|
|
{
|
|
public class IntegrationTestsFixture : IDisposable
|
|
{
|
|
public IConfiguration Configuration { get; }
|
|
public string ContentRootPath { get; }
|
|
public string WebRootPath { get; }
|
|
public ServiceProvider Provider { get; }
|
|
|
|
public IntegrationTestsFixture()
|
|
{
|
|
var codeBaseUrl = new Uri(Assembly.GetExecutingAssembly().Location);
|
|
var codeBasePath = Uri.UnescapeDataString(codeBaseUrl.AbsolutePath);
|
|
var dirPath = Path.GetDirectoryName(codeBasePath);
|
|
|
|
ContentRootPath = DirectoryUtils.GetParentPath(DirectoryUtils.GetParentPath(DirectoryUtils.GetParentPath(dirPath)));
|
|
WebRootPath = PathUtils.Combine(ContentRootPath, Constants.WwwrootDirectory);
|
|
|
|
Configuration = new ConfigurationBuilder()
|
|
.SetBasePath(ContentRootPath)
|
|
.AddJsonFile(Constants.ConfigFileName)
|
|
.Build();
|
|
|
|
var services = new ServiceCollection();
|
|
|
|
ConfigureServices(services);
|
|
|
|
Provider = services.BuildServiceProvider();
|
|
|
|
var settingsManager = Provider.GetService<ISettingsManager>();
|
|
if (settingsManager.Database.DatabaseType == DatabaseType.SQLite)
|
|
{
|
|
var filePath = PathUtils.Combine(settingsManager.ContentRootPath, "database.sqlite");
|
|
if (!FileUtils.IsFileExists(filePath))
|
|
{
|
|
FileUtils.WriteText(filePath, string.Empty);
|
|
}
|
|
}
|
|
var databaseManager = Provider.GetService<IDatabaseManager>();
|
|
databaseManager.SyncDatabaseAsync().GetAwaiter().GetResult();
|
|
|
|
//var (_, repositories) = databaseRepository.GetAllRepositories(cache, settingsManager);
|
|
|
|
//databaseRepository.InstallDatabaseAsync("admin", "admin888", repositories).GetAwaiter().GetResult();
|
|
}
|
|
|
|
private void ConfigureServices(IServiceCollection services)
|
|
{
|
|
var entryAssembly = Assembly.GetExecutingAssembly();
|
|
var assemblies = new List<Assembly> { entryAssembly }.Concat(entryAssembly.GetReferencedAssemblies().Select(Assembly.Load));
|
|
|
|
var settingsManager = services.AddSettingsManager(Configuration, ContentRootPath, WebRootPath, entryAssembly);
|
|
services.AddPlugins(Configuration, settingsManager);
|
|
|
|
services.AddCache(settingsManager.Redis.ConnectionString);
|
|
|
|
services.AddRepositories(assemblies);
|
|
services.AddServices();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
//var db = new Database(SettingsManager.DatabaseType, SettingsManager.DatabaseConnectionString);
|
|
//var tableNames = db.GetTableNamesAsync().GetAwaiter().GetResult();
|
|
//foreach (var tableName in tableNames)
|
|
//{
|
|
// db.DropTableAsync(tableName).GetAwaiter().GetResult();
|
|
//}
|
|
// ... clean up test data from the database ...
|
|
}
|
|
}
|
|
}
|