示例#1
0
        public void WhenNoParametersPassedAndSomeCustomersExist_ShouldCallTheSerializer()
        {
            var expectedCustomersCollection = new List <CustomerDto>()
            {
                new CustomerDto(),
                new CustomerDto()
            };

            var expectedRootObject = new CustomersRootObject()
            {
                Customers = expectedCustomersCollection
            };

            var defaultParameters = new CustomersSearchParametersModel();

            //Arange
            var autoMocker = new RhinoAutoMocker <CustomersController>();

            autoMocker.Get <IJsonFieldsSerializer>().Expect(x => x.Serialize(expectedRootObject, defaultParameters.Fields));
            autoMocker.Get <ICustomerApiService>().Stub(x => x.Search()).Return(expectedCustomersCollection);

            //Act
            autoMocker.ClassUnderTest.Search(defaultParameters);

            //Assert
            autoMocker.Get <IJsonFieldsSerializer>().AssertWasCalled(x => x.Serialize(Arg <CustomersRootObject> .Is.TypeOf,
                                                                                      Arg <string> .Is.Equal(defaultParameters.Fields)));
        }
示例#2
0
        public void WhenNoParametersPassed_ShouldCallTheServiceWithDefaultParameters()
        {
            var defaultParametersModel = new CustomersSearchParametersModel();

            //Arange
            var autoMocker = new RhinoAutoMocker <CustomersController>();

            //Act
            autoMocker.ClassUnderTest.Search(defaultParametersModel);

            //Assert
            autoMocker.Get <ICustomerApiService>().AssertWasCalled(x => x.Search(defaultParametersModel.Query,
                                                                                 defaultParametersModel.Order,
                                                                                 defaultParametersModel.Page,
                                                                                 defaultParametersModel.Limit));
        }
示例#3
0
        public void WhenFieldsParametersPassed_ShouldCallTheSerializerWithTheSameFields()
        {
            var defaultParametersModel = new CustomersSearchParametersModel()
            {
                Fields = "id,email"
            };

            //Arange
            var autoMocker = new RhinoAutoMocker <CustomersController>();

            //Act
            autoMocker.ClassUnderTest.Search(defaultParametersModel);

            //Assert
            autoMocker.Get <IJsonFieldsSerializer>().AssertWasCalled(
                x => x.Serialize(Arg <CustomersRootObject> .Is.Anything, Arg <string> .Is.Equal(defaultParametersModel.Fields)));
        }
示例#4
0
        public void WhenNonPositivePagePassed_ShouldReturnBadRequest(int nonPositivePage)
        {
            var parametersModel = new CustomersSearchParametersModel()
            {
                Limit = nonPositivePage
            };

            //Arange
            var autoMocker = new RhinoAutoMocker <CustomersController>();

            autoMocker.Get <IJsonFieldsSerializer>().Stub(x => x.Serialize(Arg <CustomersRootObject> .Is.Anything, Arg <string> .Is.Anything))
            .IgnoreArguments()
            .Return(string.Empty);

            //Act
            IActionResult result = autoMocker.ClassUnderTest.Search(parametersModel);

            //Assert
            var statusCode = ActionResultExecutor.ExecuteResult(result);

            Assert.AreEqual(HttpStatusCode.BadRequest, statusCode);
        }
        public void WhenInvalidLimitPassed_ShouldReturnBadRequest(int invalidLimit)
        {
            var parametersModel = new CustomersSearchParametersModel()
            {
                Limit = invalidLimit
            };

            //Arange
            var autoMocker = new RhinoAutoMocker <CustomersController>();

            autoMocker.Get <IJsonFieldsSerializer>().Stub(x => x.Serialize(Arg <CustomersRootObject> .Is.Anything, Arg <string> .Is.Anything))
            .IgnoreArguments()
            .Return(string.Empty);

            //Act
            IHttpActionResult result = autoMocker.ClassUnderTest.Search(parametersModel);

            //Assert
            var statusCode = result.ExecuteAsync(new CancellationToken()).Result.StatusCode;

            Assert.AreEqual(HttpStatusCode.BadRequest, statusCode);
        }
        public IActionResult Search(CustomersSearchParametersModel parameters)
        {
            if (parameters.Limit <= Configurations.MinLimit || parameters.Limit > Configurations.MaxLimit)
            {
                return(Error(HttpStatusCode.BadRequest, "limit", "Invalid limit parameter"));
            }

            if (parameters.Page <= 0)
            {
                return(Error(HttpStatusCode.BadRequest, "page", "Invalid page parameter"));
            }

            var customersDto = _customerApiService.Search(parameters.Query, parameters.Order, parameters.Page, parameters.Limit);

            var customersRootObject = new CustomersRootObject()
            {
                Customers = customersDto
            };

            var json = JsonFieldsSerializer.Serialize(customersRootObject, parameters.Fields);

            return(new RawJsonActionResult(json));
        }