public void SampleContest_ReturnExpectedAggregate()
        {
            // Setup DB.
            var givenUser = new IdentityUser("USER");

            Context.Users.Add(givenUser);
            var givenContest = new Contest
            {
                Name   = "",
                Status = Contest.ContestState.InProgress
            };

            Context.Contests.Add(givenContest);
            var givenTask = new Task
            {
                Contest     = givenContest,
                Description = "",
                Name        = "task-name",
            };

            Context.Tasks.Add(givenTask);
            var givenSolution = new Solution
            {
                SourceCode   = "given-source-code",
                Language     = "java",
                Task         = givenTask,
                IdentityUser = givenUser
            };

            Context.Solutions.Add(givenSolution);
            Context.SaveChanges();

            IQueryHandler <NewestSolutionsQuery, NewestSolutionsResult> newestSolutionQueryHandler =
                new NewestSolutionsQueryHandler(Context);

            IQueryHandler <AggregateContestSolutionsQuery, AggregateContestSolutionsResult> sut =
                new AggregateContestSolutionsQueryHandler(Context, newestSolutionQueryHandler);

            var givenQuery = AggregateContestSolutionsQuery.Create(givenContest.Id);

            var aggregate = sut.HandleAsync(givenQuery).Result.Aggregate;

            var actualKey   = aggregate.Users.Keys.Single();
            var actualValue = aggregate.Users.Values.Single();

            actualKey.Should().Be(givenUser.Id);
            actualValue.Tasks.Should().HaveCount(1)
            .And.ContainSingle(dto => dto.Name == givenTask.Name);
        }
示例#2
0
 public NewestSolutionsTests()
 {
     Sut = new NewestSolutionsQueryHandler(Context);
 }