public void TestGetByDocumentFailsOnMissingHeader()
        {
            Mock <IHeaderRepository>   mockHeaderRepository   = new Mock <IHeaderRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            IHeaderManagementService   headerLogic            = new HeaderManagementService
            {
                HeaderRepository   = mockHeaderRepository.Object,
                DocumentRepository = mockDocumentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Header   fakeHeader   = GetFakeHeaderForDocument(fakeDocument);


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

            Header result = headerLogic.GetByDocument(fakeDocument.Id);

            mockDocumentRepository.VerifyAll();
            mockHeaderRepository.VerifyAll();
        }
        public void TestDeleteHeaderWorksOnExistingHeader()
        {
            Mock <IHeaderRepository>     mockHeaderRepository     = new Mock <IHeaderRepository>();
            Mock <IDocumentRepository>   mockDocumentRepository   = new Mock <IDocumentRepository>();
            Mock <IContentRepository>    mockContentRepository    = new Mock <IContentRepository>();
            Mock <IStyleClassRepository> mockStyleClassRepository = new Mock <IStyleClassRepository>();
            IHeaderManagementService     headerLogic = new HeaderManagementService
            {
                HeaderRepository     = mockHeaderRepository.Object,
                DocumentRepository   = mockDocumentRepository.Object,
                ContentRepository    = mockContentRepository.Object,
                StyleClassRepository = mockStyleClassRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Header   fakeHeader   = GetFakeHeaderForDocument(fakeDocument);

            mockHeaderRepository
            .Setup(wl => wl.Exists(fakeHeader.Id))
            .Returns(true);
            mockHeaderRepository
            .Setup(wl => wl.Delete(fakeHeader.Id));

            headerLogic.Delete(fakeHeader.Id);
            mockHeaderRepository.VerifyAll();
        }
        public void TestAddHeaderFailsOnExistingDocumentAndHeader()
        {
            Mock <IHeaderRepository>   mockHeaderRepository   = new Mock <IHeaderRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            Mock <IContentRepository>  mockContentRepository  = new Mock <IContentRepository>();
            IHeaderManagementService   headerLogic            = new HeaderManagementService
            {
                HeaderRepository   = mockHeaderRepository.Object,
                DocumentRepository = mockDocumentRepository.Object,
                ContentRepository  = mockContentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Header   fakeHeader   = GetFakeHeaderForDocument(fakeDocument);


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

            Header result = headerLogic.Add(fakeDocument.Id, fakeHeader);

            mockDocumentRepository.VerifyAll();
            mockHeaderRepository.VerifyAll();
        }
        public void TestGetByDocumentReturnsHeaderOnExistingHeaderAndDocument()
        {
            Mock <IHeaderRepository>   mockHeaderRepository   = new Mock <IHeaderRepository>();
            Mock <IDocumentRepository> mockDocumentRepository = new Mock <IDocumentRepository>();
            IHeaderManagementService   headerLogic            = new HeaderManagementService
            {
                HeaderRepository   = mockHeaderRepository.Object,
                DocumentRepository = mockDocumentRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Header   fakeHeader   = GetFakeHeaderForDocument(fakeDocument);


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

            Header result = headerLogic.GetByDocument(fakeDocument.Id);

            mockDocumentRepository.VerifyAll();
            mockHeaderRepository.VerifyAll();
            Assert.IsNotNull(result);
            Assert.AreEqual(result, fakeHeader);
        }
        public void TestAddHeaderWorksOnMissingHeaderAndExistingDocument()
        {
            Mock <IHeaderRepository>     mockHeaderRepository     = new Mock <IHeaderRepository>();
            Mock <IDocumentRepository>   mockDocumentRepository   = new Mock <IDocumentRepository>();
            Mock <IContentRepository>    mockContentRepository    = new Mock <IContentRepository>();
            Mock <IStyleClassRepository> mockStyleClassRepository = new Mock <IStyleClassRepository>();
            IHeaderManagementService     headerLogic = new HeaderManagementService
            {
                HeaderRepository     = mockHeaderRepository.Object,
                DocumentRepository   = mockDocumentRepository.Object,
                ContentRepository    = mockContentRepository.Object,
                StyleClassRepository = mockStyleClassRepository.Object
            };
            Document fakeDocument = GetFakeDocument();
            Header   fakeHeader   = GetFakeHeaderForDocument(fakeDocument);


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

            Header result = headerLogic.Add(fakeDocument.Id, fakeHeader);

            mockDocumentRepository.VerifyAll();
            mockHeaderRepository.VerifyAll();
            Assert.IsNotNull(result);
            Assert.AreEqual(result, fakeHeader);
        }