public async Task CreateClubMember_ValidRequest_AddedToDatabase() { var clubSubscription = new ClubSubscription() { ClubId = Guid.NewGuid(), ClubSubscriptionId = Guid.NewGuid() }; using (var context = _factory.CreateContext()) { await context.ClubSubscriptions.AddAsync(clubSubscription); await context.SaveChangesAsync(); } var request = new CreateClubMemberRequest() { ClubSubscriptionId = clubSubscription.ClubSubscriptionId, UserId = Guid.NewGuid() }; await _mutations.CreateClubMemberAsync(request); using (var context = _factory.CreateContext()) { var clubMember = context.ClubMembers.FirstOrDefault(clubMember => clubMember.UserId == request.UserId); Assert.That(clubMember, Is.Not.Null); Assert.That(context.ClubMembers.Count(), Is.EqualTo(1)); } await _publish.Received(1).Publish(Arg.Any <ClubMemberCreatedEvent>()); }
public async Task CreateClubMember_DuplicateMemberships_Fails() { var clubSubscription = new ClubSubscription() { ClubId = Guid.NewGuid(), ClubSubscriptionId = Guid.NewGuid() }; using (var context = _factory.CreateContext()) { await context.ClubSubscriptions.AddAsync(clubSubscription); await context.SaveChangesAsync(); } var request = new CreateClubMemberRequest() { ClubSubscriptionId = clubSubscription.ClubSubscriptionId, UserId = Guid.NewGuid() }; await _mutations.CreateClubMemberAsync(request); Assert.ThrowsAsync <InvalidOperationException>(async() => await _mutations.CreateClubMemberAsync(request)); await _publish.Received(1).Publish(Arg.Any <ClubMemberCreatedEvent>()); }
public async Task <ClubMember> CreateClubMemberAsync(CreateClubMemberRequest request) { var subscription = await _context.ClubSubscriptions.FindAsync(request.ClubSubscriptionId); //await IsAdminIn(subscription.ClubId); var item = _mapper.Map <ClubMember>(request); item.ClubId = subscription.ClubId; _context.ClubMembers.Add(item); var @event = _mapper.Map <ClubMemberCreatedEvent>(item); await _eventService.SaveEventAndDbContextChangesAsync(@event); await _eventService.PublishEventAsync(@event); return(item); }