public RandomOrgApiService(ISettingsManager settingsManager = null, IHttpWebRequestFactory httpWebRequestFactory = null)
        {
            _httpWebRequestFactory = httpWebRequestFactory ?? new HttpWebRequestFactory();
            if (settingsManager == null)
                settingsManager = new SettingsManager(new ConfigurationManagerWrap());

            _url = settingsManager.GetUrl();
            _httpRequestTimeout = settingsManager.GetHttpRequestTimeout();
            _httpReadWriteTimeout = settingsManager.GetHttpReadWriteTimeout();
        }
        public void GetApiKey_WhenNullValue_ExpectException()
        {
            // Arrange
            const string expected = null;
            Mock<IConfigurationManager> configManagerMock = new Mock<IConfigurationManager>();
            configManagerMock.Setup(m => m.GetAppSettingValue<string>(RandomOrgConstants.APIKEY_KEY)).Returns(expected);

            // Act
            SettingsManager target = new SettingsManager(configManagerMock.Object);
            target.GetApiKey();
        }
        public void GetHttpReadWriteTimeout_WhenCalled_ExpectValueReturned()
        {
            // Arrange
            const int expected = 12345;
            Mock<IConfigurationManager> configManagerMock = new Mock<IConfigurationManager>();
            configManagerMock.Setup(m => m.GetAppSettingValue("HttpReadWriteTimeout", It.IsAny<int>())).Returns(expected);

            // Act
            SettingsManager target = new SettingsManager(configManagerMock.Object);
            var actual = target.GetHttpReadWriteTimeout();

            // Assert
            actual.Should().Equal(expected);
        }
        public void GetUrl_WhenCalled_ExpectValueReturned()
        {
            // Arrange
            const string expected = "APIKEY";
            Mock<IConfigurationManager> configManagerMock = new Mock<IConfigurationManager>();
            configManagerMock.Setup(m => m.GetAppSettingValue("Url", It.IsAny<string>())).Returns(expected);

            // Act
            SettingsManager target = new SettingsManager(configManagerMock.Object);
            var actual = target.GetUrl();

            // Assert
            actual.Should().Equal(expected);
        }
        public void GetApiKey_WhenCalled_ExpectKeyReturned()
        {
            // Arrange
            const string expected = "APIKEY";
            Mock<IConfigurationManager> configManagerMock = new Mock<IConfigurationManager>();
            configManagerMock.Setup(m => m.GetAppSettingValue<string>(RandomOrgConstants.APIKEY_KEY)).Returns(expected);

            // Act
            SettingsManager target = new SettingsManager(configManagerMock.Object);
            var actual = target.GetApiKey();

            // Assert
            actual.Should().Equal(expected);
        }