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}