public void ObjectExtensions_ToJson_PrivateFields_Should_Be_Serialized()
        {
            var obj = new JsonSerialized("public", "private");

            var result = obj.ToJson(true);

            result.Should().Contain("_privateData");
        }
        public void ObjectExtensions_ToJson_SpecificContracts_Should_Be_Used()
        {
            var contract = new Mock <IJsonContractDefinition>();

            contract.Setup(m => m.SetSerialisationPropertyContractDefinition(It.IsAny <JsonProperty>(), It.IsAny <MemberInfo>()))
            .Callback((JsonProperty prop, MemberInfo m) =>
            {
                if (m.Name == "PublicData")
                {
                    prop.ShouldSerialize = _ => false;
                }
            });

            var obj = new JsonSerialized("public", "private");

            var result = obj.ToJson(contract.Object);

            result.Should().NotBeNullOrEmpty();
            result.Should().NotContain("PublicData");
        }