public void TestCreateFilter()
        {
            //setup
            var cardio = new Specialty { Name = "Cardiology", Id = 1, SpecialtyType = SpecialtyType.Specialty };
            var oncology = new Specialty { Name = "Oncology", Id = 2, SpecialtyType = SpecialtyType.Specialty };

            var source = new List<ProviderCacheView>();

            var provider = new ProviderCacheView { Id = 1 };
            provider.AddSpecialty(cardio);
            source.Add(provider);

            provider = new ProviderCacheView { Id = 2 };
            provider.AddSpecialty(cardio);
            source.Add(provider);

            provider = new ProviderCacheView { Id = 3 };
            provider.AddSpecialty(oncology);
            source.Add(provider);

            provider = new ProviderCacheView { Id = 4 };
            source.Add(provider);

            var builder = new SpecialtyFilterBuilder();

            //act
            var filter = builder.CreateFilters(source.AsQueryable()).FirstOrDefault();

            //assert
            Assert.IsNotNull(filter);
            Assert.AreEqual(QueryStringKeys.SpecialtyIdKey, filter.QueryStringParameterName);
            Assert.AreEqual("Specialty", filter.Name);
            Assert.IsNotNull(filter.FilterValues);
            Assert.AreEqual(2, filter.FilterValues.Count());

            var value = filter.FilterValues.ElementAt(0);
            Assert.AreEqual(cardio.Name, value.DisplayName);
            Assert.AreEqual(cardio.Id.ToString(CultureInfo.CurrentCulture), value.QueryStringParameterValue);
            Assert.AreEqual(2, value.Count);

            value = filter.FilterValues.ElementAt(1);
            Assert.AreEqual(oncology.Name, value.DisplayName);
            Assert.AreEqual(oncology.Id.ToString(CultureInfo.CurrentCulture), value.QueryStringParameterValue);
            Assert.AreEqual(1, value.Count);
        }