Skip to content

Commit dcffe86

Browse files
committed
Added StopUsingMockAdapter method per issue ThatRendle#162
1 parent 2f74d15 commit dcffe86

10 files changed

Lines changed: 62 additions & 5 deletions

Simple.Data.BehaviourTest/App.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@
88
<simpleData>
99
<simpleDataConfiguration traceLevel="Error"/>
1010
</simpleData>
11+
<connectionStrings>
12+
<add connectionString="foo=bar" name="Mock" providerName="System.Data.Mock"/>
13+
</connectionStrings>
1114
</configuration>

Simple.Data.BehaviourTest/DatabaseIntegrationContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Simple.Data.IntegrationTest
1111
public abstract class DatabaseIntegrationContext
1212
{
1313
protected MockDatabase _mockDatabase;
14-
protected MockConnectionProvider _MockConnectionProvider;
14+
protected Mocking.Ado.MockConnectionProvider _MockConnectionProvider;
1515
protected dynamic _db;
1616

1717
protected abstract void SetSchema(MockSchemaProvider schemaProvider);
@@ -52,7 +52,7 @@ Database CreateDatabase(MockDatabase mockDatabase)
5252

5353
SetSchema(mockSchemaProvider);
5454

55-
_MockConnectionProvider = new MockConnectionProvider(new MockDbConnection(mockDatabase), mockSchemaProvider);
55+
_MockConnectionProvider = new Mocking.Ado.MockConnectionProvider(new MockDbConnection(mockDatabase), mockSchemaProvider);
5656
var adapter = MockHelper.CreateMockAdoAdapter(_MockConnectionProvider);
5757
MockHelper.UseMockAdapter(adapter);
5858
return Database.Open();

Simple.Data.BehaviourTest/Simple.Data.BehaviourTest.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
<Compile Include="Query\WithCountTest.cs" />
8282
<Compile Include="Query\WithTest.cs" />
8383
<Compile Include="RangeAndArrayFindTest.cs" />
84+
<Compile Include="StopUsingMockTest.cs" />
8485
<Compile Include="TraceSettingsTest.cs" />
8586
<Compile Include="TransactionTest.cs" />
8687
<Compile Include="UpdateTest.cs" />
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
namespace Simple.Data.IntegrationTest
2+
{
3+
using Ado;
4+
using Mocking.Ado;
5+
using NUnit.Framework;
6+
7+
[TestFixture]
8+
public class StopUsingMockTest : DatabaseIntegrationContext
9+
{
10+
[Test]
11+
public void StopUsingMockAdapterStopsUsingMockAdapter()
12+
{
13+
var mock = new InMemoryAdapter();
14+
Database.UseMockAdapter(mock);
15+
Database db = Database.OpenNamedConnection("Mock");
16+
Assert.AreSame(mock, db.GetAdapter());
17+
Database.StopUsingMockAdapter();
18+
db = Database.OpenNamedConnection("Mock");
19+
Assert.IsInstanceOf<AdoAdapter>(db.GetAdapter());
20+
}
21+
22+
protected override void SetSchema(MockSchemaProvider schemaProvider)
23+
{
24+
}
25+
}
26+
}

Simple.Data.Mocking/Ado/MockConnectionProvider.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,22 @@
66

77
namespace Simple.Data.Mocking.Ado
88
{
9+
using System.ComponentModel.Composition;
10+
11+
[Export("System.Data.Mock", typeof(IConnectionProvider))]
912
public class MockConnectionProvider : IConnectionProvider
1013
{
1114
private readonly DbConnection _connection;
1215
private readonly MockSchemaProvider _mockSchemaProvider;
1316
private string _identityFunction;
1417

18+
public MockConnectionProvider()
19+
{
20+
_connection = new MockDbConnection(new MockDatabase());
21+
_connection.ConnectionString = string.Empty;
22+
_mockSchemaProvider = new MockSchemaProvider();
23+
}
24+
1525
public MockConnectionProvider(DbConnection connection, MockSchemaProvider mockSchemaProvider, string identityFunction = null)
1626
{
1727
_connection = connection;
@@ -21,7 +31,6 @@ public MockConnectionProvider(DbConnection connection, MockSchemaProvider mockSc
2131

2232
public void SetConnectionString(string connectionString)
2333
{
24-
throw new NotImplementedException();
2534
}
2635

2736
public IDbConnection CreateConnection()

Simple.Data.Mocking/Ado/MockDbConnection.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ public override string ConnectionString
5252
get { return _mockDatabase.GetHashCode().ToString(); }
5353
set
5454
{
55-
throw new NotImplementedException();
5655
}
5756
}
5857

Simple.Data.Mocking/Simple.Data.Mocking.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup>
44
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -39,6 +39,7 @@
3939
</PropertyGroup>
4040
<ItemGroup>
4141
<Reference Include="System" />
42+
<Reference Include="System.ComponentModel.Composition" />
4243
<Reference Include="System.Core" />
4344
<Reference Include="System.Xml.Linq" />
4445
<Reference Include="System.Data.DataSetExtensions" />

Simple.Data/Database.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@ public static void UseMockAdapter(Func<Adapter> mockAdapterCreator)
201201
Data.DatabaseOpener.UseMockAdapter(mockAdapterCreator());
202202
}
203203

204+
public static void StopUsingMockAdapter()
205+
{
206+
Data.DatabaseOpener.StopUsingMock();
207+
}
208+
204209
private static TraceLevel? _traceLevel;
205210
public static TraceLevel TraceLevel
206211
{

Simple.Data/DatabaseOpener.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,10 @@ internal static Database OpenMethod(string adapterName, object settings)
9797
{
9898
return new Database(AdapterFactory.Create(adapterName, settings));
9999
}
100+
101+
public static void StopUsingMock()
102+
{
103+
OpenMethods.StopUsingMock();
104+
}
100105
}
101106
}

Simple.Data/DatabaseOpenerMethods.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,13 @@ public void UseMockAdapter(Func<Adapter> adapterCreator)
7272
_open = (ignore1, ignore2) => new Database(adapterCreator());
7373
_openConnectionWithProvider = (ignore1, ignore2) => new Database(adapterCreator());
7474
}
75+
76+
public void StopUsingMock()
77+
{
78+
_openDefault = null;
79+
_openFile = _openConnection = _openNamedConnection = null;
80+
_open = null;
81+
_openConnectionWithProvider = null;
82+
}
7583
}
7684
}

0 commit comments

Comments
 (0)