public void CanReturnHierarchyForFolderWithReports()
        {
            var serviceMock = MakeMockSsrsService();
            var folder1 = new CatalogItem()
            {
                Path = "/Foo",
                Name = "Foo",
                Type = ItemTypeEnum.Folder
            };
            CatalogItem[] onefolder = new CatalogItem[] { folder1 };
            var item1 = new CatalogItem()
            {
                Path = @"/Foo/Test1",
                Name = @"Test1",
                Type = ItemTypeEnum.Report
            };
            var item2 = new CatalogItem()
            {
                Path = @"/Foo/Test2",
                Name = @"Test2",
                Type = ItemTypeEnum.Report
            };
            CatalogItem[] twoitems = new CatalogItem[] { item1, item2 };

            var returnResponse1 = new ListChildrenResponse(null, onefolder);
            serviceMock.Expect(s => s.ListChildren(Arg<ListChildrenRequest>.Matches(lcr => lcr.Item == @"/") )).Return(returnResponse1);
            var expectedRequest2 = new ListChildrenRequest(@"/Foo", false);
            var returnResponse2 = new ListChildrenResponse(null, twoitems);
            serviceMock.Expect(s => s.ListChildren(Arg<ListChildrenRequest>.Matches(lcr => lcr.Item == @"/Foo"))).Return(returnResponse2);

            var fac = new CrcReportFolderFactory();
            var ret = fac.Create(serviceMock);

            Assert.IsNotNull(ret);
            Assert.AreEqual(String.Empty, ret.FolderName);
            Assert.AreEqual(@"/", ret.Path);
            Assert.AreEqual(1, ret.SubFolders.Count());
            Assert.AreEqual(0, ret.Reports.Count());
            var subFolder = ret.SubFolders[0];
            Assert.AreEqual("/Foo", subFolder.Path);
            Assert.AreEqual("Foo", subFolder.FolderName);
            Assert.IsTrue(subFolder.Reports.FirstOrDefault(r => r.DisplayName == @"Test1") != null);
            Assert.AreEqual(@"/Foo/Test1", subFolder.Reports.FirstOrDefault(r => r.DisplayName == @"Test1").ReportPath);
            Assert.IsTrue(subFolder.Reports.FirstOrDefault(r => r.DisplayName == @"Test2") != null);
            Assert.AreEqual(@"/Foo/Test2", subFolder.Reports.FirstOrDefault(r => r.DisplayName == @"Test2").ReportPath);
        }
        public void CanReturnHierarchyAndOmitHiddenReports()
        {
            var serviceMock = MakeMockSsrsService();
            var item1 = new CatalogItem()
            {
                Path = @"/Test1",
                Name = @"Test1",
                Type = ItemTypeEnum.Report,
                Hidden = true
            };
            var item2 = new CatalogItem()
            {
                Path = @"/Test2",
                Name = @"Test2",
                Type = ItemTypeEnum.Report,
                Hidden = false
            };
            CatalogItem[] twoitems = new CatalogItem[] { item1, item2 };

            var returnResponse = new ListChildrenResponse(null, twoitems);
            serviceMock.Expect(s => s.ListChildren(Arg<ListChildrenRequest>.Matches(lcr => lcr.Item == @"/"))).Return(returnResponse);

            var fac = new CrcReportFolderFactory();
            var ret = fac.Create(serviceMock);

            Assert.IsNotNull(ret);
            Assert.AreEqual(String.Empty, ret.FolderName);
            Assert.AreEqual(@"/", ret.Path);
            Assert.AreEqual(0, ret.SubFolders.Count());
            Assert.AreEqual(1, ret.Reports.Count());
            Assert.IsTrue(ret.Reports.FirstOrDefault(r => r.DisplayName == @"Test2") != null);
        }
        public void CanReturnHierarchyForEmptyList()
        {
            var serviceMock = MakeMockSsrsService();
            CatalogItem[] empty = new CatalogItem[0];

            var returnResponse = new ListChildrenResponse(null, empty);
            serviceMock.Expect(s => s.ListChildren( Arg<ListChildrenRequest>.Matches(lcr => lcr.Item == @"/"))).Return(returnResponse);

            var fac = new CrcReportFolderFactory();
            var ret = fac.Create(serviceMock);

            Assert.IsNotNull(ret);
            Assert.AreEqual(String.Empty, ret.FolderName);
            Assert.AreEqual(@"/", ret.Path);
            Assert.AreEqual(0, ret.SubFolders.Count());
            Assert.AreEqual(0, ret.Reports.Count());
        }