public async Task Run([QueueTrigger("betcreated", Connection = "azurestorageconnectionstring")] string jsonEvent, ILogger log)
 {
     log.LogInformation($"C# Queue trigger function processed: {jsonEvent}");
     var ev           = JsonConvert.DeserializeObject <BetCreated>(jsonEvent);
     var notification = new InsertBetQuerySideNotification(ev.BetId.Value, ev.CreatorId.Value);
     await _betModule.ExecuteNotificationAsync(notification).ConfigureAwait(false);
 }
Exemple #2
0
        public async Task ShouldAddBetIfBetExists()
        {
            //arrange
            var memberId = Guid.NewGuid();
            var betId    = Guid.NewGuid();
            var member   = new Member(new(memberId), "toto", 0);
            var bet      = Bet.Domain.Bets.Bet.Create(new BetId(betId),
                                                      new DateTime(2022, 2, 3),
                                                      "desc1", 10, member, new DateTime(2021, 3, 2));
            var betRepository      = new InMemoryBetRepository(null, bet.State);
            var queryBetRepository = new InMemoryBetQueryRepository(new List <BetDto>());
            var command            = new InsertBetQuerySideNotification(betId, memberId);
            var handler            = new InsertBetQuerySideNotificationHandler(betRepository, queryBetRepository);

            //act
            await handler.Handle(command, default);

            //assert
            BetDto betInserted = await queryBetRepository.GetByIdAsync(betId);

            Assert.NotNull(betInserted);
            Assert.Equal(bet.State.Coins, betInserted.Coins);
            Assert.Equal(bet.State.Description, betInserted.Description);
            Assert.Equal(bet.State.EndDate, betInserted.EndDate);
            Assert.Equal(bet.State.BetId, betInserted.Id);
            Assert.Equal(bet.State.Creator.Id.Value, betInserted.Creator.Id);
        }
Exemple #3
0
        public async Task ShouldContainsNewBetInFollowersFeed()
        {
            //arrange
            var memberId        = Guid.NewGuid();
            var betId           = Guid.NewGuid();
            var member          = new Member(new(memberId), "toto", 0);
            var subscriptionId  = Guid.NewGuid();
            var subscriptionId2 = Guid.NewGuid();

            member.Subscribe(new Subscription(new(subscriptionId)));
            member.Subscribe(new Subscription(new(subscriptionId2)));
            var bet = Bet.Create(new BetId(betId),
                                 new DateTime(2022, 2, 3),
                                 "desc1", 10, new(new(memberId), "toto", 300), new DateTime(2021, 3, 2));
            var feed             = new FeedDto(subscriptionId.ToString(), new List <BetDto>());
            var feed2            = new FeedDto(subscriptionId2.ToString(), new List <BetDto>());
            var betRepository    = new InMemoryBetRepository(null, bet.State);
            var memberRepository = new InMemoryMemberRepository(new() { member });
            var feedRepository   = new InMemoryFeedRepository(new List <FeedDto>()
            {
                feed, feed2
            });
            var handler      = new UpdateFeedMemberNotificationHandler(betRepository, memberRepository, feedRepository);
            var notification = new InsertBetQuerySideNotification(betId, memberId);

            //act
            await handler.Handle(notification, default);

            //assert
            AssertFeedSubscription(betId, subscriptionId, bet, feedRepository);
            AssertFeedSubscription(betId, subscriptionId2, bet, feedRepository);
        }
Exemple #4
0
        public async Task ShouldThrowBetNotFoundExceptionIfBetIdUnknown()
        {
            //arrange
            var notification = new InsertBetQuerySideNotification(Guid.NewGuid(), Guid.NewGuid());
            var handler      = new UpdateFeedMemberNotificationHandler(new InMemoryBetRepository(),
                                                                       new InMemoryMemberRepository(),
                                                                       new InMemoryFeedRepository());

            //act
            var record = await Record.ExceptionAsync(() => handler.Handle(notification, default));

            //assert
            Assert.IsType <BetUnknownException>(record);
        }
Exemple #5
0
        public async Task ShouldThrowBetUnknownExceptionIfBetIdUnknown()
        {
            //arrange
            var betId    = Guid.NewGuid();
            var memberId = Guid.NewGuid();
            var member   = new Member(new(memberId), "toto", 0);
            var bet      = Bet.Domain.Bets.Bet.Create(new BetId(Guid.NewGuid()),
                                                      new DateTime(2022, 2, 3),
                                                      "desc1", 10, member, new DateTime(2021, 3, 2));
            var betRepository      = new InMemoryBetRepository(null, bet.State);
            var queryBetRepository = new InMemoryBetQueryRepository(new List <BetDto>());
            var command            = new InsertBetQuerySideNotification(betId, memberId);
            var handler            = new InsertBetQuerySideNotificationHandler(betRepository, queryBetRepository);

            //act
            var record = await Record.ExceptionAsync(() => handler.Handle(command, default));

            //assert
            Assert.IsType <BetUnknownException>(record);
        }