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>());
        }
Exemple #3
0
        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>());
        }