public async Task ChangeSubjectsOfQuestions(IFixture fixture, int subjectId, string subject, int userId, string newSubject, int examId) { var answerKeyForms = SetSubject( GenerateAnswerKeyOpticalForms(fixture, 1).ToList(), subjectId, subject); var client = _webApplicationFactory.CreateClientWithUserId(userId); var answerKeyOpticalFormRepository = _webApplicationFactory.Services.GetRequiredService <IAnswerKeyOpticalFormRepository>(); await ExecuteExamCreatedConsumerAsync(answerKeyOpticalFormRepository, answerKeyForms, examId); var repository = _webApplicationFactory.Services.GetRequiredService <IStudentOpticalFormRepository>(); var consumer = new SubjectChangedConsumer(repository, answerKeyOpticalFormRepository); var context = Substitute.For <ConsumeContext <ISubjectChanged> >(); context.Message.SubjectId.Returns(subjectId); context.Message.NewName.Returns(newSubject); await consumer.Consume(context); var answerKeyOpticalForms = await GetListAsync <AnswerKeyOpticalForm>(client, examId); answerKeyOpticalForms.SelectMany(a => a.Sections) .SelectMany(s => s.Answers) .Select(a => a.SubjectName) .Distinct() .ToList() .Should() .HaveCount(1) .And .Contain(newSubject); }
public async Task ChangeSubjectsOfQuestions() { var userId = RandomGen.Next(10000); var subjectId = RandomGen.Next(); var subject = RandomGen.String(40); var newSubject = RandomGen.String(40); var answerKeyForms = SetSubject( GenerateAnswerKeyOpticalForms(1).ToList(), subjectId, subject); using (var testServer = Create(userId)) { var client = testServer.CreateClient(); var examId = await ExecuteExamCreatedConsumerAsync(testServer, answerKeyForms); var repository = testServer.Host.Services.GetService(typeof(IOpticalFormRepository)); var consumer = new SubjectChangedConsumer(repository as IOpticalFormRepository); var context = Substitute.For <ConsumeContext <ISubjectChanged> >(); context.Message.SubjectId.Returns(subjectId); context.Message.NewName.Returns(newSubject); await consumer.Consume(context); var answerKeyOpticalForms = await GetListAsync <AnswerKeyOpticalForm>(client, examId); answerKeyOpticalForms.SelectMany(a => a.Sections) .SelectMany(s => s.Answers) .Select(a => a.SubjectName) .Distinct() .ToList() .Should() .HaveCount(1) .And .Contain(newSubject); } }