public void TestGetByDocumentFailsOnMissingFooter()
        {
            Mock <IFooterRepository>   mockFooterRepository   = new Mock <IFooterRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            IFooterManagementService   footerLogic            = new FooterManagementService
            {
                FooterRepository   = mockFooterRepository.Object,
                DocumentRepository = mockDocumentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Footer   fakeFooter   = GetFakeFooterForDocument(fakeDocument);


            mockDocumentRepository
            .Setup(wl => wl.Exists(fakeDocument.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.ExistsForDocument(fakeDocument.Id))
            .Returns(false);

            Footer result = footerLogic.GetByDocument(fakeDocument.Id);

            mockDocumentRepository.VerifyAll();
            mockFooterRepository.VerifyAll();
        }
        public void TestDeleteFooterWorksOnExistingFooter()
        {
            Mock <IFooterRepository>     mockFooterRepository     = new Mock <IFooterRepository>();
            Mock <IDocumentRepository>   mockDocumentRepository   = new Mock <IDocumentRepository>();
            Mock <IContentRepository>    mockContentRepository    = new Mock <IContentRepository>();
            Mock <IStyleClassRepository> mockStyleClassRepository = new Mock <IStyleClassRepository>();
            IFooterManagementService     footerLogic = new FooterManagementService
            {
                FooterRepository     = mockFooterRepository.Object,
                DocumentRepository   = mockDocumentRepository.Object,
                ContentRepository    = mockContentRepository.Object,
                StyleClassRepository = mockStyleClassRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Footer   fakeFooter   = GetFakeFooterForDocument(fakeDocument);

            mockFooterRepository
            .Setup(wl => wl.Exists(fakeFooter.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.Delete(fakeFooter.Id));

            footerLogic.Delete(fakeFooter.Id);
            mockFooterRepository.VerifyAll();
        }
        public void TestAddFooterFailsOnExistingDocumentAndFooter()
        {
            Mock <IFooterRepository>   mockFooterRepository   = new Mock <IFooterRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            Mock <IContentRepository>  mockContentRepository  = new Mock <IContentRepository>();
            IFooterManagementService   footerLogic            = new FooterManagementService
            {
                FooterRepository   = mockFooterRepository.Object,
                DocumentRepository = mockDocumentRepository.Object,
                ContentRepository  = mockContentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Footer   fakeFooter   = GetFakeFooterForDocument(fakeDocument);


            mockDocumentRepository
            .Setup(wl => wl.Exists(fakeDocument.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.ExistsForDocument(fakeDocument.Id))
            .Returns(true);

            Footer result = footerLogic.Add(fakeDocument.Id, fakeFooter);

            mockDocumentRepository.VerifyAll();
            mockFooterRepository.VerifyAll();
        }
        public void TestGetByDocumentReturnsFooterOnExistingFooterAndDocument()
        {
            Mock <IFooterRepository>   mockFooterRepository   = new Mock <IFooterRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            IFooterManagementService   footerLogic            = new FooterManagementService
            {
                FooterRepository   = mockFooterRepository.Object,
                DocumentRepository = mockDocumentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Footer   fakeFooter   = GetFakeFooterForDocument(fakeDocument);


            mockDocumentRepository
            .Setup(wl => wl.Exists(fakeDocument.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.ExistsForDocument(fakeDocument.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.GetByDocument(fakeDocument.Id))
            .Returns(fakeFooter);

            Footer result = footerLogic.GetByDocument(fakeDocument.Id);

            mockDocumentRepository.VerifyAll();
            mockFooterRepository.VerifyAll();
            Assert.IsNotNull(result);
            Assert.AreEqual(result, fakeFooter);
        }
        public void TestAddFooterWorksOnMissingFooterAndExistingDocument()
        {
            Mock <IFooterRepository>     mockFooterRepository     = new Mock <IFooterRepository>();
            Mock <IDocumentRepository>   mockDocumentRepository   = new Mock <IDocumentRepository>();
            Mock <IContentRepository>    mockContentRepository    = new Mock <IContentRepository>();
            Mock <IStyleClassRepository> mockStyleClassRepository = new Mock <IStyleClassRepository>();
            IFooterManagementService     footerLogic = new FooterManagementService
            {
                FooterRepository     = mockFooterRepository.Object,
                DocumentRepository   = mockDocumentRepository.Object,
                ContentRepository    = mockContentRepository.Object,
                StyleClassRepository = mockStyleClassRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Footer   fakeFooter   = GetFakeFooterForDocument(fakeDocument);


            mockDocumentRepository
            .Setup(wl => wl.Exists(fakeDocument.Id))
            .Returns(true);
            mockFooterRepository
            .Setup(wl => wl.ExistsForDocument(fakeDocument.Id))
            .Returns(false);
            mockFooterRepository
            .Setup(wl => wl.Add(fakeFooter));
            mockDocumentRepository
            .Setup(wl => wl.GetById(fakeDocument.Id))
            .Returns(fakeDocument);

            Footer result = footerLogic.Add(fakeDocument.Id, fakeFooter);

            mockDocumentRepository.VerifyAll();
            mockFooterRepository.VerifyAll();
            Assert.IsNotNull(result);
            Assert.AreEqual(result, fakeFooter);
        }