public async Task GetShouldReturnDetailedDataFromTheEntry()
        {
            using var scope = ServiceProvider.CreateScope();
            var sut     = Factory.CreateClient();
            var context = scope.ServiceProvider.GetRequiredService <ApplicationContext>();

            var address = await SeedDatabaseFixture.AddDummyAddressAsync(context);

            var phoneUuid = Guid.NewGuid();
            var phone     = LocalPhoneFixture.GetDummyLocalPhone(phoneUuid, address.Id);
            await context.LocalPhones.AddAsync(phone);

            await context.SaveChangesAsync();

            context.ChangeTracker.Clear();

            var result = await sut.GetAsync($"LocalPhone/Get/{phoneUuid}");

            result.EnsureSuccessStatusCode();
            var serializedResult = await result.Content.ReadAsStringAsync();

            var detailedPhone = JsonSerializer.Deserialize <LocalPhone>(serializedResult, ServiceProvider.GetRequiredService <JsonSerializerOptions>());

            var detailedAddress = detailedPhone.PhoneAddress;

            Assert.Equal(LocalPhoneFixture.Number, detailedPhone.Number);
            Assert.Equal(LocalPhoneFixture.AreaCode, detailedPhone.AreaCode);
            Assert.Equal(AddressFixture.Country, detailedAddress.Country);
            Assert.Equal(AddressFixture.ZipCode, detailedAddress.ZipCode);
            Assert.Equal(AddressFixture.City, detailedAddress.City);
            Assert.Equal(AddressFixture.Number, detailedAddress.Number);
            Assert.Equal(AddressFixture.State, detailedAddress.State);
            Assert.Equal(AddressFixture.Street, detailedAddress.Street);
        }
        public async Task ListShouldReturnAListOfEntries()
        {
            const int total   = 5;
            const int perPage = 8;

            using var scope = ServiceProvider.CreateScope();
            var sut     = Factory.CreateClient();
            var context = scope.ServiceProvider.GetRequiredService <ApplicationContext>();

            var address = await SeedDatabaseFixture.AddDummyAddressAsync(context);

            for (var i = 0; i < total; i++)
            {
                await context.LocalPhones.AddAsync(LocalPhoneFixture.GetDummyLocalPhone(Guid.NewGuid(), address.Id));
            }
            await context.SaveChangesAsync();

            context.ChangeTracker.Clear();

            var result = await sut.GetAsync($"LocalPhone/List?currentPage=1&perPage={perPage}");

            result.EnsureSuccessStatusCode();
            var serializedResult = await result.Content.ReadAsStringAsync();

            var list = JsonSerializer.Deserialize <PaginationResult <LocalPhoneListItemModel> >(serializedResult,
                                                                                                scope.ServiceProvider.GetRequiredService <JsonSerializerOptions>());

            foreach (var localPhone in list.Elements)
            {
                Assert.Equal(LocalPhoneFixture.Number, localPhone.Number);
                Assert.Equal(LocalPhoneFixture.AreaCode, localPhone.AreaCode);
                Assert.Equal(address.Uuid, localPhone.AddressUuid);
                Assert.NotEqual(default, localPhone.AddressDescription);
        public async Task SaveShouldANewEntry()
        {
            using var scope = ServiceProvider.CreateScope();
            var sut        = scope.ServiceProvider.GetRequiredService <ILocalPhoneService>();
            var context    = scope.ServiceProvider.GetRequiredService <ApplicationContext>();
            var unitOfWork = scope.ServiceProvider.GetRequiredService <IUnitOfWork>();

            var address = await SeedDatabaseFixture.AddDummyAddressAsync(context);

            var result = await sut.SaveAsync(LocalPhoneFixture.GetDummyLocalPhone(address.Id), address.Uuid);

            await unitOfWork.SaveChangesAsync();

            var phone = await context.LocalPhones.Include(x => x.PhoneAddress).FirstAsync();

            Assert.True(result.IsSuccessful);
            Assert.Equal(LocalPhoneFixture.Number, phone.Number);
            Assert.Equal(LocalPhoneFixture.AreaCode, phone.AreaCode);
            Assert.NotNull(phone.PhoneAddress);
        }