public void Display_GivenMultipleMenusAndMoreChosen_DisplayCalledOnSecondMenu()
        {
            var fakeMenu1 = CreateMenuThatReturnsMenuItem(true);
            var mockMenu2 = CreateMenuThatReturnsMenuItem(false);
            var menu      = new LinkedMenu(new[] { fakeMenu1.Object, mockMenu2.Object });

            menu.Display();

            mockMenu2.Verify(m => m.Display());
        }
        public void Display_GivenMultipleMenusAndMoreChosenOnAllMenus_DisplayCalledAgainFirstMenu()
        {
            var mockMenu1 = CreateMenuThatReturnsMenuItem(true, false);
            var fakeMenu2 = CreateMenuThatReturnsMenuItem(true);
            var menu      = new LinkedMenu(new[] { mockMenu1.Object, fakeMenu2.Object });

            menu.Display();

            mockMenu1.Verify(m => m.Display(), Times.Exactly(2));
        }
        public void Display_GivenASingleMenuThatReturnsANonMoreMenuItem_ReturnsThatMenuItem()
        {
            var mockMenuItem = new Mock <IMenuItem>();
            var fakeMenu     = new Mock <ITextMenu>();

            fakeMenu.Setup(m => m.Display()).Returns(mockMenuItem.Object);
            var menu = new LinkedMenu(new[] { fakeMenu.Object });

            var chosen = menu.Display();

            Assert.AreSame(mockMenuItem.Object, chosen);
        }