Skip to content

Commit

Permalink
Revert "Revert "Revert previous changes to Core components.""
Browse files Browse the repository at this point in the history
This reverts commit d03730c5168c3d399416ea16f260be257d137c56.
  • Loading branch information
Curlack committed Nov 1, 2023
1 parent 24a158f commit b13ebd5
Show file tree
Hide file tree
Showing 26 changed files with 754 additions and 184 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
using PetaPoco.Tests.Integration.Providers;
using System.Reflection;
using PetaPoco.Tests.Integration.Providers;
using Xunit;

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleDatabaseTests : DatabaseTests
public abstract partial class OracleDatabaseTests : DatabaseTests
{
public OracleDatabaseTests()
: base(new OracleTestProvider())
protected OracleDatabaseTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleDatabaseTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleDatabaseTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}

/// <remarks>
/// We need to retain the custom provider and default mapper specified in the test provider
/// to ensure correct logic is applied.
/// </remarks>
protected override void AfterDbCreate(Database db)
{
base.AfterDbCreate(db);

// ReSharper disable once PossibleNullReferenceException
db.GetType().GetField("_provider", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, DB.Provider);
// ReSharper disable once PossibleNullReferenceException
db.GetType().GetField("_defaultMapper", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(db, DB.DefaultMapper);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,29 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleDeleteTests : DeleteTests
public abstract partial class OracleDeleteTests : DeleteTests
{
public OracleDeleteTests()
: base(new OracleTestProvider())
protected OracleDeleteTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleDeleteTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleDeleteTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,29 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleExecuteTests : ExecuteTests
public abstract partial class OracleExecuteTests : ExecuteTests
{
public OracleExecuteTests()
: base(new OracleTestProvider())
protected OracleExecuteTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleExecuteTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleExecuteTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,29 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleInsertTests : InsertTests
public abstract partial class OracleInsertTests : InsertTests
{
public OracleInsertTests()
: base(new OracleTestProvider())
protected OracleInsertTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleInsertTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleInsertTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,29 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleMiscellaneousTests : MiscellaneousTests
public abstract partial class OracleMiscellaneousTests : MiscellaneousTests
{
public OracleMiscellaneousTests()
: base(new OracleTestProvider())
protected OracleMiscellaneousTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleMiscellaneousTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleMiscellaneousTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,79 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OraclePreExecuteTests : PreExecuteTests
public abstract partial class OraclePreExecuteTests : PreExecuteTests
{
protected override IPreExecuteDatabaseProvider Provider => DB.Provider as PreExecuteDatabaseProvider;

public OraclePreExecuteTests()
: base(new PreExecuteTestProvider())
protected OraclePreExecuteTests(TestProvider provider)
: base(provider)
{
Provider.ThrowExceptions = true;
}

protected class PreExecuteTestProvider : OracleTestProvider
[Collection("Oracle.Delimited")]
public class Delimited : OraclePreExecuteTests
{
protected override IDatabase LoadFromConnectionName(string name)
=> BuildFromConnectionName(name).UsingProvider<PreExecuteDatabaseProvider>().Create();
protected override IPreExecuteDatabaseProvider Provider => DB.Provider as PreExecuteDatabaseProvider;

public Delimited()
: base(new PreExecuteTestProvider())
{
Provider.ThrowExceptions = true;
}

protected class PreExecuteTestProvider : OracleDelimitedTestProvider
{
protected override IDatabase LoadFromConnectionName(string name)
=> BuildFromConnectionName(name).UsingProvider<PreExecuteDatabaseProvider>().Create();
}

protected class PreExecuteDatabaseProvider : PetaPoco.Providers.OracleDatabaseProvider, IPreExecuteDatabaseProvider
{
public bool ThrowExceptions { get; set; }
public List<IDataParameter> Parameters { get; set; } = new List<IDataParameter>();

public override void PreExecute(IDbCommand cmd)
{
Parameters.Clear();

if (ThrowExceptions)
{
Parameters = cmd.Parameters.Cast<IDataParameter>().ToList();
throw new PreExecuteException();
}
}
}
}

protected class PreExecuteDatabaseProvider : PetaPoco.Providers.OracleDatabaseProvider, IPreExecuteDatabaseProvider
[Collection("Oracle.Ordinary")]
public class Ordinary : OraclePreExecuteTests
{
public bool ThrowExceptions { get; set; }
public List<IDataParameter> Parameters { get; set; } = new List<IDataParameter>();
protected override IPreExecuteDatabaseProvider Provider => DB.Provider as PreExecuteDatabaseProvider;

public Ordinary()
: base(new PreExecuteTestProvider())
{
Provider.ThrowExceptions = true;
}

public override void PreExecute(IDbCommand cmd)
protected class PreExecuteTestProvider : OracleOrdinaryTestProvider
{
Parameters.Clear();
protected override IDatabase LoadFromConnectionName(string name)
=> BuildFromConnectionName(name).UsingProvider<PreExecuteDatabaseProvider>().Create();
}

if (ThrowExceptions)
protected class PreExecuteDatabaseProvider : PetaPoco.Providers.OracleDatabaseProvider, IPreExecuteDatabaseProvider
{
public bool ThrowExceptions { get; set; }
public List<IDataParameter> Parameters { get; set; } = new List<IDataParameter>();

public override void PreExecute(IDbCommand cmd)
{
Parameters = cmd.Parameters.Cast<IDataParameter>().ToList();
throw new PreExecuteException();
Parameters.Clear();

if (ThrowExceptions)
{
Parameters = cmd.Parameters.Cast<IDataParameter>().ToList();
throw new PreExecuteException();
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,29 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleQueryLinqTests : QueryLinqTests
public abstract partial class OracleQueryLinqTests : QueryLinqTests
{
public OracleQueryLinqTests()
: base(new OracleTestProvider())
protected OracleQueryLinqTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleQueryLinqTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleQueryLinqTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,31 @@

namespace PetaPoco.Tests.Integration.Databases.Oracle
{
[Collection("Oracle")]
public class OracleQueryTests : QueryTests
public abstract partial class OracleQueryTests : QueryTests
{
public OracleQueryTests()
: base(new OracleTestProvider())
protected OracleQueryTests(TestProvider provider)
: base(provider)
{
}

[Collection("Oracle.Delimited")]
public class Delimited : OracleQueryTests
{
public Delimited()
: base(new OracleDelimitedTestProvider())
{
}
}

[Collection("Oracle.Ordinary")]
public class Ordinary : OracleQueryTests
{
public Ordinary()
: base(new OracleOrdinaryTestProvider())
{
}
}

[Fact]
public override async Task FetchAsyncWithPaging_ForDynamicTypeGivenSql_ShouldReturnValidDynamicTypeCollection()
{
Expand Down
Loading

0 comments on commit b13ebd5

Please sign in to comment.