public async Task UpdateLessonNamesOfOpticalForms() { var lessonId = RandomGen.Next(); var lessonName = RandomGen.String(20); var answerKeyForms = GenerateAnswerKeyOpticalForms(3, lessonId, lessonName).ToList(); var userId = RandomGen.Next(10000); using (var testServer = Create(userId)) { var client = testServer.CreateClient(); var examId = await ExecuteExamCreatedConsumerAsync(testServer, answerKeyForms); var forms = new List <StudentOpticalForm> { GenerateStudentForm(examId, userId, lessonId, lessonName), GenerateStudentForm(examId, userId, lessonId, lessonName), GenerateStudentForm(examId, userId, lessonId, lessonName), GenerateStudentForm(examId, userId, lessonId, lessonName), GenerateStudentForm(examId, userId, lessonId, lessonName), GenerateStudentForm(examId, userId, lessonId, lessonName), }; var response = await client.PostAsync(ApiPath, forms.ToJsonContent()); response.EnsureSuccessStatusCode(); var studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.SelectMany(f => f.Sections) .Should().NotContain(s => s.LessonName != lessonName); var newLessonName = RandomGen.String(20); var repository = testServer.Host.Services.GetService(typeof(IOpticalFormRepository)); var consumer = new LessonNameChangedConsumer(repository as IOpticalFormRepository); var context = Substitute.For <ConsumeContext <ILessonNameChanged> >(); context.Message.LessonId.Returns(lessonId); context.Message.NewLessonName.Returns(newLessonName); await consumer.Consume(context); studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.SelectMany(f => f.Sections) .Select(s => s.LessonName) .Distinct() .ToList() .Should() .HaveCount(1) .And .Contain(newLessonName); var answerKeyOpticalForms = await GetListAsync <AnswerKeyOpticalForm>(client, examId); answerKeyOpticalForms.SelectMany(f => f.Sections) .Select(s => s.LessonName) .Distinct() .ToList() .Should() .HaveCount(1) .And .Contain(newLessonName); } }
public async Task UpdateLessonNamesOfOpticalForms(IFixture fixture, int userId, int lessonId, string lessonName, string newLessonName, int examId) { var answerKeyForms = GenerateAnswerKeyOpticalForms(fixture, 3, lessonId, lessonName).ToList(); var client = _webApplicationFactory.CreateClientWithUserId(userId); var repo = _webApplicationFactory.Services.GetRequiredService <IAnswerKeyOpticalFormRepository>(); await ExecuteExamCreatedConsumerAsync(repo, answerKeyForms, examId); var forms = new List <StudentOpticalForm> { GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), GenerateStudentForm(fixture, examId, userId, lessonId, lessonName), }; var response = await client.PostAsync(ApiPath, forms.ToJsonContent()); response.EnsureSuccessStatusCode(); var studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); var repository = _webApplicationFactory.Services.GetRequiredService <IStudentOpticalFormRepository>(); var consumer = new LessonNameChangedConsumer(repository, repo); var context = Substitute.For <ConsumeContext <ILessonNameChanged> >(); context.Message.LessonId.Returns(lessonId); context.Message.NewLessonName.Returns(newLessonName); await consumer.Consume(context); studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.SelectMany(f => f.Sections) .Select(s => s.LessonName) .Distinct() .Should() .Contain(newLessonName); var answerKeyOpticalForms = await GetListAsync <AnswerKeyOpticalForm>(client, examId); answerKeyOpticalForms.SelectMany(f => f.Sections) .Select(s => s.LessonName) .Distinct() .Should() .Contain(newLessonName); }