public async Task <ActionResult> JoinOrganisation(JoinOrganisationViewModel viewModel) { if (!ModelState.IsValid) { return(View(viewModel)); } if (viewModel.SelectedValue == "No") { return(RedirectToAction("Search", "OrganisationRegistration")); } using (var client = apiClient()) { try { await client.SendAsync(User.GetAccessToken(), new JoinOrganisation(viewModel.OrganisationId)); } catch (ApiException ex) { if (ex.ErrorData != null) { ModelState.AddModelError(string.Empty, ex.ErrorData.ExceptionMessage); return(View(viewModel)); } throw; } return(RedirectToAction("JoinOrganisationConfirmation", new { organisationId = viewModel.OrganisationId, activeUsers = viewModel.AnyActiveUsers })); } }
public async Task PostJoinOrganisation_YesJoinOrganisationSelected_RedirectsToJoinOrganisationConfirmation() { // Arrange var weeeClient = A.Fake <IWeeeClient>(); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <JoinOrganisation> ._)) .Returns(Guid.NewGuid()); var organisationSearcher = A.Dummy <ISearcher <OrganisationSearchResult> >(); var controller = new OrganisationRegistrationController( () => weeeClient, organisationSearcher, configurationService); var model = new JoinOrganisationViewModel { SelectedValue = "Yes - join xyz" }; // Act var result = await controller.JoinOrganisation(model); // Assert var redirectToRouteResult = ((RedirectToRouteResult)result); Assert.Equal("JoinOrganisationConfirmation", redirectToRouteResult.RouteValues["action"]); }
public async Task GetJoinOrganisation_GivenNoActiveUsers_ReturnsViewWithActiveUsersSet() { // Arrange var weeeClient = A.Fake <IWeeeClient>(); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetPublicOrganisationInfo> ._)) .Returns(new PublicOrganisationData()); var organisationSearcher = A.Dummy <ISearcher <OrganisationSearchResult> >(); var controller = new OrganisationRegistrationController( () => weeeClient, organisationSearcher, configurationService); var activeUsers = new List <OrganisationUserData>(); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetActiveOrganisationUsers> ._)).Returns(activeUsers); // Act ActionResult result = await controller.JoinOrganisation(A.Dummy <Guid>()); // Assert var model = ((ViewResult)result).Model; JoinOrganisationViewModel viewModel = model as JoinOrganisationViewModel; viewModel.AnyActiveUsers.Should().Be(false); }
public async Task <ViewResult> JoinOrganisation(Guid organisationId) { using (var client = apiClient()) { var organisationData = await client.SendAsync( User.GetAccessToken(), new GetPublicOrganisationInfo(organisationId)); var existingAssociations = await client.SendAsync( User.GetAccessToken(), new GetUserOrganisationsByStatus( new int[0], new int[1] { (int)OrganisationStatus.Complete })); /* There should only ever be a single non-rejected association, but * during development this wasn't enforced. Using FirstOrDefault * instead of SingleOrDefault will avoid any issues being raised * due to bad data. */ OrganisationUserData existingAssociation = existingAssociations .Where(o => o.OrganisationId == organisationId) .Where(o => o.UserStatus != UserStatus.Rejected) .FirstOrDefault(); var activeUsers = await client.SendAsync(User.GetAccessToken(), new GetActiveOrganisationUsers(organisationId)); if (existingAssociation != null) { UserAlreadyAssociatedWithOrganisationViewModel viewModel = new UserAlreadyAssociatedWithOrganisationViewModel() { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, Status = existingAssociation.UserStatus, AnyActiveUsers = activeUsers.Any() }; return(View("UserAlreadyAssociatedWithOrganisation", viewModel)); } else { var model = new JoinOrganisationViewModel { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, AnyActiveUsers = activeUsers.Any() }; return(View(model)); } } }
public async Task PostJoinOrganisation_NoSearchAnotherOrganisationSelected_RedirectsToType() { // Arrange var weeeClient = A.Dummy <IWeeeClient>(); var organisationSearcher = A.Dummy <ISearcher <OrganisationSearchResult> >(); var controller = new OrganisationRegistrationController( () => weeeClient, organisationSearcher, configurationService); var model = new JoinOrganisationViewModel { SelectedValue = "No" }; // Act var result = await controller.JoinOrganisation(model); // Assert var redirectToRouteResult = ((RedirectToRouteResult)result); Assert.Equal("Search", redirectToRouteResult.RouteValues["action"]); }
public async Task PostJoinOrganisation_YesJoinOrganisationSelected_RedirectsToJoinOrganisationConfirmation() { // Arrange IWeeeClient weeeClient = A.Fake<IWeeeClient>(); A.CallTo(() => weeeClient.SendAsync(A<string>._, A<JoinOrganisation>._)) .Returns(Guid.NewGuid()); ISearcher<OrganisationSearchResult> organisationSearcher = A.Dummy<ISearcher<OrganisationSearchResult>>(); OrganisationRegistrationController controller = new OrganisationRegistrationController( () => weeeClient, organisationSearcher); JoinOrganisationViewModel model = new JoinOrganisationViewModel(); model.SelectedValue = "Yes - join xyz"; // Act ActionResult result = await controller.JoinOrganisation(model); // Assert var redirectToRouteResult = ((RedirectToRouteResult)result); Assert.Equal("JoinOrganisationConfirmation", redirectToRouteResult.RouteValues["action"]); }
public async Task PostJoinOrganisation_NoSearchAnotherOrganisationSelected_RedirectsToType() { // Arrange IWeeeClient weeeClient = A.Dummy<IWeeeClient>(); ISearcher<OrganisationSearchResult> organisationSearcher = A.Dummy<ISearcher<OrganisationSearchResult>>(); OrganisationRegistrationController controller = new OrganisationRegistrationController( () => weeeClient, organisationSearcher); JoinOrganisationViewModel model = new JoinOrganisationViewModel(); model.SelectedValue = "No"; // Act ActionResult result = await controller.JoinOrganisation(model); // Assert var redirectToRouteResult = ((RedirectToRouteResult)result); Assert.Equal("Search", redirectToRouteResult.RouteValues["action"]); }
public async Task<ActionResult> JoinOrganisation(JoinOrganisationViewModel viewModel) { if (!ModelState.IsValid) { return View(viewModel); } if (viewModel.SelectedValue == "No") { return RedirectToAction("Search", "OrganisationRegistration"); } using (var client = apiClient()) { try { await client.SendAsync( User.GetAccessToken(), new JoinOrganisation(viewModel.OrganisationId)); } catch (ApiException ex) { if (ex.ErrorData != null) { ModelState.AddModelError(string.Empty, ex.ErrorData.ExceptionMessage); return View(viewModel); } throw; } return RedirectToAction("JoinOrganisationConfirmation", new { organisationId = viewModel.OrganisationId }); } }
public async Task<ViewResult> JoinOrganisation(Guid organisationId) { using (var client = apiClient()) { var organisationData = await client.SendAsync( User.GetAccessToken(), new GetPublicOrganisationInfo(organisationId)); var existingAssociations = await client.SendAsync( User.GetAccessToken(), new GetUserOrganisationsByStatus( new int[0], new int[1] { (int)OrganisationStatus.Complete })); /* There should only ever be a single non-rejected association, but * during development this wasn't enforced. Using FirstOrDefault * instead of SingleOrDefault will avoid any issues being raised * due to bad data. */ OrganisationUserData existingAssociation = existingAssociations .Where(o => o.OrganisationId == organisationId) .Where(o => o.UserStatus != UserStatus.Rejected) .FirstOrDefault(); if (existingAssociation != null) { UserAlreadyAssociatedWithOrganisationViewModel viewModel = new UserAlreadyAssociatedWithOrganisationViewModel() { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, Status = existingAssociation.UserStatus }; return View("UserAlreadyAssociatedWithOrganisation", viewModel); } else { var model = new JoinOrganisationViewModel { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName }; return View(model); } } }