Example #1
0
        public async void CreateApartmentAsync_Positive_TestAsync()
        {
            var options = new DbContextOptionsBuilder <ApartmentContext>()
                          .UseInMemoryDatabase(databaseName: "CreateApartmentAsync_PositiveAndNegative_TestAsync")
                          .Options;

            using (var context = new ApartmentContext(options))
            {
                context.AddRange(_users);
                await context.SaveChangesAsync();
            }

            using (var context = new ApartmentContext(options))
            {
                var service = new ApartmentUserService(context, _mapper);

                User user = await context.Users.FirstOrDefaultAsync();

                AddAddress address = new AddAddress()
                {
                    CountryId         = context.Countries.FirstOrDefault().Id.ToString(),
                    City              = "MyCity",
                    Street            = "Street",
                    Home              = "Home",
                    NumberOfApartment = 1
                };

                AddApartment apartmentOk = new AddApartment()
                {
                    Address       = address,
                    Area          = 54,
                    IsOpen        = true,
                    Price         = 15M,
                    Title         = "Apartment",
                    Text          = "AddedApartment",
                    NumberOfRooms = 2
                };

                var resultPositive = await service.CreateApartmentAsync(apartmentOk, user.Id.ToString());

                resultPositive.IsSuccess.Should().BeTrue();
                resultPositive.Data.Country.Id.Should().BeEquivalentTo(address.CountryId);
                resultPositive.Data.Address.Street.Should().BeEquivalentTo(address.Street);
                resultPositive.Data.Apartment.Title.Should().BeEquivalentTo(apartmentOk.Title);
            }
        }
Example #2
0
        CreateApartmentAsync(AddApartment apartment, string ownerId, CancellationToken cancellationToken = default(CancellationToken))
        {
            var addedApartment = _mapper.Map <Apartment>(apartment);

            addedApartment.OwnerId = Guid.Parse(ownerId);

            _db.Apartments.Add(addedApartment);

            try
            {
                await _db.SaveChangesAsync(cancellationToken);

                Apartment apartmentAfterAdding = await _db.Apartments.Where(_ => _.Title == addedApartment.Title)
                                                 .Select(_ => _).Include(_ => _.Address.Country).Include(_ => _.Address)
                                                 .AsNoTracking().FirstOrDefaultAsync(cancellationToken);

                ApartmentView view = MakeApartmentView(apartmentAfterAdding);

                return((Result <ApartmentView>) Result <ApartmentView>
                       .Ok(view));
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return((Result <ApartmentView>) Result <ApartmentView>
                       .Fail <ApartmentView>($"Cannot save model. {ex.Message}"));
            }
            catch (DbUpdateException ex)
            {
                return((Result <ApartmentView>) Result <ApartmentView>
                       .Fail <ApartmentView>($"Cannot save model. {ex.Message}"));
            }
            catch (ArgumentNullException ex)
            {
                return((Result <ApartmentView>) Result <ApartmentView>
                       .Fail <ApartmentView>($"Source is null. {ex.Message}"));
            }
        }