public async Task Group_Convert_Confirm_WithValidationError() { var domainModel = new SearchGroupDocument { Name = "Group 1000", GroupUId = 1000, GroupTypeId = (int)eLookupGroupType.SingleacademyTrust }; GetMock <IGroupsWriteService>().Setup(x => x.ConvertSAT2MAT(It.Is <int>(i => i == 1000), It.Is <bool>(b => b == true), It.IsAny <IPrincipal>())).ReturnsAsync(new ApiResponse <NumericResultDto>(false) { Errors = new [] { new ApiError { Code = "test", Message = "msg" } } }); var vm = new ConvertSATViewModel { Token = UriHelper.SerializeToUrlToken(domainModel), ActionName = "confirm", CopyGovernanceInfo = true }; var response = (ViewResult)await ObjectUnderTest.Convert(vm); response.ViewName.ShouldBe(""); Assert.That(ObjectUnderTest.ModelState[""].Errors[0].ErrorMessage, Is.EqualTo("msg")); GetMock <IGroupsWriteService>().Verify(x => x.ConvertSAT2MAT(It.Is <int>(i => i == 1000), It.Is <bool>(b => b == true), It.IsAny <IPrincipal>()), Times.Once); }
public async Task Group_Convert_FindValidGroup() { GetMock <ICachedLookupService>().Setup(x => x.GetNameAsync(It.IsAny <Expression <Func <int?> > >(), It.IsAny <string>())).ReturnsAsync("placeholder"); GetMock <IGroupReadService>().Setup(x => x.SearchByIdsAsync(It.IsAny <string>(), It.Is <int?>(i => i == 1000), It.IsAny <string>(), It.IsAny <int?>(), It.IsAny <IPrincipal>())).ReturnsAsync(() => new ApiPagedResult <SearchGroupDocument>(1, new List <SearchGroupDocument>() { new SearchGroupDocument { Name = "Group 1000", GroupUId = 1000, GroupTypeId = (int)eLookupGroupType.SingleacademyTrust } })); var vm = new ConvertSATViewModel { ActionName = "find", Text = "1000" }; var response = (ViewResult)await ObjectUnderTest.Convert(vm); vm.Details.Name.ShouldBe("Group 1000"); vm.Details.GroupUId.ShouldBe(1000); vm.Details.GroupTypeId.ShouldBe((int)eLookupGroupType.SingleacademyTrust); vm.CountryName.ShouldBe("placeholder"); vm.CountyName.ShouldBe("placeholder"); vm.Token.ShouldNotBe(null); response.ViewName.ShouldBe(""); }
public async Task Group_Convert_Confirm_Success() { var domainModel = new SearchGroupDocument { Name = "Group 1000", GroupUId = 1000, GroupTypeId = (int)eLookupGroupType.SingleacademyTrust }; GetMock <IGroupsWriteService>().Setup(x => x.ConvertSAT2MAT(It.Is <int>(i => i == 1000), It.Is <bool>(b => b == true), It.IsAny <IPrincipal>())).ReturnsAsync(new ApiResponse <NumericResultDto>(true) { Response = new NumericResultDto { Value = 200 } }); var vm = new ConvertSATViewModel { Token = UriHelper.SerializeToUrlToken(domainModel), ActionName = "confirm", CopyGovernanceInfo = true }; var response = (RedirectToRouteResult)await ObjectUnderTest.Convert(vm); response.RouteName.ShouldBe("GroupDetails"); response.RouteValues["id"].ShouldBe(200); GetMock <IGroupsWriteService>().Verify(x => x.ConvertSAT2MAT(It.Is <int>(i => i == 1000), It.Is <bool>(b => b == true), It.IsAny <IPrincipal>()), Times.Once); }
public async Task <ActionResult> Convert(ConvertSATViewModel viewModel) { if (viewModel.ActionName == "find" && ModelState.IsValid) { var result = (await _groupReadService.SearchByIdsAsync(viewModel.Text, viewModel.Text.ToInteger(), viewModel.Text, viewModel.Text.ToInteger(), User)).Items.FirstOrDefault(); if (result == null) { ModelState.AddModelError(nameof(viewModel.Text), "We were unable to find a single-academy trust matching those details"); } else if (result.StatusId == ((int)GS.Closed)) { ModelState.AddModelError(nameof(viewModel.Text), "Closed single-academy trusts can not be converted"); } else if (result.GroupTypeId != (int)GT.SingleacademyTrust) { ModelState.AddModelError(nameof(viewModel.Text), "That's an invalid group because it's of the wrong type."); } else { viewModel.Details = result; viewModel.CountryName = await _lookup.GetNameAsync(() => result.Address.CountryId); viewModel.CountyName = await _lookup.GetNameAsync(() => result.Address.CountyId); viewModel.Token = UriHelper.SerializeToUrlToken(result); } } else if (viewModel.ActionName == "confirm") { viewModel.Details = UriHelper.DeserializeUrlToken <SearchGroupDocument>(viewModel.Token); var apiResponse = await _groupWriteService.ConvertSAT2MAT(viewModel.Details.GroupUId, viewModel.CopyGovernanceInfo, User); if (apiResponse.HasErrors) { apiResponse.Errors.ForEach(x => ModelState.AddModelError("", x.GetMessage())); } else { TempData["ShowSaved"] = "saved"; return(RedirectToRoute("GroupDetails", new { id = apiResponse.GetResponse().Value })); } } return(View(viewModel)); }