public void Process_ChangeParentPage() { // Arrange var dataStorePage = Models.CreateDocumentationPage(id: 75326, parentPageId: 12943, order: 5); var clientPage = Models.CreateDocumentationPage(id: dataStorePage.Id, parentPageId: 543, order: dataStorePage.Order); var serializer = new JavaScriptSerializer(); var requestData = serializer.Serialize(clientPage); var documentationPageRepository = Mocks.Create<IDocumentationPageRepository>(); documentationPageRepository.Setup(r => r.Read(clientPage.Id)).Returns(dataStorePage); var processor = new SaveDocumentationPageRequestProcessor(documentationPageRepository.Object); // Act processor.Process(requestData); // Assert // InvalidOperationException should be thrown. }
public void Process_ExistingPage() { // Arrange var dataStorePage = Models.CreateDocumentationPage(id: 84926); var clientPage = new DocumentationPage { Id = dataStorePage.Id, // Same id as data store page because this is an existing page. Title = dataStorePage.Title, Content = dataStorePage.Content, Order = dataStorePage.Order, ParentPageId = dataStorePage.ParentPageId, }; var documentationPageRepository = Mocks.Create<IDocumentationPageRepository>(); documentationPageRepository.Setup(r => r.Read(clientPage.Id)).Returns(dataStorePage); documentationPageRepository.Setup(r => r.Update(It.Is<DocumentationPage>(p => p.Id == clientPage.Id))); var serializer = new JavaScriptSerializer(); var requestData = serializer.Serialize(clientPage); var processor = new SaveDocumentationPageRequestProcessor(documentationPageRepository.Object); // Act var result = processor.Process(requestData); // Assert Assert.That(result, Is.Not.Null, "A response state instance should be returned."); Assert.That(result.ContentType, Is.EqualTo(ContentTypes.Json), "The response content should contain JSON."); var resultPage = serializer.Deserialize<DocumentationPage>(result.Content); Assert.That(resultPage.Id, Is.EqualTo(clientPage.Id), "The page id should not change."); Mocks.VerifyAll(); }
public void Process_NewPage() { // Arrange var parentPage = Models.CreateDocumentationPage(id: 74362); var lowerSiblingPage = Models.CreateDocumentationPage(id: 63254, parentPageId: parentPage.Id, order: 0); var higherSiblingPage = Models.CreateDocumentationPage(id: 1342, parentPageId: parentPage.Id, order: 1); var highestSiblingPage = Models.CreateDocumentationPage(id: 8724, parentPageId: parentPage.Id, order: 2); var siblingPages = new List<DocumentationPage> { lowerSiblingPage, higherSiblingPage, highestSiblingPage }; var clientPage = Models.CreateDocumentationPage(parentPageId: parentPage.Id, order: 1); var documentationPageRepository = Mocks.Create<IDocumentationPageRepository>(); documentationPageRepository.Setup(r => r.ReadByParentId(clientPage.ParentPageId)).Returns(siblingPages); documentationPageRepository.Setup(r => r.Update(It.Is<DocumentationPage>(p => p.Id == higherSiblingPage.Id && p.Order == 2))); documentationPageRepository.Setup(r => r.Update(It.Is<DocumentationPage>(p => p.Id == highestSiblingPage.Id && p.Order == 3))); documentationPageRepository.Setup(r => r.Create(It.Is<DocumentationPage>(p => p.Title == clientPage.Title))); var serializer = new JavaScriptSerializer(); var requestData = serializer.Serialize(clientPage); var processor = new SaveDocumentationPageRequestProcessor(documentationPageRepository.Object); // Act var result = processor.Process(requestData); // Assert Mocks.VerifyAll(); Assert.That(result, Is.Not.Null, "Response state instance expected."); Assert.That(result.ContentType, Is.EqualTo(ContentTypes.Json), "JSON result expected."); Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Valid response code expected."); var resultPage = serializer.Deserialize<DocumentationPage>(result.Content); Assert.That(resultPage.Title, Is.EqualTo(clientPage.Title), "The title of the result page should match the client page."); }