Пример #1
0
        public void GroupFilters_RelatedDataViewLocation_CanSerializeSettings()
        {
            var settingsSource = new global::Rock.Reporting.DataFilter.Group.LocationDataViewFilter.FilterSettings();

            settingsSource.DataViewGuid = GroupsModuleTestHelper.Constants.DataViewLocationsOutsideArizonaGuid;

            var settingsString = settingsSource.ToSelectionString();

            var settingsTarget = new global::Rock.Reporting.DataFilter.Group.LocationDataViewFilter.FilterSettings(settingsString);

            Assert.AreEqual(GroupsModuleTestHelper.Constants.DataViewLocationsOutsideArizonaGuid, settingsTarget.DataViewGuid);
        }
Пример #2
0
        public void GroupFilters_RelatedDataViewLocation_ShouldNotReturnGroupWithNoRelatedLocations()
        {
            var settings = new global::Rock.Reporting.DataFilter.Group.LocationDataViewFilter.FilterSettings();

            settings.DataViewGuid = GroupsModuleTestHelper.Constants.DataViewLocationsOutsideArizonaGuid;

            var groupQuery = GetGroupQueryWithLocationDataViewFilter(settings);

            var results = groupQuery.ToList();

            Assert.IsTrue(results.Count > 0, "The result set must contain at least one group.");

            // Verify that there are no Groups in the result set having any Location where State = "AZ".
            var countOfGroupsInArizona = results.Where(x => x.GroupLocations.Any(gl => gl.Location.State == "AZ")).Count();

            Assert.IsTrue(countOfGroupsInArizona == 0, "The result set contains one or more groups that do not match the location filter.");
        }
        /// <summary>
        /// Create a Group Query using the LocationDataViewFilter with the specified settings.
        /// </summary>
        /// <param name="settings"></param>
        /// <returns></returns>
        private IQueryable <Rock.Model.Group> GetGroupQueryWithLocationDataViewFilter(global::Rock.Reporting.DataFilter.Group.LocationDataViewFilter.FilterSettings settings)
        {
            var settingsFilter = new Rock.Reporting.DataFilter.Group.LocationDataViewFilter();

            var dataContext = new RockContext();

            var groupService = new GroupService(dataContext);

            var parameterExpression = groupService.ParameterExpression;

            var predicate = settingsFilter.GetExpression(typeof(Rock.Model.Group), groupService, parameterExpression, settings.ToSelectionString());

            var groupQuery = GetFilteredEntityQuery <Rock.Model.Group>(dataContext, predicate, parameterExpression);

            return(groupQuery);
        }