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))); }
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)); }
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))); }
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)); }