public void ProvidesAllApplicationsWhenFilterIsEmpty()
        {
            var mockedApplications = GetMockApplicationList("One", "Two", "Three");

            var repositoryMock = MockRepository.GenerateMock<IApplicationRepository>();
            repositoryMock.Stub(x => x.Get()).Return(mockedApplications);

            var applicationList = new FilteredApplicationCategory(null, repositoryMock);

            Assert.IsEmpty(applicationList.Filter);

            var actualApplications = applicationList.Applications;

            Assert.AreEqual(mockedApplications.Count, actualApplications.Count());
            Assert.IsTrue(mockedApplications.Intersect(actualApplications).Count() == mockedApplications.Count);
        }
        public void ProvidesApplicationsWhenFilterMatchesNameExactly()
        {
            var mockedApplications = GetMockApplicationList("One", "Two", "Three");

            var repositoryMock = MockRepository.GenerateMock<IApplicationRepository>();
            repositoryMock.Stub(x => x.Get()).Return(mockedApplications);

            var applicationList = new FilteredApplicationCategory(null, repositoryMock);

            applicationList.Filter = "One";

            var actualApplications = applicationList.Applications;

            Assert.AreEqual(1, actualApplications.Count());
            Assert.AreEqual(mockedApplications[0].Name, actualApplications.First().Name);
        }
        public void ProvidesApplicationWhenFilterMatchesNamePartially(string[] applicationNames, string[] expectedNames, string filter)
        {
            var mockedApplications = GetMockApplicationList(applicationNames);

            var repositoryMock = MockRepository.GenerateMock<IApplicationRepository>();
            repositoryMock.Stub(x => x.Get()).Return(mockedApplications);

            var applicationList = new FilteredApplicationCategory(null, repositoryMock);

            applicationList.Filter = filter;

            var actualApplications = applicationList.Applications;

            Assert.AreEqual(expectedNames.Length, actualApplications.Count());

            foreach (var currentExpectedName in expectedNames)
                Assert.IsTrue(actualApplications.Any(x => x.Name == currentExpectedName));
        }
        public void ProvidesNoApplicationsWhenNoApplicationsMatchFilter()
        {
            var mockedApplications = GetMockApplicationList("One", "Two", "Three");

            var repositoryMock = MockRepository.GenerateMock<IApplicationRepository>();
            repositoryMock.Stub(x => x.Get()).Return(mockedApplications);

            var applicationList = new FilteredApplicationCategory(null, repositoryMock);

            applicationList.Filter = "Four";

            var actualApplications = applicationList.Applications;

            Assert.AreEqual(0, actualApplications.Count());
        }
 public IFilteredApplicationCategory Build(string name)
 {
     var category = new FilteredApplicationCategory(name, _applicationRepository);
     return category;
 }