public void DirectorySystemFacade_AddCatalog_AddCatalogInNotEmptyRepository_CorrectlyAddedCatalog() { // Arrange List <Catalog> allCatalogs = new List <Catalog> { new Catalog { Id = 1, Name = "Catalog1", OrderInParentCatalog = 1, ParentCatalogId = 0 }, new Catalog { Id = 3, Name = "Catalog2", OrderInParentCatalog = 4, ParentCatalogId = 100 }, new Catalog { Id = 4, Name = "Catalog3", OrderInParentCatalog = 2, ParentCatalogId = 100 }, new Catalog { Id = 100, Name = "Catalog100", OrderInParentCatalog = 2, ParentCatalogId = 0 }, }; List <TextBlock> allTextBlocks = new List <TextBlock> { new TextBlock { Id = 2, Name = "TextBlock1", OrderInParentCatalog = 1, ParentCatalogId = 0, Text = "Text1" }, new TextBlock { Id = 4, Name = "TextBlock2", OrderInParentCatalog = 3, ParentCatalogId = 100, Text = "Text2" }, new TextBlock { Id = 7, Name = "TextBlock3", OrderInParentCatalog = 7, ParentCatalogId = 100, Text = "Text3" } }; Mock <ICatalogDataAccess> catalogDataAccessMock = new Mock <ICatalogDataAccess>(MockBehavior.Strict); catalogDataAccessMock.Setup(m => m.GetSubcatalogsByParentCatalogId(It.IsAny <int>())) .Returns <int>(id => allCatalogs.FindAll(catalog => catalog.ParentCatalogId == id)); catalogDataAccessMock.Setup(m => m.Add(It.IsAny <Catalog>())) .Callback((Catalog catalog) => allCatalogs.Add(catalog)); Mock <ITextBlockDataAccess> textDataAccessMock = new Mock <ITextBlockDataAccess>(); textDataAccessMock.Setup(m => m.GetTextBlocksByParentCatalogId(It.IsAny <int>())) .Returns <int>(id => allTextBlocks.FindAll(textBlock => textBlock.ParentCatalogId == id)); Mock <IPictureDataAccess> pictureDataAccessMock = new Mock <IPictureDataAccess>(); Mock <IPictureResizer> pictureResuzerMock = new Mock <IPictureResizer>(); // Act DirectorySystemFacade directorySystemFacade = new DirectorySystemFacade(textDataAccessMock.Object, catalogDataAccessMock.Object, pictureDataAccessMock.Object, pictureResuzerMock.Object); List <Catalog> expectedCatalogs = new List <Catalog> { new Catalog { Id = 1, Name = "Catalog1", OrderInParentCatalog = 1, ParentCatalogId = 0 }, new Catalog { Id = 3, Name = "Catalog2", OrderInParentCatalog = 4, ParentCatalogId = 100 }, new Catalog { Id = 4, Name = "Catalog3", OrderInParentCatalog = 2, ParentCatalogId = 100 }, new Catalog { Id = 100, Name = "Catalog100", OrderInParentCatalog = 2, ParentCatalogId = 0 }, new Catalog { Id = 101, Name = "Catalog", OrderInParentCatalog = 8, ParentCatalogId = 100 } }; Catalog catalogForAdding = new Catalog { Id = 101, Name = "Catalog", OrderInParentCatalog = 8, ParentCatalogId = 100 }; directorySystemFacade.Add(catalogForAdding); // Assert Assert.Equal(expectedCatalogs.Count, allCatalogs.Count); for (int i = 0; i < expectedCatalogs.Count; i++) { AssertCatalog(expectedCatalogs[i], allCatalogs[i]); } catalogDataAccessMock.VerifyAll(); textDataAccessMock.VerifyAll(); }