master
1using System;
2using MbUnit.Framework;
3using Notepad.Presentation.Core;
4using Notepad.Test.Extensions;
5using Rhino.Mocks;
6
7namespace Notepad.Infrastructure.Container {
8 public class ResolveSpecs {}
9
10 [TestFixture]
11 public class when_resolving_a_dependency_using_the_resolve_gateway_ {
12 private MockRepository mockery;
13 private IDependencyRegistry registry;
14
15 [SetUp]
16 public void SetUp() {
17 mockery = new MockRepository();
18 registry = mockery.DynamicMock<IDependencyRegistry>();
19 Resolve.InitializeWith(registry);
20 }
21
22 [Test]
23 public void should_leverage_the_underlying_container_it_was_initialized_with() {
24 var presenter = mockery.DynamicMock<IPresenter>();
25
26 using (mockery.Record()) {
27 Expect
28 .Call(registry.FindAnImplementationOf<IPresenter>())
29 .Return(presenter)
30 .Repeat
31 .AtLeastOnce();
32 }
33
34 using (mockery.Playback()) {
35 Resolve.DependencyFor<IPresenter>();
36 }
37 }
38
39 [Test]
40 public void should_return_the_resolved_dependency() {
41 var presenter = mockery.DynamicMock<IPresenter>();
42
43 using (mockery.Record()) {
44 Expect
45 .Call(registry.FindAnImplementationOf<IPresenter>())
46 .Return(presenter)
47 .Repeat
48 .AtLeastOnce();
49 }
50
51 using (mockery.Playback()) {
52 Resolve.DependencyFor<IPresenter>().ShouldBeEqualTo(presenter);
53 }
54 }
55 }
56
57 [TestFixture]
58 public class when_resolving_a_dependency_that_is_not_registered_ {
59 private MockRepository mockery;
60 private IDependencyRegistry registry;
61
62 [SetUp]
63 public void SetUp() {
64 mockery = new MockRepository();
65 registry = mockery.DynamicMock<IDependencyRegistry>();
66 Resolve.InitializeWith(registry);
67 }
68
69 [Test]
70 [ExpectedException(typeof (DependencyResolutionException<IPresenter>))]
71 public void should_throw_a_dependency_resolution_exception() {
72 using (mockery.Record()) {
73 SetupResult
74 .For(registry.FindAnImplementationOf<IPresenter>())
75 .Throw(new Exception());
76 }
77
78 using (mockery.Playback()) {
79 Resolve.DependencyFor<IPresenter>();
80 }
81 }
82 }
83}