master
 1using System.Windows.Forms;
 2using MbUnit.Framework;
 3using Notepad.Presentation.Model.Menu;
 4using Notepad.Presentation.Views.Menu.Mappers;
 5using Notepad.Presentation.Views.Shell;
 6using Notepad.Test.Extensions;
 7using Rhino.Mocks;
 8
 9namespace Notepad.Presentation.Views.Menu {
10    public class MainMenuViewSpecs {}
11
12    [TestFixture]
13    public class when_adding_sub_menus_to_the_main_menu_ {
14        private MockRepository mockery;
15        private ISubMenuToToolStripMenuItemMapper mapper;
16        private MenuStrip mainMenuStrip;
17        private WindowShell mainShell;
18
19        [SetUp]
20        public void SetUp() {
21            mockery = new MockRepository();
22            mapper = mockery.DynamicMock<ISubMenuToToolStripMenuItemMapper>();
23            mainShell = mockery.DynamicMock<WindowShell>();
24            mainMenuStrip = new MenuStrip();
25
26            SetupResult.For(mainShell.MenuStrip()).Return(mainMenuStrip);
27        }
28
29        [Test]
30        public void should_leverage_the_mapper_to_map_the_sub_menu_to_a_tool_strip_menu_item() {
31            var subMenu = mockery.DynamicMock<ISubMenu>();
32            var subMenuToolStripMenuItem = new ToolStripMenuItem();
33
34            using (mockery.Record()) {
35                Expect
36                    .Call(mapper.MapFrom(subMenu))
37                    .Return(subMenuToolStripMenuItem)
38                    .Repeat
39                    .AtLeastOnce();
40            }
41
42            using (mockery.Playback()) {
43                CreateSUT().Add(subMenu);
44            }
45        }
46
47        [Test]
48        public void should_add_the_mapped_menu_strip_item_to_the_main_menu_strip() {
49            var subMenu = mockery.DynamicMock<ISubMenu>();
50            var subMenuToolStripMenuItem = new ToolStripMenuItem();
51
52            using (mockery.Record()) {
53                SetupResult
54                    .For(mapper.MapFrom(subMenu))
55                    .Return(subMenuToolStripMenuItem);
56            }
57
58            using (mockery.Playback()) {
59                CreateSUT().Add(subMenu);
60                mainMenuStrip.Items.Contains(subMenuToolStripMenuItem)
61                    .ShouldBeEqualTo(true);
62            }
63        }
64
65        private IMainMenuView CreateSUT() {
66            return new MainMenuView(mainShell, mapper);
67        }
68    }
69}