/
Hooks.cs
62 lines (55 loc) · 2.59 KB
/
Hooks.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
using System.IO;
using BoDi;
using BookShop.AcceptanceTests.Drivers;
using BookShop.AcceptanceTests.Drivers.Integrated;
using BookShop.AcceptanceTests.Drivers.Selenium;
using BookShop.Mvc.Logic;
using BookShop.Mvc.Models;
using Microsoft.Extensions.Configuration;
using TechTalk.SpecFlow;
using TechTalk.SpecRun;
namespace BookShop.AcceptanceTests.Support
{
[Binding]
public class Hooks
{
private readonly TestRunContext _testRunContext;
public Hooks(TestRunContext testRunContext)
{
_testRunContext = testRunContext;
}
[BeforeScenario(Order = 1)]
public void RegisterDependencies(IObjectContainer objectContainer)
{
objectContainer.RegisterInstanceAs(new DatabaseContext());
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile(Path.Combine(_testRunContext.TestDirectory, "appsettings.json"), optional: true, reloadOnChange: true)
.Build();
objectContainer.RegisterInstanceAs(config);
objectContainer.RegisterTypeAs<DatabaseContext, IDatabaseContext>();
objectContainer.RegisterTypeAs<ShoppingCartLogic, IShoppingCartLogic>();
objectContainer.RegisterTypeAs<BookLogic, IBookLogic>();
var configurationDriver = new ConfigurationDriver();
switch (configurationDriver.Mode)
{
case "Integrated":
objectContainer.RegisterTypeAs<IntegratedBookDetailsDriver, IBookDetailsDriver>();
objectContainer.RegisterTypeAs<IntegratedHomeDriver, IHomeDriver>();
objectContainer.RegisterTypeAs<IntegratedShoppingCartDriver, IShoppingCartDriver>();
objectContainer.RegisterTypeAs<IntegratedSearchDriver, ISearchDriver>();
objectContainer.RegisterTypeAs<IntegratedSearchResultDriver, ISearchResultDriver>();
break;
case "Chrome":
case "Chrome-Headless":
case "Edge":
case "Firefox":
objectContainer.RegisterTypeAs<SeleniumBookDetailsDriver, IBookDetailsDriver>();
objectContainer.RegisterTypeAs<SeleniumHomeDriver, IHomeDriver>();
objectContainer.RegisterTypeAs<SeleniumShoppingCartDriver, IShoppingCartDriver>();
objectContainer.RegisterTypeAs<SeleniumSearchDriver, ISearchDriver>();
objectContainer.RegisterTypeAs<SeleniumSearchResultDriver, ISearchResultDriver>();
break;
}
}
}
}