public async Task UpdateSubscription_SubscriptionDoesNotExist_DatabaseFails()
        {
            var request = new UpdateClubSubscriptionRequest()
            {
                Name  = "Supership++",
                Price = 50,
            };

            Assert.ThrowsAsync <QueryException>(async() =>
                                                await _mutations.UpdateClubSubscriptionAsync(Guid.Empty, request));
            await _publish.Received(0).Publish(Arg.Any <ClubSubscriptionCreatedEvent>());
        }
Exemple #2
0
        public async Task <ClubSubscription> UpdateClubSubscriptionAsync(Guid id, UpdateClubSubscriptionRequest request)
        {
            var subscription = await _context.ClubSubscriptions.FindOrThrowAsync(id);

            await IsAdminIn(subscription.ClubId);

            _mapper.Map(request, subscription);
            _context.ClubSubscriptions.Update(subscription);

            var @event = _mapper.Map <ClubSubscriptionUpdatedEvent>(subscription);
            await _eventService.SaveEventAndDbContextChangesAsync(@event);

            await _eventService.PublishEventAsync(@event);

            return(subscription);
        }
        public async Task UpdateSubscription_SubscriptionDoesExist_SubscriptionAreUpdated()
        {
            //Arrange
            var club = new Club()
            {
                ClubId = Guid.NewGuid()
            };
            var subscription = new ClubSubscription()
            {
                ClubId = club.ClubId,
                Price  = 25,
                Name   = "Cheapies"
            };

            using (var context = _factory.CreateContext())
            {
                context.Clubs.Add(club);
                context.ClubSubscriptions.Add(subscription);
                context.SaveChanges();
            }


            //Act
            var request = new UpdateClubSubscriptionRequest()
            {
                Name  = "Supership++",
                Price = 50,
            };
            await _mutations.UpdateClubSubscriptionAsync(subscription.ClubSubscriptionId, request);

            //Assert
            using (var context = _factory.CreateContext())
            {
                var updatedSubscription = context.ClubSubscriptions.FirstOrDefault(subscription => subscription.Name == request.Name &&
                                                                                   subscription.Price == request.Price &&
                                                                                   subscription.ClubId == club.ClubId);
                Assert.That(updatedSubscription, Is.Not.Null);
                Assert.That(context.ClubSubscriptions.Count(), Is.EqualTo(1));
            }

            await _publish.Received(1).Publish(Arg.Any <ClubSubscriptionUpdatedEvent>());
        }