using Util.Data.EntityFrameworkCore.Migrations;
using Util.Helpers;
using Xunit;
using Xunit.Abstractions;
namespace Util.Data.EntityFrameworkCore.Tests;
///
/// 迁移文件服务测试
///
public class MigrationFileServiceTest {
///
/// 迁移文件服务
///
private readonly IMigrationFileService _service;
///
/// 测试消息输出
///
private readonly ITestOutputHelper _testOutputHelper;
///
/// 迁移目录路径
///
private readonly string _migrationsPath;
///
/// 测试初始化
///
public MigrationFileServiceTest( IMigrationFileService service, ITestOutputHelper testOutputHelper ) {
_service = service;
_testOutputHelper = testOutputHelper;
_migrationsPath = Common.JoinPath( Common.GetCurrentDirectory(), "Samples/Migrations" );
}
///
/// 测试获取迁移文件路径
///
[Fact]
public void TestGetFilePath() {
var path = _service.MigrationsPath( _migrationsPath ).MigrationName( "Init" ).GetFilePath();
var result = Common.JoinPath( Common.GetCurrentDirectory(), "Samples/Migrations/20230302102051_Init.cs" );
Assert.Equal( result, path.Replace( "\\","/" ) );
}
///
/// 测试获取迁移文件内容
///
[Fact]
public void TestGetContent() {
var content = _service.MigrationsPath( _migrationsPath ).MigrationName( "Init" ).GetContent();
Assert.Contains( "public partial class Init : Migration", content );
Assert.Contains( "table.ForeignKey", content );
}
///
/// 测试移除所有外键
///
[Fact]
public void TestRemoveForeignKeys() {
var filePath = Common.JoinPath( Common.GetCurrentDirectory(), "Samples/Migrations/Init_Copy.cs" );
_service.MigrationsPath( _migrationsPath ).MigrationName( "Init" ).RemoveForeignKeys().Save( filePath );
var result = Util.Helpers.File.ReadToString( filePath );
_testOutputHelper.WriteLine(result);
Assert.DoesNotContain( "table.ForeignKey", result );
Util.Helpers.File.Delete( filePath );
}
}