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}