public void MembershipApplication_FilteredForNew_ContainsOnlyNew()
        {
            List <MembershipApplication> membershipApplications = new List <MembershipApplication>();

            for (int i = 0; i < 5; i++)
            {
                var changedApplication = new MembershipApplication(connectionString);
                changedApplication.ApplicationStatus = ApplicationStatus.Denied;
                membershipApplications.Add(changedApplication);
            }

            for (int i = 0; i < 5; i++)
            {
                var changedApplication = new MembershipApplication(connectionString);
                changedApplication.ApplicationStatus = ApplicationStatus.OnHold;
                membershipApplications.Add(changedApplication);
            }

            for (int i = 0; i < 5; i++)
            {
                var changedApplication = new MembershipApplication(connectionString);
                changedApplication.ApplicationStatus = ApplicationStatus.New;
                membershipApplications.Add(changedApplication);
            }

            Assert.True(membershipApplications.Count == 15);


            Domain.CBS requestDirector = new Domain.CBS(connectionString);
            List <MembershipApplication> filteredMembershipApplications =
                requestDirector.FilterMembershipApplications(membershipApplications, ApplicationStatus.New);

            Assert.True(filteredMembershipApplications.TrueForAll(q => q.ApplicationStatus == ApplicationStatus.New));
            Assert.True(filteredMembershipApplications.Count(q => q.ApplicationStatus == ApplicationStatus.New) == 5);
        }
        public void MembershipApplication_Record_ReturnSuccess()
        {
            Domain.CBS requestDirector = new Domain.CBS(connectionString);
            bool       success         = requestDirector.RecordMembershipApplication(membershipApplication);

            Assert.True(success);
        }
        public void MembershipApplications_WhenRetrived_NotNull()
        {
            Domain.CBS requestDirector        = new Domain.CBS(connectionString);
            var        membershipApplications = requestDirector.GetMembershipApplications(DateTime.Today.AddDays(-29), DateTime.Today.AddDays(1));

            Assert.NotNull(membershipApplications);
        }
        public void MembershipApplication_Recorded_ExistsWhenRetrieved()
        {
            Domain.CBS requestDirector = new Domain.CBS(connectionString);
            requestDirector.RecordMembershipApplication(membershipApplication);
            var membershipApplications = requestDirector.GetMembershipApplications(DateTime.Today.AddDays(-29), DateTime.Today.AddDays(1));

            Assert.True(membershipApplications.Exists(ma => ma.ProspectiveMemberContactInfo.LastName == membershipApplication.ProspectiveMemberContactInfo.LastName &&
                                                      ma.ProspectiveMemberContactInfo.FirstName == membershipApplication.ProspectiveMemberContactInfo.FirstName));
        }
        private MembershipApplication CreateAndRecordMembershipApplication(MembershipType membershipType)
        {
            Domain.CBS requestDirector = new Domain.CBS(connectionString);
            membershipApplication.MembershipType = membershipType;
            bool success          = requestDirector.RecordMembershipApplication(membershipApplication);
            var  foundApplication = requestDirector.GetMembershipApplications(DateTime.Today.AddDays(-29), DateTime.Today.AddDays(1)).FirstOrDefault();

            return(foundApplication);
        }
        public void MembershipApplication_WhenUpdated_Persist(ApplicationStatus applicationStatus)
        {
            Domain.CBS requestDirector     = new Domain.CBS(connectionString);
            var        applicationToUpdate = requestDirector.GetMembershipApplications(DateTime.Today.AddDays(-29), DateTime.Today.AddDays(1)).FirstOrDefault();

            Assert.NotNull(applicationToUpdate);
            ApplicationStatus initialStatus = applicationToUpdate.ApplicationStatus;

            bool confirmation = applicationToUpdate.UpdateMembershipApplication(applicationStatus, out string message);

            Assert.True(confirmation);

            var retrievedApplication = requestDirector.GetMembershipApplications(DateTime.Today.AddDays(-29), DateTime.Today.AddDays(1)).Where(ma =>
                                                                                                                                               ma.ApplicationStatus == applicationStatus && ma.ProspectiveMemberContactInfo.FirstName == applicationToUpdate.ProspectiveMemberContactInfo.FirstName &&
                                                                                                                                               ma.ProspectiveMemberContactInfo.LastName == applicationToUpdate.ProspectiveMemberContactInfo.LastName).FirstOrDefault();

            Assert.NotNull(retrievedApplication);

            retrievedApplication.UpdateMembershipApplication(initialStatus, out string _);
        }