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); }
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); }