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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #8
0
        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);
        }