public void Deserialization_ValidData_CreatesValidInstance()
        {
            FallbackConfig config = JsonConvert.DeserializeObject <FallbackConfig>(
                "{ statusCode : 8999 }");

            Assert.IsNotNull(config);
            Assert.AreEqual(8999, config.Status);
            Assert.AreEqual(null, config.Reason);
            Assert.AreEqual(null, config.Content);
        }
        public void Deserialization_AllData_CreatesValidInstance()
        {
            FallbackConfig config = JsonConvert.DeserializeObject <FallbackConfig>(
                "{ statusCode : 200, reason : 'things', content : 'who knows?' }");

            Assert.IsNotNull(config);
            Assert.AreEqual(200, config.Status);
            Assert.AreEqual("things", config.Reason);
            Assert.AreEqual("who knows?", config.Content);
        }
        public void AsPolicy_InvalidStatusCode_Throws()
        {
            var logger = new Mock <ILogger>(MockBehavior.Loose);
            var config = new FallbackConfig
            {
                Status = -1
            };

            Assert.ThrowsException <InvalidOperationException>(
                () => config.AsTypeModel(logger.Object));
        }
        public void AsPolicy_LoggerNull_Throws()
        {
            var config = new FallbackConfig
            {
                Status  = 418,
                Content = string.Empty,
                Reason  = string.Empty
            };

            Assert.ThrowsException <ArgumentNullException>(
                () => config.AsTypeModel(null));
        }
        public void AsPolicy_AllValuesInitialized_ReturnsPolicy()
        {
            var logger = new Mock <ILogger>(MockBehavior.Loose);
            var config = new FallbackConfig
            {
                Status  = 418,
                Content = "test",
                Reason  = "test"
            };

            IAsyncPolicy <HttpResponseMessage> policy = config.AsTypeModel(logger.Object);

            Assert.IsNotNull(policy);
            Assert.IsInstanceOfType(policy, typeof(AsyncFallbackPolicy <HttpResponseMessage>));
        }