public async Task UpdateClassroomName(int userId, int examId, int classroomId, string classroom, int newGrade, string newClassName, IFixture fixture) { var client = _webApplicationFactory.CreateClientWithUserId(userId); var forms = GenerateStudentForms(fixture, examId, userId, classroomId, classroom); var response = await client.PostAsync(ApiPath, forms.ToJsonContent()); response.EnsureSuccessStatusCode(); var studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.Should() .HaveCount(2) .And .NotContain(s => s.ClassroomId != classroomId); var repository = _webApplicationFactory.Services.GetService(typeof(IStudentOpticalFormRepository)); var consumer = new ClassroomUpdatedConsumer(repository as IStudentOpticalFormRepository); var context = Substitute.For <ConsumeContext <IClassroomUpdated> >(); context.Message.ClassroomId.Returns(classroomId); context.Message.Grade.Returns(newGrade); context.Message.Name.Returns(newClassName); await consumer.Consume(context); studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.Select(s => s.Classroom) .Distinct() .Should() .HaveCount(1) .And .Contain($"{newGrade}/{newClassName}"); }
public async Task UpdateClassroomName() { var classroomId = RandomGen.Next(); var classroom = RandomGen.String(4); var newGrade = RandomGen.Next(11); var newClassName = RandomGen.String(3); var examId = RandomGen.Next(); var userId = RandomGen.Next(); using (var testServer = Create(userId)) { var forms = GenerateStudentForms(examId, userId, classroomId, classroom); var client = testServer.CreateClient(); var response = await client.PostAsync(ApiPath, forms.ToJsonContent()); response.EnsureSuccessStatusCode(); var studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.Should() .HaveCount(2) .And .NotContain(s => s.ClassroomId != classroomId); var repository = testServer.Host.Services.GetService(typeof(IOpticalFormRepository)); var consumer = new ClassroomUpdatedConsumer(repository as IOpticalFormRepository); var context = Substitute.For <ConsumeContext <IClassroomUpdated> >(); context.Message.ClassroomId.Returns(classroomId); context.Message.Grade.Returns(newGrade); context.Message.Name.Returns(newClassName); await consumer.Consume(context); studentOpticalForms = await GetListAsync <StudentOpticalForm>(client, examId); studentOpticalForms.Select(s => s.Classroom) .Distinct() .ToList() .Should() .HaveCount(1) .And .Contain($"{newGrade}/{newClassName}"); } }