public void CloneResultsInClonedDocument() { // Given InitialMetadata initialMetadata = new InitialMetadata(); 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 ClonedMetadataDoesNotContainNewValues() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = "a"}; Metadata metadata = new Metadata(initialMetadata); // When Metadata clone = metadata.Clone(new Dictionary<string, object> {{"B", "b"}}); // Then Assert.IsFalse(metadata.ContainsKey("B")); }
public void ContainsPreviousValues() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = "a"}; Metadata metadata = new Metadata(initialMetadata); // When Metadata clone = metadata.Clone(new Dictionary<string, object> {{"B", "b"}}); // Then Assert.AreEqual("a", clone["A"]); }
public void IdIsTheSameAfterClone() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Document document = new Document(initialMetadata); // When IDocument cloned = new Document(document, new MetadataItems()); // Then Assert.AreEqual(document.Id, cloned.Id); }
public void IdIsNotTheSameForDifferentDocuments() { // Given InitialMetadata initialMetadata = new InitialMetadata(); // When Document a = new Document(initialMetadata); Document b = new Document(initialMetadata); // Then Assert.AreNotEqual(a.Id, b.Id); }
public void ThrowsWhenCloneReturnsNullDocument() { // Given InitialMetadata initialMetadata = new InitialMetadata(); DocumentFactory documentFactory = new DocumentFactory(initialMetadata); CustomDocumentFactory<TestDocument> customDocumentFactory = new CustomDocumentFactory<TestDocument>(documentFactory); IExecutionContext context = Substitute.For<IExecutionContext>(); CloneReturnsNullDocument document = new CloneReturnsNullDocument(); // When, Then Assert.Throws<Exception>(() => customDocumentFactory.GetDocument(context, document, new Dictionary<string, object>())); }
public void CanCloneWithNewValues() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When metadata = metadata.Clone(new[] { new KeyValuePair<string, object>("A", "a") }); // Then Assert.AreEqual("a", metadata["A"]); }
public void StreamIsDisposedCorrectlyAfterClone() { // Given InitialMetadata initialMetadata = new InitialMetadata(); DisposeCheckStream stream = new DisposeCheckStream(); Document originalDoc = new Document(initialMetadata, "Test", stream, null, Array.Empty<KeyValuePair<string, object>>(), true); Document clonedDoc = new Document(originalDoc, Array.Empty<KeyValuePair<string, object>>()); // When originalDoc.Dispose(); bool originalDocDisposedStream = stream.Disposed; clonedDoc.Dispose(); bool clonedDocDisposedStream = stream.Disposed; // Then Assert.AreEqual(false, originalDocDisposedStream); Assert.AreEqual(true, clonedDocDisposedStream); }
public void GetsInitialDocumentWithInitialMetadata() { // Given InitialMetadata initialMetadata = new InitialMetadata(); 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); }
public void ReturnsListForSingleDocument() { // Given IDocument a = Substitute.For<IDocument>(); InitialMetadata initialMetadata = new InitialMetadata { ["A"] = a }; Metadata metadata = new Metadata(initialMetadata); // When IReadOnlyList<IDocument> result = metadata.Documents("A"); // Then Assert.IsNotNull(result); CollectionAssert.AreEqual(new[] { a }, result); }
public void ReturnsTrueForValidValue() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = "a"}; Metadata metadata = new Metadata(initialMetadata); // When object value; bool contains = metadata.TryGetValue("A", out value); // Then Assert.IsTrue(contains); Assert.AreEqual("a", value); }
public void ReturnsCorrectResultWithMetadataValue() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = new SimpleMetadataValue { Value = "a" } }; Metadata metadata = new Metadata(initialMetadata); // When object value; bool contains = metadata.TryGetValue("A", out value); // Then Assert.IsTrue(contains); Assert.AreEqual("a", value); }
public void ConvertStringToIntArray() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When metadata = metadata.Clone(new[] { new KeyValuePair<string, object>("A", "1") }); IMetadata<int[]> metadataAs = metadata.MetadataAs<int[]>(); // Then Assert.AreEqual("1", metadata["A"]); CollectionAssert.AreEqual(new int[] { 1 }, (IEnumerable)metadataAs["A"]); }
public void ConvertStringToInt() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When metadata = metadata.Clone(new[] { new KeyValuePair<string, object>("A", "1") }); IMetadata<int> metadataAs = metadata.MetadataAs<int>(); // Then Assert.AreEqual("1", metadata["A"]); Assert.AreEqual(1, metadataAs["A"]); }
public void MetadataValueCalledForEachRequest() { // Given SimpleMetadataValue metadataValue = new SimpleMetadataValue { Value = "a" }; InitialMetadata initialMetadata = new InitialMetadata { ["A"] = metadataValue }; Metadata metadata = new Metadata(initialMetadata); // When object value = metadata.Get("A"); value = metadata.Get("A"); value = metadata.Get("A"); // Then Assert.AreEqual("a", value); Assert.AreEqual(3, metadataValue.Calls); }
public void ReturnsTrueForValidValue() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = "a"}; Metadata metadata = new Metadata(initialMetadata); // When bool contains = metadata.ContainsKey("A"); // Then Assert.IsTrue(contains); }
public void ReturnsNullWhenKeyNotFound() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When IReadOnlyList<IDocument> result = metadata.Documents("A"); // Then Assert.IsNull(result); }
public void ReturnsCorrectResult(string value, bool pretty, string link) { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = new SimpleMetadataValue {Value = value} }; Metadata metadata = new Metadata(initialMetadata); // When object result = metadata.Link("A", pretty: pretty); // Then Assert.AreEqual(link, result); }
public void NullKeyThrowsKeyNotFoundException() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When TestDelegate test = () => { object value = metadata[null]; }; // Then Assert.Throws<ArgumentNullException>(test); }
public void MissingKeyThrowsKeyNotFoundException() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When TestDelegate test = () => { object value = metadata["A"]; }; // Then Assert.Throws<KeyNotFoundException>(test); }
public void ReturnsCorrectResultWithDerivedMetadataValue() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = new DerivedMetadataValue { Key = "X" }, ["X"] = "x" }; Metadata metadata = new Metadata(initialMetadata); // When object value = metadata.Get("A"); // Then Assert.AreEqual("x", value); }
public void EnumeratingMetadataValuesReturnsCorrectResults() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = new SimpleMetadataValue {Value = "a"}, ["B"] = new SimpleMetadataValue {Value = "b"}, ["C"] = new SimpleMetadataValue {Value = "c"} }; Metadata metadata = new Metadata(initialMetadata); // When object[] values = metadata.Select(x => x.Value).ToArray(); // Then CollectionAssert.AreEquivalent(new[] {"a", "b", "c"}, values); }
public void ReplacesValue() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = "a"}; Metadata metadata = new Metadata(initialMetadata); // When Metadata clone = metadata.Clone(new Dictionary<string, object> {{"A", "b"}}); // Then Assert.AreEqual("a", metadata["A"]); Assert.AreEqual("b", clone["A"]); }
public void ReturnsCorrectResultForList() { // Given InitialMetadata initialMetadata = new InitialMetadata {["A"] = new List<int> {1, 2, 3}}; Metadata metadata = new Metadata(initialMetadata); // When IReadOnlyList<int> result = metadata.List<int>("A"); // Then Assert.IsNotNull(result); CollectionAssert.AreEqual(result, new[] {1, 2, 3}); }
public void ReturnsEmptyListForSingleInt() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = 1 }; Metadata metadata = new Metadata(initialMetadata); // When IReadOnlyList<IDocument> result = metadata.Documents("A"); // Then Assert.IsNotNull(result); CollectionAssert.IsEmpty(result); }
public void ConvertIntArrayToStringEnumerable() { // Given InitialMetadata initialMetadata = new InitialMetadata(); Metadata metadata = new Metadata(initialMetadata); // When metadata = metadata.Clone(new[] { new KeyValuePair<string, object>("A", new int[] { 1, 2, 3 }) }); IMetadata<IEnumerable<string>> metadataAs = metadata.MetadataAs<IEnumerable<string>>(); // Then CollectionAssert.AreEqual(new int[] { 1, 2, 3 }, (IEnumerable)metadata["A"]); CollectionAssert.AreEqual(new string[] { "1", "2", "3" }, metadataAs["A"]); }
public void ReturnsCorrectResultWithMetadataValue() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = new SimpleMetadataValue { Value = "a" } }; Metadata metadata = new Metadata(initialMetadata); // When object value = metadata["A"]; // Then Assert.AreEqual("a", value); }
public void GetWithMetadataValueReturnsCorrectResult() { // Given InitialMetadata initialMetadata = new InitialMetadata { ["A"] = "a" }; Metadata metadata = new Metadata(initialMetadata); // When object value = metadata.Get("A"); // Then Assert.AreEqual("a", value); }