Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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());
            }
        }