Beispiel #1
0
        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>());
        }
Beispiel #2
0
        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>());
        }
Beispiel #3
0
        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);
        }