master
1using System.Collections.Generic;
2using System.Windows.Forms;
3using MbUnit.Framework;
4using Notepad.Infrastructure.Core;
5using Notepad.Presentation.Model.Menu;
6using Notepad.Test.Extensions;
7using Rhino.Mocks;
8
9namespace Notepad.Presentation.Views.Menu.Mappers {
10 public class SubMenuToToolStripMenuItemMapperSpecs {}
11
12 [TestFixture]
13 public class when_mapping_a_sub_menu_to_a_tool_strip_menu_item_ {
14 private MockRepository mockery;
15 private ISubMenu subMenu;
16 private IList<IMenuItem> menuItems;
17 private IMenuItemToToolStripMenuItemMapper mapper;
18
19 [SetUp]
20 public void SetUp() {
21 mockery = new MockRepository();
22 subMenu = mockery.DynamicMock<ISubMenu>();
23 mapper = mockery.DynamicMock<IMenuItemToToolStripMenuItemMapper>();
24 menuItems = new List<IMenuItem>();
25
26 SetupResult.For(subMenu.Name()).Return("&File");
27 SetupResult.For(subMenu.AllMenuItems()).Return(menuItems);
28 }
29
30 [Test]
31 public void should_return_a_non_null_value() {
32 using (mockery.Record()) {}
33
34 using (mockery.Playback()) {
35 CreateSUT().MapFrom(subMenu).ShouldNotBeNull();
36 }
37 }
38
39 [Test]
40 public void should_return_a_menu_item_with_the_sub_menus_name_applied_as_its_text() {
41 using (mockery.Record()) {}
42
43 using (mockery.Playback()) {
44 CreateSUT().MapFrom(subMenu).Text.ShouldBeEqualTo("&File");
45 }
46 }
47
48 [Test]
49 public void should_map_each_of_the_sub_menus_menu_items_to_tool_strip_menu_items() {
50 var firstMenuItem = mockery.DynamicMock<IMenuItem>();
51
52 menuItems.Add(firstMenuItem);
53 using (mockery.Record()) {
54 Expect
55 .Call(mapper.MapFrom(firstMenuItem))
56 .Return(new ToolStripMenuItem())
57 .Repeat
58 .AtLeastOnce();
59 }
60
61 using (mockery.Playback()) {
62 CreateSUT().MapFrom(subMenu);
63 }
64 }
65
66 [Test]
67 public void should_add_all_the_mapped_menu_items_to_the_menu_item_representing_the_sub_menu() {
68 var firstMenuItem = mockery.DynamicMock<IMenuItem>();
69 var mappedMenuItem = new ToolStripMenuItem();
70
71 menuItems.Add(firstMenuItem);
72 using (mockery.Record()) {
73 SetupResult
74 .For(mapper.MapFrom(firstMenuItem))
75 .Return(mappedMenuItem)
76 .Repeat
77 .AtLeastOnce();
78 }
79
80 using (mockery.Playback()) {
81 CreateSUT().MapFrom(subMenu).DropDownItems.Contains(mappedMenuItem)
82 .ShouldBeEqualTo(true);
83 }
84 }
85
86 private IMapper<ISubMenu, ToolStripMenuItem> CreateSUT() {
87 return new SubMenuToToolStripMenuItemMapper(mapper);
88 }
89 }
90}