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); } }
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}")); } }