public void SetsDtoValuesFromUri()
            {
                // Arrange
                const string expectedProductKey   = "p12345";
                const string expectedAttributeKey = "asta";
                var          postData             = new SetChileProductAttributeRangesRequest
                {
                    AttributeRanges = new List <AttributeRangeRequest>
                    {
                        new AttributeRangeRequest
                        {
                            AttributeNameKey = expectedAttributeKey
                        }
                    }
                };
                ISetChileProductAttributeRangesParameters actualParams = null;

                MockProductService.Setup(
                    m => m.SetChileProductAttributeRanges(It.IsAny <ISetChileProductAttributeRangesParameters>()))
                .Callback((ISetChileProductAttributeRangesParameters p) => actualParams = p)
                .Returns(new SuccessResult());

                // Act
                SystemUnderTest.Post(expectedProductKey, postData);

                // Assert
                Assert.AreEqual(expectedProductKey, actualParams.ChileProductKey);
                Assert.AreEqual(expectedAttributeKey, actualParams.AttributeRanges.Single().AttributeNameKey);
            }
            public void Returns201_OnSuccess()
            {
                // Arrange
                MockProductService.Setup(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()))
                .Returns(new SuccessResult <string>());

                var input = Fixture.Create <SetChileProductIngredientsRequest>();

                // Act
                var result = SystemUnderTest.Post("key", input);

                // Assert
                Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);
            }
            public void CallsSetChileProductIngredientMethod()
            {
                // Arrange
                MockProductService.Setup(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()))
                .Returns(new SuccessResult <string>());

                const string key   = "12345";
                var          input = Fixture.Create <SetChileProductIngredientsRequest>();

                // Act
                SystemUnderTest.Post(key, input);

                // Assert
                MockProductService.Verify(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()), Times.Once());
            }
            public void Returns500OnFailure()
            {
                // Arrange
                const string expectedProductKey = "p12345";
                var          postData           = Fixture.Create <SetChileProductAttributeRangesRequest>();

                MockProductService.Setup(m => m.SetChileProductAttributeRanges(It.IsAny <ISetChileProductAttributeRangesParameters>()))
                .Returns(new FailureResult());

                // Act
                var response = SystemUnderTest.Post(expectedProductKey, postData);

                // Assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
            }
            public void Returns500_OnFailure()
            {
                // Arrange
                const string message = "Error Message";

                MockProductService.Setup(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()))
                .Returns(new FailureResult <string>(null, message));

                var input = Fixture.Create <SetChileProductIngredientsRequest>();

                // Act
                var result = SystemUnderTest.Post("key", input);

                // Assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, result.StatusCode);
                Assert.AreEqual(message, result.ReasonPhrase);
            }
            public void UtilizesUserIdentityProvider()
            {
                // Arrange
                const string expectedProductKey = "p12345";
                var          postData           = Fixture.Create <SetChileProductAttributeRangesRequest>();
                ISetChileProductAttributeRangesParameters actual = null;

                MockProductService.Setup(m => m.SetChileProductAttributeRanges(It.IsAny <ISetChileProductAttributeRangesParameters>()))
                .Callback((ISetChileProductAttributeRangesParameters param) => actual = param)
                .Returns(new SuccessResult());

                // Act
                SystemUnderTest.Post(expectedProductKey, postData);

                // Assert
                Assert.IsNotNull(actual);
                UserIdentityProviderMock.Verify(m => m.SetUserIdentity(actual), Times.Once());
            }
            public void SetsUserTokenFromUserIdentityProvider()
            {
                // Arrange
                ISetChileProductIngredientsParameters actualParams = null;

                MockProductService.Setup(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()))
                .Callback((ISetChileProductIngredientsParameters p) => actualParams = p)
                .Returns(new SuccessResult <string>());

                const string expectedUserToken = "user13";

                MockUserTokenProvider.Setup(m => m.SetUserIdentity(It.IsAny <IUserIdentifiable>()))
                .Callback((IUserIdentifiable o) => o.UserToken = expectedUserToken);

                // Act
                SystemUnderTest.Post("2134", Fixture.Create <SetChileProductIngredientsRequest>());

                // Assert
                Assert.AreEqual(expectedUserToken, actualParams.UserToken);
                MockUserTokenProvider.Verify(m => m.SetUserIdentity(It.IsAny <IUserIdentifiable>()), Times.Once());
            }
            public void TranslatesDtoIntoServiceParameter()
            {
                // Arrange
                ISetChileProductIngredientsParameters actualParams = null;

                MockProductService.Setup(m => m.SetChileProductIngredients(It.IsAny <ISetChileProductIngredientsParameters>()))
                .Callback((ISetChileProductIngredientsParameters p) => actualParams = p)
                .Returns(new SuccessResult <string>());

                const string expectedUserToken = "user13";

                MockUserTokenProvider.Setup(m => m.SetUserIdentity(It.IsAny <IUserIdentifiable>()))
                .Callback((IUserIdentifiable o) => o.UserToken = expectedUserToken);

                const string expectedKey = "123";
                var          param       = Fixture.Create <SetChileProductIngredientsRequest>();

                // Act
                SystemUnderTest.Post(expectedKey, param);

                // Assert
                Assert.AreEqual(expectedKey, actualParams.ChileProductKey);
                Assert.AreEqual(expectedUserToken, actualParams.UserToken);
            }
 public new void SetUp()
 {
     MockProductService
     .Setup(m => m.SetChileProductAttributeRanges(It.IsAny <ISetChileProductAttributeRangesParameters>()))
     .Returns(new SuccessResult <string>(null));
 }