public void WhenEmptyFieldsParameterPassed_ShouldSerializeEverythingFromThePassedObject(string emptyFieldsParameter)
        {
            //Arange
            IJsonFieldsSerializer cut = new JsonFieldsSerializer();

            var serializableObject = new SerializableDummyObjectWithSimpleTypes();

            serializableObject.Items.Add(new DummyObjectWithSimpleTypes()
            {
                FirstProperty  = "first property value",
                SecondProperty = "second property value"
            });

            //Act
            string serializedObjectJson = cut.Serialize(serializableObject, emptyFieldsParameter);

            //Assert
            SerializableDummyObjectWithSimpleTypes dummySerializableObjectFromJson =
                JsonConvert.DeserializeObject <SerializableDummyObjectWithSimpleTypes>(serializedObjectJson);

            Assert.AreEqual(serializableObject.Items.Count, dummySerializableObjectFromJson.Items.Count);
            Assert.AreEqual(serializableObject.Items[0], dummySerializableObjectFromJson.Items[0]);
            Assert.AreEqual("first property value", dummySerializableObjectFromJson.Items[0].FirstProperty);
            Assert.AreEqual("second property value", dummySerializableObjectFromJson.Items[0].SecondProperty);
        }
        public void WhenValidFieldsParameterPassed_ShouldNotSerializeOtherFieldsJson()
        {
            var dummySerializableObject = new SerializableDummyObjectWithSimpleTypes();

            dummySerializableObject.Items.Add(new DummyObjectWithSimpleTypes()
            {
                FirstProperty  = "first property value",
                SecondProperty = "second property value",
            });

            IJsonFieldsSerializer cut = new JsonFieldsSerializer();

            // Act
            string json = cut.Serialize(dummySerializableObject, "first_property");

            // Assert
            SerializableDummyObjectWithSimpleTypes dummySerializableObjectFromJson =
                JsonConvert.DeserializeObject <SerializableDummyObjectWithSimpleTypes>(json);

            Assert.AreEqual(1, dummySerializableObjectFromJson.Items.Count);
            Assert.IsNull(dummySerializableObjectFromJson.Items[0].SecondProperty);
        }
        public void WhenNoValidFieldsInTheFieldsParameterPassed_ShouldReturnEmptyCollectionJson()
        {
            var dummySerializableObject = new SerializableDummyObjectWithSimpleTypes();

            dummySerializableObject.Items.Add(new DummyObjectWithSimpleTypes()
            {
                FirstProperty  = "first property value",
                SecondProperty = "second property value",
            });


            // Arange
            IJsonFieldsSerializer cut = new JsonFieldsSerializer();

            // Act
            string json = cut.Serialize(dummySerializableObject, "not valid fields");

            // Assert
            SerializableDummyObjectWithSimpleTypes dummySerializableObjectFromJson =
                JsonConvert.DeserializeObject <SerializableDummyObjectWithSimpleTypes>(json);

            Assert.AreEqual(0, dummySerializableObjectFromJson.Items.Count);
        }