public async Task CreateSubscription_NameIsReserved_DbFails() { //Arrange var clubId = Guid.NewGuid(); using (var context = _factory.CreateContext()) { context.Clubs.Add(new Club() { ClubId = clubId }); context.SaveChanges(); } //Act var request = new CreateClubSubscriptionRequest() { Name = "Supership++", Price = 50, ClubId = clubId }; var sub = await _mutations.CreateClubSubscriptionAsync(request); request.ReferenceId = sub.ClubSubscriptionId; Assert.ThrowsAsync <DbUpdateException>(async() => await _mutations.CreateClubSubscriptionAsync(request)); }
public async Task CreateSubscription_ClubIsPresentAndValidRequest_AddedToDatabase() { //Arrange var clubId = Guid.NewGuid(); using (var context = _factory.CreateContext()) { context.Clubs.Add(new Club() { ClubId = clubId }); context.SaveChanges(); } //Act var request = new CreateClubSubscriptionRequest() { Name = "Supership++", Price = 50, ClubId = clubId }; await _mutations.CreateClubSubscriptionAsync(request); //Assert using (var context = _factory.CreateContext()) { var subscription = context.ClubSubscriptions.FirstOrDefault(subscription => subscription.Name == request.Name); Assert.That(subscription, Is.Not.Null); Assert.That(context.ClubSubscriptions.Count(), Is.EqualTo(1)); } await _publish.Received(1).Publish(Arg.Any <ClubSubscriptionCreatedEvent>()); }
public async Task <ClubSubscription> CreateClubSubscriptionAsync(CreateClubSubscriptionRequest request) { await IsAdminIn(request.ClubId); var subscription = _mapper.Map <ClubSubscription>(request); if (request.ReferenceId == null || request.ReferenceId == Guid.Empty) { var numberOfSubs = _context.ClubSubscriptions.Count(clubSub => clubSub.ClubId == request.ClubId); if (numberOfSubs > 0) { throw new QueryException("You must enter reference ID, when you have other subscriptions"); } } _context.ClubSubscriptions.Add(subscription); var @event = _mapper.Map <ClubSubscriptionCreatedEvent>(subscription); @event.ReferenceId = request.ReferenceId; await _eventService.SaveEventAndDbContextChangesAsync(@event); await _eventService.PublishEventAsync(@event); return(subscription); }
public async Task CreateSubscription_ClubDoesNotExist_DatabaseFails() { var request = new CreateClubSubscriptionRequest() { Name = "Supership++", Price = 50, ClubId = Guid.Empty }; Assert.ThrowsAsync <DbUpdateException>(async() => await _mutations.CreateClubSubscriptionAsync(request)); await _publish.Received(0).Publish(Arg.Any <ClubSubscriptionCreatedEvent>()); }