public void Given_EnoughMoneyAvailable_And_CoinsInserted_Then_MakeExchangeRequest_Should_ReturnNotesSuccessfully_And_UpdateAvailableMoney()
        {
            var initialMoney = new MoneyBuilder(Currency.Dollar)
                               .AddNotes(10, 40)
                               .AddNotes(5, 10)
                               .AddNotes(2, 20)
                               .AddNotes(1, 11)
                               .Build();
            var insertedMoney = new MoneyBuilder(Currency.Dollar)
                                .AddCoins(25, 1000)
                                .AddCoins(10, 1500)
                                .AddCoins(5, 1000)
                                .AddCoins(1, 5000)
                                .Build();
            var exchangeResult = new MoneyBuilder(Currency.Dollar)
                                 .AddNotes(10, 40)
                                 .AddNotes(5, 10)
                                 .AddNotes(2, 20)
                                 .AddNotes(1, 10)
                                 .Build();
            var moneyAfterExchange = new MoneyBuilder(Currency.Dollar)
                                     .AddNotes(1)
                                     .Build();

            Given_InitialMoney_And_MoneyInserted_Then_MakeExchangeRequest_Should_ReturnExpectedMoney(initialMoney,
                                                                                                     insertedMoney,
                                                                                                     HttpStatusCode.OK,
                                                                                                     exchangeResult,
                                                                                                     moneyAfterExchange);
        }
        public void Given_NotEnoughMoneyAvailable_And_CoinsInserted_Then_MakeExchangeRequest_ShouldReturnInsertedCoins_With_ErrorStatus()
        {
            var initialMoney = new MoneyBuilder(Currency.Dollar)
                               .AddNotes(1, 2)
                               .AddNotes(2, 2)
                               .AddNotes(5, 2)
                               .AddNotes(10, 2)
                               .AddCoins(1, 2)
                               .AddCoins(5, 2)
                               .AddCoins(10, 2)
                               .AddCoins(25, 2)
                               .Build();
            var insertedMoney = new MoneyBuilder(Currency.Dollar)
                                .AddCoins(1, 100)
                                .AddCoins(5, 100)
                                .AddCoins(10, 100)
                                .AddCoins(25, 1000)
                                .Build();
            var exchangeResult     = insertedMoney;
            var moneyAfterExchange = initialMoney;

            Given_InitialMoney_And_MoneyInserted_Then_MakeExchangeRequest_Should_ReturnExpectedMoney(initialMoney,
                                                                                                     insertedMoney,
                                                                                                     HttpStatusCode.Forbidden,
                                                                                                     exchangeResult,
                                                                                                     moneyAfterExchange);
        }
        private HttpResponseMessage SetNoMoney()
        {
            var money = new MoneyBuilder(Currency.Dollar).Build();

            return(SetMoney(money));
        }