public void _04_AddOrder_ShouldAddAnOrderToTheOrdersCollectionAndInvokeTheOrderCreatedEvent()
        {
            AssertHasOrdersPropertyWithBackingField();
            AssertHasOrderCreatedEvent();

            //Arrange
            bool eventRaised     = false;
            int  numberOfBurgers = Random.Next(1, 11);

            _eventInfo.AddEventHandler(_frontDesk, new OrderCreatedHandler((sender, args) =>
            {
                eventRaised = true;
                Assert.That(args.Order.NumberOfBurgers, Is.EqualTo(numberOfBurgers), "The 'NumberOfBurgers' of the added order is not correct.");
            }));

            //Act
            _frontDesk.AddOrder(numberOfBurgers);

            //Assert
            var orders = (ReadOnlyObservableCollection <IOrder>)_ordersProperty.GetValue(_frontDesk);

            Assert.That(orders.Count, Is.EqualTo(1), "The added order cannot be found in the 'Orders' property.");
            Assert.That(orders.First().NumberOfBurgers, Is.EqualTo(numberOfBurgers), "The 'NumberOfBurgers' of the added order is not correct.");
            Assert.That(eventRaised, Is.True, "The 'OrderCreated' event was not invoked.");
        }
        public void ShouldListenForCreatedOrdersAndAddThemInAQueue()
        {
            Queue <IOrder> queue = GetAndAssertQueueFieldValue();

            _frontDesk.AddOrder(1);

            Assert.That(queue.Count, Is.EqualTo(1),
                        "When the 'AddOrder' method of the 'Frontdesk' is invoked, the queue should contain exactly one order.");
        }