public async void HasActiveUsers_GivenOrganisationWithInactiveUser_FalseShouldBeReturned(UserStatus status) { using (var databaseWrapper = new DatabaseWrapper()) { var organisationDataAccess = new OrganisationDataAccess(databaseWrapper.WeeeContext); var organisation = Domain.Organisation.Organisation.CreateSoleTrader(fixture.Create <string>()); databaseWrapper.WeeeContext.Organisations.Add(organisation); await databaseWrapper.WeeeContext.SaveChangesAsync(); var organisationUser = new Domain.Organisation.OrganisationUser(Guid.Parse(databaseWrapper.Model.AspNetUsers.First().Id), organisation.Id, status); databaseWrapper.WeeeContext.OrganisationUsers.Add(organisationUser); await databaseWrapper.WeeeContext.SaveChangesAsync(); var result = await organisationDataAccess.HasActiveUsers(organisation.Id); result.Should().BeFalse(); } }
public async Task <bool> SendOrganisationUserRequestCompleted(Domain.Organisation.OrganisationUser organisationUser, bool activeUsers) { var model = new { OrganisationName = organisationUser.Organisation.OrganisationName, Approved = organisationUser.UserStatus == UserStatus.Active, ExternalUserLoginUrl = configuration.ExternalUserLoginUrl, FullName = organisationUser.User.FullName, ActiveUsers = activeUsers }; var content = new EmailContent() { HtmlText = templateExecutor.Execute("OrganisationUserRequestCompleted.cshtml", model), PlainText = templateExecutor.Execute("OrganisationUserRequestCompleted.txt", model) }; using (var message = messageCreator.Create(organisationUser.User.Email, "Your request to access " + organisationUser.Organisation.OrganisationName, content)) { return(await sender.SendAsync(message)); } }
public async void GetOrganisationUsers_SameUserRejectedMultipleTimesForOneOrganisation_ButAlsoHasAnotherStatus_ReturnsTheOtherStatus(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user user var modelHelper = new ModelHelper(dbWrapper.Model); var aspNetUser = modelHelper.CreateUser("My username", IdType.Guid); dbWrapper.Model.SaveChanges(); // Add organisation var uniqueOrgName = "Test Org " + Guid.NewGuid(); var country = dbWrapper.WeeeContext.Countries.First(); var organisation = Domain.Organisation.Organisation.CreateSoleTrader(uniqueOrgName); organisation.AddOrUpdateMainContactPerson(new Domain.Organisation.Contact("First name", "Last name", "Developer")); organisation.AddOrUpdateAddress(AddressType.OrganisationAddress, new Domain.Organisation.Address( "Address line 1", string.Empty, "Town", string.Empty, string.Empty, country, "01234567890", "[email protected]")); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add same organisation user multiple times, rejected var rejectedOrganisationUsers = new List<Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected), new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected), new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, UserStatus.Rejected) }; var otherOrganisationUser = new Domain.Organisation.OrganisationUser(Guid.Parse(aspNetUser.Id), organisation.Id, status.ToDomainEnumeration<UserStatus>()); dbWrapper.WeeeContext.OrganisationUsers.AddRange(rejectedOrganisationUsers); dbWrapper.WeeeContext.OrganisationUsers.Add(otherOrganisationUser); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var result = (await dataAccess.GetOrganisationUsers()) .Where(ou => ou.OrganisationName == uniqueOrgName); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(status, organisationUser.Status); } }