public async Task UpdateAnswerKeyForms()
        {
            var userId = RandomGen.Next(10000);

            using (var testServer = Create(userId))
            {
                var examId = await ExecuteExamCreatedConsumerAsync(testServer);

                var client = testServer.CreateClient();
                var list   = await GetListAsync <AnswerKeyOpticalForm>(client, examId);

                list.Should().NotBeEmpty();
                var studentForms = new List <StudentOpticalForm>()
                {
                    new StudentOpticalForm(list.First().Booklet)
                    {
                        SchoolId = userId,
                        UserId   = userId.ToString(),
                        ExamId   = examId,
                    },
                    new StudentOpticalForm(list.Last().Booklet)
                    {
                        SchoolId = userId,
                        UserId   = userId.ToString(),
                        ExamId   = examId,
                    },
                };
                studentForms.First().SetFromScanOutput(new ScanOutput("BABABABACADADADADACA", 0), list.First());
                studentForms.Last().SetFromScanOutput(new ScanOutput("ABCABDABCABDAC", 0), list.Last());
                await client.PostAsync(ApiPath, studentForms.ToJsonContent());

                var newAnswerKeyForms = GenerateAnswerKeyOpticalForms(4).ToList();
                var repository        = testServer.Host.Services.GetService(typeof(IOpticalFormRepository));
                var consumer          = new ExamUpdatedConsumer(repository as IOpticalFormRepository, null);
                var context           = Substitute.For <ConsumeContext <IExamUpdated> >();
                context.Message.ExamId.Returns(examId);
                context.Message.AnswerKeyOpticalForms.Returns(newAnswerKeyForms);
                await consumer.Consume(context);

                list = await GetListAsync <AnswerKeyOpticalForm>(client, examId);

                list.Should().HaveCount(newAnswerKeyForms.Count);
                studentForms = (await GetListAsync <StudentOpticalForm>(client, examId)).ToList();
                studentForms.Should().NotBeEmpty();
            }
        }
        public async Task UpdateAnswerKeyForms(IFixture fixture, int userId)
        {
            var repo = _webApplicationFactory.Services.GetRequiredService <IAnswerKeyOpticalFormRepository>();

            var examId = await ExecuteExamCreatedConsumerAsync(repo, fixture);

            var client = _webApplicationFactory.CreateClientWithUserId(userId);
            var list   = await GetListAsync <AnswerKeyOpticalForm>(client, examId);

            list.Should().NotBeEmpty();
            var studentForms = new List <StudentOpticalForm>()
            {
                new StudentOpticalForm(list.First().Booklet)
                {
                    SchoolId = userId,
                    UserId   = userId.ToString(),
                    ExamId   = examId,
                },
                new StudentOpticalForm(list.Last().Booklet)
                {
                    SchoolId = userId,
                    UserId   = userId.ToString(),
                    ExamId   = examId,
                },
            };

            studentForms.First().SetFromScanOutput(new ScanOutput("BABABABACADADADADACA", 0, 0, 'A'), list.First());
            studentForms.Last().SetFromScanOutput(new ScanOutput("ABCABDABCABDAC", 0, 0, 'A'), list.Last());
            await client.PostAsync(ApiPath, studentForms.ToJsonContent());

            var newAnswerKeyForms = GenerateAnswerKeyOpticalForms(fixture, 4).ToList();
            var consumer          = new ExamUpdatedConsumer(repo, null);
            var context           = Substitute.For <ConsumeContext <IExamUpdated> >();

            context.Message.ExamId.Returns(examId);
            context.Message.AnswerKeyOpticalForms.Returns(newAnswerKeyForms);
            await consumer.Consume(context);

            list = await GetListAsync <AnswerKeyOpticalForm>(client, examId);

            list.Should().HaveCount(newAnswerKeyForms.Count);
            studentForms = (await GetListAsync <StudentOpticalForm>(client, examId)).ToList();
            studentForms.Should().NotBeEmpty();
        }