public void CloneResultsInClonedDocument() { // Given MetadataDictionary initialMetadata = new MetadataDictionary(); initialMetadata.Add("Foo", "Bar"); DocumentFactory documentFactory = new DocumentFactory(initialMetadata); CustomDocumentFactory<TestDocument> customDocumentFactory = new CustomDocumentFactory<TestDocument>(documentFactory); IExecutionContext context = Substitute.For<IExecutionContext>(); CustomDocument sourceDocument = (CustomDocument)customDocumentFactory.GetDocument(context); // When IDocument resultDocument = customDocumentFactory.GetDocument(context, sourceDocument, new Dictionary<string, object> { { "Baz", "Bat" } }); // Then CollectionAssert.AreEquivalent(new Dictionary<string, object> { { "Foo", "Bar" } }, sourceDocument); CollectionAssert.AreEquivalent(new Dictionary<string, object> { { "Foo", "Bar" }, { "Baz", "Bat" } }, resultDocument); }
public void ThrowsWhenCloneReturnsSameDocument() { // Given MetadataDictionary initialMetadata = new MetadataDictionary(); DocumentFactory documentFactory = new DocumentFactory(initialMetadata); CustomDocumentFactory<TestDocument> customDocumentFactory = new CustomDocumentFactory<TestDocument>(documentFactory); IExecutionContext context = Substitute.For<IExecutionContext>(); CloneReturnsSameDocument document = new CloneReturnsSameDocument(); // When, Then Assert.Throws<Exception>(() => customDocumentFactory.GetDocument(context, document, new Dictionary<string, object>())); }
public void GetsInitialDocumentWithInitialMetadata() { // Given MetadataDictionary initialMetadata = new MetadataDictionary(); initialMetadata.Add("Foo", "Bar"); DocumentFactory documentFactory = new DocumentFactory(initialMetadata); CustomDocumentFactory<TestDocument> customDocumentFactory = new CustomDocumentFactory<TestDocument>(documentFactory); IExecutionContext context = Substitute.For<IExecutionContext>(); // When IDocument resultDocument = customDocumentFactory.GetDocument(context); // Then Assert.IsInstanceOf<TestDocument>(resultDocument); CollectionAssert.AreEqual(new Dictionary<string, object> { { "Foo", "Bar" } }, resultDocument); }