public async Task Should_ThrowException_When_CancelingMeetup_ToCompletedMeetup()
        {
            var mockIdentityService = new Mock <IIdentityService>();

            mockIdentityService.Setup((x) => x.GetUserId()).Returns("123");

            var mockMeetupPolicy = new Mock <IMeetupPolicy>();

            mockMeetupPolicy.Setup((x) => x.CheckCanDefineMeetup(It.IsAny <string>(), It.IsAny <DateTime>())).Callback(() => { });

            var meetup = new Meetup(
                organizerId: "123",
                subject: "DDD",
                when: DateTime.Now.AddDays(1),
                description: "DDD Practices",
                location: new Location("YTÜ Teknopark"),
                policy: mockMeetupPolicy.Object);

            _fixture.dbContext.Add(meetup);

            meetup.Complete();

            var meetupRepository = new MeetupRepository(_fixture.dbContext);

            var cancelMeetupCommandHandler = new CancelMeetupCommandHandler(meetupRepository, mockIdentityService.Object);
            var cancellationToken          = new CancellationToken();

            var cancelMeetupCommand = new CancelMeetupCommand
            {
                MeetupId = meetup.Id
            };

            var exception = await Assert.ThrowsAsync <MeetupDomainException>(async() =>
            {
                await cancelMeetupCommandHandler.Handle(cancelMeetupCommand, cancellationToken);
            });

            Assert.Equal("Completed meetup cannot be cancel", exception.Message);
        }
        public async Task Should_Succes_When_CancelingMeetup()
        {
            var mockIdentityService = new Mock <IIdentityService>();

            mockIdentityService.Setup((x) => x.GetUserId()).Returns("123");

            var mockMeetupPolicy = new Mock <IMeetupPolicy>();

            mockMeetupPolicy.Setup((x) => x.CheckCanDefineMeetup(It.IsAny <string>(), It.IsAny <DateTime>())).Callback(() => { });

            var meetup = new Meetup(
                organizerId: "123",
                subject: "DDD",
                when: DateTime.Now.AddDays(1),
                description: "DDD Practices",
                location: new Location("YTÜ Teknopark"),
                policy: mockMeetupPolicy.Object);

            _fixture.dbContext.Add(meetup);

            var meetupRepository = new MeetupRepository(_fixture.dbContext);

            var cancelMeetupCommandHandler = new CancelMeetupCommandHandler(meetupRepository, mockIdentityService.Object);
            var cancellationToken          = new CancellationToken();

            var cancelMeetupCommand = new CancelMeetupCommand
            {
                MeetupId = meetup.Id
            };

            await cancelMeetupCommandHandler.Handle(cancelMeetupCommand, cancellationToken);

            var result = await _fixture.dbContext.Meetups.FindAsync(meetup.Id);

            Assert.True(result.Cancelled);
        }