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}