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}