Example #1
0
        public void DirectorySystemFacade_UpdateOrderOfCatalog_MovingDownCatalog_CorrectlyUpdatedCatalog()
        {
            // Arrange

            List <Catalog> allCatalogs = new List <Catalog>
            {
                new Catalog {
                    Id = 1, Name = "Catalog1", OrderInParentCatalog = 1, ParentCatalogId = 4
                },
                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 = 6, 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.UpdateOrder(It.IsAny <Catalog>()))
            .Callback((Catalog catalog) => allCatalogs.Find(x => x.Id == catalog.Id).OrderInParentCatalog = catalog.OrderInParentCatalog);

            Mock <ITextBlockDataAccess> textDataAccessMock = new Mock <ITextBlockDataAccess>();

            textDataAccessMock.Setup(m => m.GetTextBlocksByParentCatalogId(It.IsAny <int>()))
            .Returns <int>(id => allTextBlocks.FindAll(textBlock => textBlock.ParentCatalogId == id));
            textDataAccessMock.Setup(m => m.UpdateOrder(It.IsAny <TextBlock>()))
            .Callback((TextBlock textBlock) => allTextBlocks.Find(x => x.Id == textBlock.Id).OrderInParentCatalog = textBlock.OrderInParentCatalog);

            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 = 4
                },
                new Catalog {
                    Id = 3, Name = "Catalog2", OrderInParentCatalog = 6, ParentCatalogId = 100
                },
                new Catalog {
                    Id = 4, Name = "Catalog3", OrderInParentCatalog = 2, ParentCatalogId = 100
                },
                new Catalog {
                    Id = 100, Name = "Catalog100", OrderInParentCatalog = 2, ParentCatalogId = 0
                }
            };
            List <TextBlock> exprectedTextBlocks = 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 = 4, ParentCatalogId = 100, Text = "Text3"
                }
            };
            Catalog catalogForReordering = new Catalog
            {
                Id = 3,
                ParentCatalogId      = 100,
                OrderInParentCatalog = 4
            };

            directorySystemFacade.UpdateOrder(catalogForReordering, OrderAction.MoveDown);

            // Assert

            Assert.Equal(exprectedTextBlocks.Count, allTextBlocks.Count);
            for (int i = 0; i < allTextBlocks.Count; i++)
            {
                AssertTextBlock(exprectedTextBlocks[i], allTextBlocks[i]);
            }
            Assert.Equal(expectedCatalogs.Count, allCatalogs.Count);
            for (int i = 0; i < allTextBlocks.Count; i++)
            {
                AssertCatalog(expectedCatalogs[i], allCatalogs[i]);
            }
            catalogDataAccessMock.VerifyAll();
            textDataAccessMock.VerifyAll();
        }
Example #2
0
        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();
        }