private static IOptions <FilterConfiguration> CreateFilterConfiguration(
            string modelName,
            string filterName,
            string filterOptionKey,
            string filterOptionValue)
        {
            var filterBuilder = new FilterConfigurationBuilder()
                                .AddModel(modelName, builder =>
            {
                builder.AddFilter(filterName, options =>
                {
                    options.AddOption(filterOptionKey, filterOptionValue);
                });
            });

            var options = Options.Create(filterBuilder.Build());

            return(options);
        }
        public async Task RestrictedContractorFilterForContractors()
        {
            const string ModelName = FilterConstants.WorkOrder;

            var mockCurrentUserService = new CurrentUserServiceMock();

            mockCurrentUserService.SetSecurityGroup(UserGroups.Contractor);
            mockCurrentUserService.SetContractor("c1", "c2", "c3");

            var mockScheduleOfRatesGateway = new Mock <IScheduleOfRatesGateway>();

            mockScheduleOfRatesGateway.Setup(m => m.GetLiveContractors()).ReturnsAsync(BuildContractors("c1", "c3", "c4"));

            var filter = new FilterConfigurationBuilder().AddModel(ModelName, b => { }).Build();
            var sut    = new WorkOrderFilterProvider(Options.Create(filter), mockScheduleOfRatesGateway.Object, mockCurrentUserService.Object);

            var result = await sut.GetFilter();

            result.Should().ContainKey(FilterSectionConstants.Contractors);
            result[FilterSectionConstants.Contractors].Should().HaveCount(2);
            result[FilterSectionConstants.Contractors].Should().ContainSingle(c => c.Key == "c1" && c.Description == "c1");
            result[FilterSectionConstants.Contractors].Should().ContainSingle(c => c.Key == "c3" && c.Description == "c3");
        }