コード例 #1
0
ファイル: MatchQueryTest.cs プロジェクト: tabright26/edoxa
        public async Task FindParticipantMatchesAsync_ShouldBeEquivalentToParticipantMatchList(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(89568322, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var matchQuery = new MatchQuery(context);

                foreach (var participant in challenge.Participants)
                {
                    //Act
                    var matches = await matchQuery.FetchParticipantMatchesAsync(ParticipantId.FromGuid(participant.Id));

                    //Arrange
                    matches.Should().BeEquivalentTo(participant.Matches.ToList());
                }
            }
        }
コード例 #2
0
        public async Task ShouldBeHttpStatusCodeOK()
        {
            // Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(null, Game.LeagueOfLegends, ChallengeState.Ended);

            var challenge = challengeFaker.FakeChallenge();

            var factory = TestHost.WithClaimsFromDefaultAuthentication();

            _httpClient = factory.CreateClient();
            var testServer = factory.Server;

            testServer.CleanupDbContext();

            await testServer.UsingScopeAsync(
                async scope =>
            {
                var challengeRepository = scope.GetRequiredService <IChallengeRepository>();
                challengeRepository.Create(challenge);
                await challengeRepository.CommitAsync(false);
            });

            var participant = challenge.Participants.First();

            // Act
            using var response = await this.ExecuteAsync(ParticipantId.FromGuid(participant.Id));

            // Assert
            response.EnsureSuccessStatusCode();
            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var matchResponses = await response.Content.ReadAsJsonAsync <ChallengeMatchDto[]>();

            matchResponses.Should().HaveCount(participant.Matches.Count);
        }
コード例 #3
0
        public static Participant ToEntity(this ParticipantModel model)
        {
            var participant = new Participant(
                ParticipantId.FromGuid(model.Id),
                UserId.FromGuid(model.UserId),
                PlayerId.Parse(model.PlayerId),
                new DateTimeProvider(model.RegisteredAt));

            if (model.SynchronizedAt.HasValue && model.Matches != null)
            {
                participant.Snapshot(model.Matches.Select(match => match.ToEntity()), new DateTimeProvider(model.SynchronizedAt.Value));
            }

            participant.ClearDomainEvents();

            return(participant);
        }
コード例 #4
0
 public ParticipantId Id()
 {
     return(ParticipantId.FromGuid(Faker.Random.Guid()));
 }
コード例 #5
0
        public async Task FindParticipantAsync_EquivalentToParticipant(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(48956632, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var participantQuery = new ParticipantQuery(context);

                foreach (var participant in challenge.Participants)
                {
                    //Act
                    var participantAsync = await participantQuery.FindParticipantAsync(ParticipantId.FromGuid(participant.Id));

                    //Assert
                    participantAsync.Should().BeEquivalentTo(participant);
                }
            }
        }