public void SirenField_Equality_MissingAttributes_ShouldNotBeEqual()
        {
            ISirenField field = TestHelpers.GetField();
            ISirenField other = new SirenField(
                name: "foo"
                );

            TestHelpers.BidirectionalEquality(field, other, false);
        }
        public void SirenField_Serialized_DoesNotIncludeOptionalParametersIfNull()
        {
            ISirenField sirenField = new SirenField(name: "foo");

            string      serialized = JsonConvert.SerializeObject(sirenField);
            ISirenField field      = JsonConvert.DeserializeObject <SirenField>(serialized);

            Assert.AreEqual("foo", field.Name);
            Assert.IsEmpty(field.Class);
            Assert.IsNull(field.Type);
            Assert.IsNull(field.Value);
            Assert.IsNull(field.Title);
        }
        public void SirenField_Serialize_ExcludesClassIfEmpty()
        {
            ISirenField field = new SirenField(
                name: "foo",
                @class: new [] { "bar" }
                );
            string serialized = JsonConvert.SerializeObject(field);

            Assert.GreaterOrEqual(serialized.IndexOf("class", StringComparison.Ordinal), 0);

            field      = new SirenField(name: "foo");
            serialized = JsonConvert.SerializeObject(field);
            Assert.AreEqual(-1, serialized.IndexOf("class", StringComparison.Ordinal));
        }
        public void SirenField_DeserializesCorrectly()
        {
            ISirenField sirenField = new SirenField(
                name: "foo",
                @class: new[] { "bar" },
                type: "number",
                value: 1,
                title: "Some field");

            string      serialized = JsonConvert.SerializeObject(sirenField);
            ISirenField field      = JsonConvert.DeserializeObject <SirenField>(serialized);

            Assert.AreEqual("foo", field.Name);
            Assert.Contains("bar", field.Class);
            Assert.AreEqual("number", field.Type);
            Assert.AreEqual(1, int.Parse(field.Value.ToString()));
            Assert.AreEqual("Some field", field.Title);
        }