public async Task returns_a_multiple_pages_when_appointment_count_exceeds_page_size() { var client = _testFixture.Client; const int pageCount = 5; const int count = 10; var uri = $"{EndpointRoute}?index=1&size={pageCount}"; var seeder = new AppointmentSeeder(); for (var i = 0; i < count; i++) { await seeder.CreateAppointment(client); } var result = await client.GetAsync(uri); result.IsSuccessStatusCode.Should().BeTrue(); var page = await result.GetPayload <Page <AppointmentView> >(); page.Data.Should().NotBeEmpty(); page.Data.Count.Should().Be(pageCount); page.TotalCount.Should().Be(count); page.HasNextPage.Should().BeTrue(); }
public async Task returns_200_ok() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var uri = $"{EndpointRoute}/{id}"; var result = await client.GetAsync(uri); result.StatusCode.Should().Be(StatusCodes.Status200OK); }
public async Task returns_204_no_content() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Create <CancelAppointment>(); var uri = $"{EndpointRoute}/{id}/cancel"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); response.StatusCode.Should().Be(StatusCodes.Status204NoContent); }
public async Task returns_204_no_content() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Build <RescheduleAppointment>() .With(p => p.NewDate, () => DateTimeOffset.UtcNow.AddDays(3)).Create(); var uri = $"{EndpointRoute}/{id}/reschedule"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); response.StatusCode.Should().Be(StatusCodes.Status204NoContent); }
public async Task captures_the_cancellation_reason() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Create <CancelAppointment>(); var uri = $"{EndpointRoute}/{id}/cancel"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); var sut = await _testFixture.FindAppointment(id); sut.CancellationReason.Should().Be(request.Reason); }
public async Task captures_the_attending_veterinarian_id() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Create <ConfirmAppointment>(); var uri = $"{EndpointRoute}/{id}/confirm"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); var sut = await _testFixture.FindAppointment(id); sut.AttendingVeterinarianId.Should().Be(request.AttendingVeterinarianId); }
public async Task actually_confirms_the_appointment() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Create <ConfirmAppointment>(); var uri = $"{EndpointRoute}/{id}/confirm"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); var sut = await _testFixture.FindAppointment(id); sut.State.Should().Be(AppointmentState.Confirmed); }
public async Task captures_the_new_date() { var client = _testFixture.Client; var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client); var request = _fixture.Build <RescheduleAppointment>() .With(p => p.NewDate, () => DateTimeOffset.UtcNow.AddDays(3)).Create(); var uri = $"{EndpointRoute}/{id}/reschedule"; var response = await client.PutAsJsonAsync(uri, request); await response.ThrowWithBodyIfUnsuccessfulStatusCode(); var sut = await _testFixture.FindAppointment(id); sut.ScheduledOn.Should().Be(request.NewDate); }
public async Task returns_a_view_with_the_correct_pet_breed() { var client = _testFixture.Client; var fixture = new Fixture(); fixture.Customize(new CreateAppointmentCustomization()); var appointment = fixture.Create <CreateAppointment>(); var seeder = new AppointmentSeeder(); var id = await seeder.CreateAppointment(client, appointment); var uri = $"{EndpointRoute}/{id}"; var result = await client.GetAsync(uri); var view = await result.GetPayload <AppointmentView>(); view.Should().NotBeNull(); view.Pet.Breed.Should().Be(appointment.PetBreed); }