public void AddMenuItemToMenu_adds_menu_item_if_worker_is_not_waiter()
        {
            var numSaveChangesCalls = 0;
            var mockContext         = new MockDBContextFactory().WithSaveChangesCallback(() => ++ numSaveChangesCalls).Create();

            var repository = new RestourantRepository(mockContext);

            const string validItem1 = "valid item";

            repository.AddMenuItemToMenu(validItem1, 10.00, MenuItemKind.DRINK, EmployeeRole.BARTENDER);

            Assert.AreEqual(1, mockContext.MenuItems.Count());
            Assert.AreEqual(validItem1, mockContext.MenuItems.Last().DisplayName);
            Assert.IsTrue(0 < numSaveChangesCalls);

            numSaveChangesCalls = 0;

            const string validItem2 = "another valid item";

            repository.AddMenuItemToMenu(validItem2, 97.99, MenuItemKind.MEAL, EmployeeRole.COOK);

            Assert.AreEqual(2, mockContext.MenuItems.Count());
            Assert.AreEqual(validItem2, mockContext.MenuItems.Last().DisplayName);
            Assert.IsTrue(0 < numSaveChangesCalls);
        }
        public void AddMenuItemToMenu_failes_if_worker_is_waiter()
        {
            var mockContext = new MockDBContextFactory().Create();

            var repository = new RestourantRepository(mockContext);

            repository.AddMenuItemToMenu("invalid operation generating item", 5.00, MenuItemKind.DRINK, EmployeeRole.WAITER);
        }
        public void AddMenuItem_adds_item_with_correct_contents()
        {
            var mockContext = new MockDBContextFactory().Create();

            var repository = new RestourantRepository(mockContext);

            const string       itemName  = "item name";
            const double       itemPrice = 19.99;
            const MenuItemKind itemKind  = MenuItemKind.DRINK;

            repository.AddMenuItemToMenu(itemName, itemPrice, itemKind, EmployeeRole.BARTENDER);

            var inserted = mockContext.MenuItems.Last();

            Assert.AreEqual(itemName, inserted.DisplayName);
            Assert.AreEqual(itemPrice, inserted.Price);
            Assert.AreEqual(itemKind, inserted.Kind);
        }