public async Task Update_Progression_Or_403(Mock <IProgressionService> service, Mock <ISubjectService> subjects, Mock <IConceptService> concepts, User user, Subject subject, Subject invalidSubject, Concept concept) { concepts.Setup(x => x.Get(concept.Id, It.IsAny <CancellationToken>())).ReturnsAsync(concept); subjects.Setup(x => x.Get(subject.Id, It.IsAny <CancellationToken>())).ReturnsAsync(subject); subjects.Setup(x => x.Get(invalidSubject.Id, It.IsAny <CancellationToken>())).ReturnsAsync(invalidSubject); service.Setup(x => x.Update(user, subject, concept, It.IsAny <CancellationToken>())).ReturnsAsync(true); service.Setup(x => x.Update(user, invalidSubject, concept, It.IsAny <CancellationToken>())).ReturnsAsync(false); var controller = TestSetup.SetupController <ProgressionController>(service.Object, subjects.Object, concepts.Object).SetupSession(user); var validRequest = new ProgressionRequest { ConceptId = concept.Id, SubjectId = subject.Id, }; var invalidRequest = new ProgressionRequest { ConceptId = concept.Id, SubjectId = invalidSubject.Id, }; var result = await controller.UpdateProgression(validRequest); var result403 = await controller.UpdateProgression(invalidRequest); result.Should().NotBeNull().And.BeOfType <OkResult>(); result403.Should().NotBeNull().And.BeOfType <ForbidResult>(); }
public async Task <IActionResult> UpdateProgression(ProgressionRequest request) { var subject = await _subjects.Get(request.SubjectId, HttpContext.RequestAborted); var concept = await _concepts.Get(request.ConceptId, HttpContext.RequestAborted); var result = await _progression.Update(HttpContext.GetUser(), subject, concept, HttpContext.RequestAborted); return(result ? Ok() : Forbid()); }