public void SetUp()
        {
            _service    = Substitute.For <INumberToWordsService>();
            _controller = new CurrencyConverterController(_service);

            //setup controller with default request and configuration
            _controller.Request = new HttpRequestMessage();
            _controller.Request.SetConfiguration(new HttpConfiguration());
        }
        public void GetConvertedAmount_ShouldReturnSourceNotFound()
        {
            var controller = new CurrencyConverterController();

            controller.Request = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, "http://localhost:51090/CurrencyConverter?from=INR&to=USD&amount=150&source=FOO");

            var result = controller.GetConvertedAmount();

            Assert.IsInstanceOfType(result, typeof(NotFoundResult));
        }
        public void GetConvertedAmount_ShouldReturnBadFromCurrency()
        {
            string msg        = "Bad From Currency";
            var    controller = new CurrencyConverterController();

            controller.Request = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, "http://localhost:51090/CurrencyConverter?from=foo&to=USD&amount=150&source=XE");

            var result = controller.GetConvertedAmount();

            Assert.IsInstanceOfType(result, typeof(BadRequestErrorMessageResult));
            Assert.AreEqual((result as BadRequestErrorMessageResult).Message, msg);
        }
        public void GetConvertedAmount_ShouldReturnSourceNotActive()
        {
            string msg        = "Source is not Active";
            var    controller = new CurrencyConverterController();

            controller.Request = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, "http://localhost:51090/CurrencyConverter?from=INR&to=USD&amount=150&source=Yahoo");

            var result  = controller.GetConvertedAmount();
            var content = result as OkNegotiatedContentResult <CroweCurrencyConversionAPI.DTOs.Response>;

            Assert.AreEqual(msg, content.Content.Error.ErrorDescription);
        }
        public void UserYahooServiceProvider()
        {
            // Arrange
            CurrencyConverterController controller = new CurrencyConverterController();

            controller.Request = new HttpRequestMessage();
            //controller.Request.Headers.Add("Authorize", "Bearer E44jlg9gAp6QDTe26Ew5ar5mFAYSnO4eEMpXfGojQyopNAlx1zH2B4Jf5yDWO4XubSxu3Et4ujPSy6aGz11s4x37jM2qdxqSpBL7DJmPVayI9oX-l163SY1r4R-joQZxomEae3Zlk9fDGK5XXFMyL8vTPusyz-9RcuePuuPhtVhjA71FgeF1jWbuLDCa8e1VOklxURkxtOOXUXEXgbZyU-zcR-hfKfBdCcSm7vsjShryedPZYS4xZJ8_1m-KKh4YsPe44EDZeHB0-zvulY8mZbe-iwMhaV87lzRyBxzQgr1rC8iGP2h0qMApzZ04JtXYULqMqkfoaa3jecN8SCaNTQs3Y3J7mzKWvxG-wDX5uthhfc6GAjW1n3mEyZbRKmUFJkexO8yF-uiBk-zkJupPlGZdYjeXjnSPEIcbaCcrz-ua7O6mLKU_LAZ2tZpZAYcadBhF-gXgfMt51rJzxUBxaraskBrxkjMr9nBreiMdzHM3cdoP2c7KFfYQoUvQIyOO0");
            controller.Configuration = new HttpConfiguration();
            CroweCurrencyResponse response = controller.GetCurrencyConversionfromProvider("Yahoo", "USD", "INR", 1);

            Assert.IsNotNull(response);
        }
        public void GetConvertedAmount_ShouldReturnConvertedAmount()
        {
            int convertedAmount = 200;
            var controller      = new CurrencyConverterController();

            controller.Request = new System.Net.Http.HttpRequestMessage(HttpMethod.Get, "http://localhost:51090/CurrencyConverter?from=INR&to=USD&amount=150&source=XE");

            var result = controller.GetConvertedAmount();

            var content = result as OkNegotiatedContentResult <CroweCurrencyConversionAPI.DTOs.Response>;

            Assert.AreEqual(convertedAmount, content.Content.Amount);
        }