public async Task Serialize_null_toOne_linkage()
        {
            var linkageObject = new Mock <IResourceLinkage>(MockBehavior.Strict);

            linkageObject.Setup(l => l.IsToMany).Returns(false);
            linkageObject.Setup(l => l.Identifiers).Returns(new IResourceIdentifier[] { });

            var formatter = new ResourceLinkageFormatter();

            await AssertSerializeOutput(formatter, linkageObject.Object, "Json/Fixtures/ResourceLinkageFormatter/Serialize_null_toOne_linkage.json");
        }
        public async Task Serialize_present_toMany_linkage()
        {
            var linkageObject = new Mock <IResourceLinkage>(MockBehavior.Strict);

            linkageObject.Setup(l => l.IsToMany).Returns(true);
            linkageObject.Setup(l => l.Identifiers)
            .Returns(new IResourceIdentifier[] { new ResourceIdentifier("countries", "11000"), new ResourceIdentifier("cities", "4100") });

            var formatter = new ResourceLinkageFormatter();

            await AssertSerializeOutput(formatter, linkageObject.Object, "Json/Fixtures/ResourceLinkageFormatter/Serialize_present_toMany_linkage.json");
        }
        public void Deserialize_fails_on_integer()
        {
            // Arrange

            // Act
            var formatter = new ResourceLinkageFormatter();

            Func <Task> action = () => GetDeserializedOutput <IResourceLinkageFormatter, IResourceLinkage>(formatter,
                                                                                                           "Json/Fixtures/ResourceLinkageFormatter/Deserialize_fails_on_integer.json");

            // Assert
            action.ShouldThrow <DeserializationException>().WithMessage("Expected an array, object, or null for linkage, but got Integer");
        }
        public void Deserialize_null_to_one_linkage()
        {
            // Arrange

            // Act
            var formatter = new ResourceLinkageFormatter();
            var linkage   =
                GetDeserializedOutput <IResourceLinkageFormatter, IResourceLinkage>(formatter,
                                                                                    "Json/Fixtures/ResourceLinkageFormatter/Deserialize_null_to_one_linkage.json").Result;

            // Assert
            linkage.IsToMany.Should().BeFalse();
            linkage.Identifiers.Length.Should().Be(0);
        }
        public void Deserialize_to_many_linkage()
        {
            // Arrange

            // Act
            var formatter = new ResourceLinkageFormatter();
            var linkage   =
                GetDeserializedOutput <IResourceLinkageFormatter, IResourceLinkage>(formatter,
                                                                                    "Json/Fixtures/ResourceLinkageFormatter/Deserialize_to_many_linkage.json").Result;

            // Assert
            linkage.IsToMany.Should().BeTrue();
            linkage.Identifiers[0].Type.Should().Be("posts");
            linkage.Identifiers[0].Id.Should().Be("12");
            linkage.Identifiers[1].Type.Should().Be("comments");
            linkage.Identifiers[1].Id.Should().Be("9510");
        }