public async void GetOrganisationUsers_WithStatusFilter_ReturnsFilteredResults(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet users var modelHelper = new ModelHelper(dbWrapper.Model); var activeUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var inactiveUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var pendingUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); var rejectedUser = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = fixture.Create <string>(); var organisation = Organisation.CreateSoleTrader(organisationName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(activeUser.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(inactiveUser.Id), organisation.Id, UserStatus.Inactive), new Domain.Organisation.OrganisationUser(Guid.Parse(pendingUser.Id), organisation.Id, UserStatus.Pending), new Domain.Organisation.OrganisationUser(Guid.Parse(rejectedUser.Id), organisation.Id, UserStatus.Rejected) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { Status = status, OrganisationName = organisationName }; var result = await dataAccess.GetOrganisationUsers(filter); UserSearchData organisationUser; if (status == Core.Shared.UserStatus.Active) { Assert.Single(result.Where(r => r.FirstName == activeUser.FirstName)); organisationUser = result.Single(r => r.FirstName == activeUser.FirstName); } else { Assert.Single(result); organisationUser = result.Single(); } Assert.Equal(status, organisationUser.Status); } }
public async void GetOrganisationUsers_SameUserRejectedMultipleTimesForOneOrganisation_OnlyReturnsOneRejection() { 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 organisationUsers = 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) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var result = (await dataAccess.GetOrganisationUsers()) .Where(ou => ou.OrganisationName == uniqueOrgName); Assert.Single(result); } }
public async void GetOrganisationUsers_SameUserRejectedMultipleTimesForOneOrganisation_ButAlsoHasAnotherStatus_ReturnsTheOtherStatus(Core.Shared.UserStatus status) { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet 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 organisation = Organisation.CreateSoleTrader(uniqueOrgName); 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(new UserFilter())) .Where(ou => ou.OrganisationName == uniqueOrgName); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(status, organisationUser.Status); } }
public async void GetOrganisationUsers_WithOrganisationNameFilter_ReturnsMultipleFilteredResults() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user var modelHelper = new ModelHelper(dbWrapper.Model); var user = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisations var organisationOneName = "Waste"; var organisationTwoName = "Trash"; var organisationThreeName = "Recycling"; var organisationOne = Organisation.CreateSoleTrader(organisationOneName); var organisationTwo = Organisation.CreatePartnership(organisationTwoName); var organisationThree = Organisation.CreateRegisteredCompany(organisationThreeName, fixture.Create <string>().Substring(0, 15)); organisationOne.CompleteRegistration(); organisationTwo.CompleteRegistration(); organisationThree.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisationOne); dbWrapper.WeeeContext.Organisations.Add(organisationTwo); dbWrapper.WeeeContext.Organisations.Add(organisationThree); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationOne.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationTwo.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisationThree.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { OrganisationName = "as" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Equal(2, result.Count()); Assert.Single(result.Where(r => r.OrganisationName == organisationOneName)); Assert.Single(result.Where(r => r.OrganisationName == organisationTwoName)); } }
public async void GetOrganisationUsers_WithFullNameFilter_ReturnsFilteredResults() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet users var modelHelper = new ModelHelper(dbWrapper.Model); var userOne = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Marshall", "Eriksen"); var userTwo = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Lily", "Aldrin"); var userThree = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, "Barney", "Stinson"); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = fixture.Create <string>(); var organisation = Organisation.CreateSoleTrader(organisationName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(userOne.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(userTwo.Id), organisation.Id, UserStatus.Active), new Domain.Organisation.OrganisationUser(Guid.Parse(userThree.Id), organisation.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { Name = "y s" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Single(result); var organisationUser = result.Single(); Assert.Equal(userThree.FirstName, organisationUser.FirstName); Assert.Equal(userThree.Surname, organisationUser.LastName); } }
public async void GetOrganisationUsers_WithOrganisationNameFilterAndMatchingTradingName_DoesNotReturnWhenOrganisationNameDoesNotMatch() { using (var dbWrapper = new DatabaseWrapper()) { // Add AspNet user var modelHelper = new ModelHelper(dbWrapper.Model); var user = modelHelper.CreateUser(fixture.Create <string>(), IdType.Guid, fixture.Create <string>().Substring(0, 10), fixture.Create <string>().Substring(0, 10)); dbWrapper.Model.SaveChanges(); // Add organisation var organisationName = "Waste"; var organisationTradingName = "Trash"; var organisation = Organisation.CreateSoleTrader(organisationName, organisationTradingName); organisation.CompleteRegistration(); dbWrapper.WeeeContext.Organisations.Add(organisation); dbWrapper.WeeeContext.SaveChanges(); // Add organisation users var organisationUsers = new List <Domain.Organisation.OrganisationUser> { new Domain.Organisation.OrganisationUser(Guid.Parse(user.Id), organisation.Id, UserStatus.Active) }; dbWrapper.WeeeContext.OrganisationUsers.AddRange(organisationUsers); dbWrapper.WeeeContext.SaveChanges(); var dataAccess = new FindMatchingUsersDataAccess(dbWrapper.WeeeContext); var filter = new UserFilter { OrganisationName = "Trash" }; var result = await dataAccess.GetOrganisationUsers(filter); Assert.Equal(0, result.Count()); } }