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()); } } }
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); }
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); }
public ParticipantId Id() { return(ParticipantId.FromGuid(Faker.Random.Guid())); }
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); } } }