public async Task GivenPostingAValidModel_Post_ReturnsAndHttp201() { // Arrange. var fakeVehicle = FakeVehicleHelpers.CreateAFakeVehicle(); var currentFakeVehicleCount = StubbedFakeVehicleRepository.CreateAFakeVehicleRepository() .Index() .Count(); var formData = new Dictionary <string, string> { { nameof(FakeVehicle.Id), fakeVehicle.Id.ToString() }, { nameof(FakeVehicle.Name), fakeVehicle.Name }, { nameof(FakeVehicle.RegistrationNumber), fakeVehicle.RegistrationNumber }, { nameof(FakeVehicle.Colour), fakeVehicle.Colour.ToString() } }; var content = new FormUrlEncodedContent(formData); // Act. var response = await _factory.CreateClient().PostAsync("/test", content); // Assert. response.EnsureSuccessStatusCode(); response.StatusCode.ShouldBe(HttpStatusCode.Created); response.Headers.Location.ShouldBe(new Uri($"http://localhost/test/{currentFakeVehicleCount + 1 }")); var responseString = await response.Content.ReadAsStringAsync(); responseString.ShouldBeNullOrWhiteSpace(); }
// TODO: Replace this with proper Integration testing overrides. // REF: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1#basic-tests-with-the-default-webapplicationfactory // This method can be overwritten in a test project to define our repository. // You would not do this in production, but we need to test our Helper library! public virtual void ConfigureRepositories(IServiceCollection services) { // Create our fake data. var stubbedFakeVehicleRepository = StubbedFakeVehicleRepository.CreateAFakeVehicleRepository(); // Inject our repo. services.AddSingleton <IFakeVehicleRepository>(stubbedFakeVehicleRepository); }
public async Task GivenAValidId_Get_ReturnsAnHttp200() { // Arrange. const int id = 1; var expectedFakeVehicle = StubbedFakeVehicleRepository.CreateAFakeVehicleRepository() .Get(id); // Act. var response = await _factory.CreateClient().GetAsync($"/test/{id}"); // Assert. response.IsSuccessStatusCode.ShouldBeTrue(); await response.Content.ShouldLookLike(expectedFakeVehicle); }