Exemplo n.º 1
0
        public async Task ShouldThrowBetUnknownExceptionIfBetIdUnknown()
        {
            var betRepository    = new InMemoryBetRepository();
            var betId            = Guid.NewGuid();
            var memberRepository = new InMemoryMemberRepository();
            var command          = new UpdateWalletMembersCommand(betId);
            var handler          = new UpdateWalletMembersCommandHandler(betRepository, memberRepository);

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

            Assert.IsType <BetUnknownException>(record);
            Assert.Equal($"This bet with id {betId} is unknown", record.Message);
        }
        public async Task ShouldCreateMember()
        {
            var memberId = Guid.Parse("01c1da98-b4b7-45dc-8352-c98ece06dab1");
            var command  = new CreateMemberCommand(memberId,
                                                   "toto");
            var memberRepository = new InMemoryMemberRepository();
            var handler          = new CreateMemberCommandHandler(memberRepository);
            await handler.Handle(command, default);

            var member = await memberRepository.GetByIdAsync(new(Guid.Parse("01c1da98-b4b7-45dc-8352-c98ece06dab1")));

            Assert.Equal(memberId, member.Id.Value);
            Assert.Equal("toto", member.Name);
            Assert.Equal(1000, member.Wallet);
            Assert.Collection(member.DomainEvents, x =>
            {
                Assert.Equal(memberId, (x as MemberCreated).MemberId);
            });
        }
Exemplo n.º 3
0
        public async Task ShouldCreateBet()
        {
            //arrange
            IDateTimeProvider dtNow  = new FakeDateTimeProvider(new DateTime(2021, 5, 6, 0, 0, 0));
            var endDate              = new DateTime(2021, 5, 7, 0, 0, 0);
            var command              = new LaunchBetCommand(_betId, endDate, coins, description);
            var domainEventsListener = new DomainEventsAccessor();
            var betRepository        = new InMemoryBetRepository(domainEventsListener);
            var member           = new Member(new MemberId(_creatorId), "name", 25);
            var memberRepository = new InMemoryMemberRepository(new List <Member>()
            {
                member
            });
            var      handler     = new LaunchBetCommandHandler(betRepository, memberRepository, new InMemoryAuthenticationGateway(true, _creatorId), dtNow);
            BetState expectedBet = new(_betId, member, endDate, description, coins, dtNow.Now, new List <AnswerState>(), null, null);

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

            //assert
            Bet actualBet = await betRepository.GetByIdAsync(new(_betId));

            IDomainEvent domainEvent = domainEventsListener.GetDomainEvents()
                                       .SingleOrDefault(x => x.GetType() == typeof(BetCreated));

            Assert.Equal(expectedBet.BetId, actualBet.State.BetId);
            Assert.Equal(expectedBet.Description, actualBet.State.Description);
            Assert.Equal(expectedBet.EndDate, actualBet.State.EndDate);
            Assert.Equal(expectedBet.Creator.Id, actualBet.State.Creator.Id);
            Assert.Equal(expectedBet.Creator.Name, actualBet.State.Creator.Name);
            Assert.Equal(expectedBet.Creator.Wallet, actualBet.State.Creator.Wallet);
            Assert.Equal(expectedBet.Coins, actualBet.State.Coins);
            Assert.Equal(expectedBet.CreationDate, actualBet.State.CreationDate);
            Assert.False(actualBet.IsClosed());
            Assert.True(expectedBet.EndDate > actualBet.State.CreationDate);
            Assert.True(actualBet.GetEndDateToAnswer().CompareTo(new DateTime(2021, 5, 6, 6, 0, 0)) == 0);
            Assert.NotNull(domainEvent);
            Assert.Equal(_betId, ((BetCreated)domainEvent).BetId.Value);
            Assert.Equal(_creatorId, ((BetCreated)domainEvent).CreatorId.Value);
        }