-
Notifications
You must be signed in to change notification settings - Fork 10
/
ProviderFactoryTest.cs
89 lines (74 loc) · 2.55 KB
/
ProviderFactoryTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Thunderstruck.Runtime;
using FluentAssertions;
using Thunderstruck.Provider.Common;
using Moq;
using Thunderstruck.Provider;
namespace Thunderstruck.Test.Unit
{
[TestClass]
public class ProviderFactoryTest
{
private ProviderFactory factory;
[TestInitialize]
public void Initialize()
{
ProviderFactory.CustomProvider = null;
ProviderFactory.ConnectionFactory = null;
factory = new ProviderFactory();
}
[TestMethod]
public void ProviderFactory_Should_Solve_Sql_Server_Provider()
{
var provider = factory.ResolveDataProvider("System.Data.SqlClient");
provider.Should().BeOfType<SqlProvider>();
}
[TestMethod]
public void ProviderFactory_Should_Solve_Oracle_Provider()
{
var provider = factory.ResolveDataProvider("System.Data.OracleClient");
provider.Should().BeOfType<OracleProvider>();
}
[TestMethod]
public void ProviderFactory_Should_Solve_MySql_Provider()
{
var provider = factory.ResolveDataProvider("MySql.Data.MySqlClient");
provider.Should().BeOfType<MySqlProvider>();
}
[TestMethod]
[ExpectedException(typeof(ThunderException))]
public void ProviderFactory_Should_Throw_Exception_When_Not_Found_A_Valid_Provider()
{
factory.ResolveDataProvider("Invalid.Provider");
}
[TestMethod]
public void ProviderFactory_Should_Throw_Exception_With_An_Informative_Message_When_Not_Found_A_Valid_Provider()
{
try
{
factory.ResolveDataProvider("Invalid.Provider");
}
catch (Exception error)
{
error.Message.Should().Contain("Invalid.Provider");
}
try
{
factory.ResolveDataProvider("Another.Crazy.Provider");
}
catch (Exception error)
{
error.Message.Should().Contain("Another.Crazy.Provider");
}
}
[TestMethod]
public void ProviderFactory_Should_Solve_A_Custom_Provider()
{
var providerMock = new Mock<IDataProvider>();
ProviderFactory.CustomProvider = (providerName) => providerMock.Object;
var provider = factory.ResolveDataProvider("Any.Provider");
provider.Should().Be(providerMock.Object);
}
}
}