master
 1using System.Collections.Generic;
 2using MbUnit.Framework;
 3using Notepad.Domain.Repositories;
 4using Notepad.Infrastructure.Extensions;
 5using Notepad.Presentation.Model.Menu.Help;
 6using Notepad.Test.Extensions;
 7using Rhino.Mocks;
 8
 9namespace Notepad.Presentation.Model.Menu.Help {
10    public class HelpMenuSpecs {}
11
12    [TestFixture]
13    public class when_asking_the_help_menu_for_its_name_ {
14        [Test]
15        public void should_return_the_correct_name() {
16            CreateSUT().Name().ShouldBeEqualTo(MenuNames.Help);
17        }
18
19        private ISubMenu CreateSUT() {
20            return new HelpMenu(null);
21        }
22    }
23
24    [TestFixture]
25    public class when_asking_the_help_menu_for_its_menu_items_ {
26        private MockRepository mockery;
27        private IRepository<IMenuItem> repository;
28        private ISubMenu sut;
29
30        [SetUp]
31        public void SetUp() {
32            mockery = new MockRepository();
33            repository = mockery.DynamicMock<IRepository<IMenuItem>>();
34            sut = CreateSUT();
35        }
36
37        [Test]
38        public void should_ask_the_repository_for_all_the_menu_items() {
39            using (mockery.Record()) {
40                Expect
41                    .Call(repository.All())
42                    .Return(new List<IMenuItem>())
43                    .Repeat
44                    .AtLeastOnce();
45            }
46
47            using (mockery.Playback()) {
48                sut.AllMenuItems().Walk();
49            }
50        }
51
52        [Test]
53        public void should_return_the_menu_items_that_belong_to_the_help_menu() {
54            var saveMenuItem = mockery.DynamicMock<IMenuItem>();
55            var helpMenuItem = mockery.DynamicMock<IMenuItem>();
56
57            var allMenuItems = new List<IMenuItem> {saveMenuItem, helpMenuItem};
58
59            using (mockery.Record()) {
60                SetupResult.For(repository.All()).Return(allMenuItems);
61                SetupResult.For(saveMenuItem.BelongsTo(sut)).Return(false);
62                SetupResult.For(helpMenuItem.BelongsTo(sut)).Return(true);
63            }
64
65            using (mockery.Playback()) {
66                var returnedItems = sut.AllMenuItems();
67                returnedItems.ShouldNotContain(saveMenuItem);
68                returnedItems.ShouldContain(helpMenuItem);
69            }
70        }
71
72        private ISubMenu CreateSUT() {
73            return new HelpMenu(repository);
74        }
75    }
76}