public void Test_Vehicle_JsonWithVanProperties_WithConverterAndWithInvalidDiscriminator()
        {
            JsonDiscriminatorConverter converter = new JsonDiscriminatorConverter(typeof(Vehicle));

            string json = "{\"type\": \"VanCool\", \"color\": \"red\", \"dateOfRegistration\": \"2016-04-09\", \"carryingCapacity\": 7.35}";

            var vehicle = JsonConvert.DeserializeObject <Vehicle>(json, converter);

            vehicle.Should().BeOfType(typeof(Vehicle));
            //vehicle.Should().NotBeOfType(typeof(Vehicle));
        }
        public void Test_Vehicle_JsonWithVanProperties_WithConverterAndNoDiscriminator()
        {
            JsonDiscriminatorConverter converter = new JsonDiscriminatorConverter(typeof(Vehicle));

            string json = "{\"color\": \"red\", \"dateOfRegistration\": \"2016-04-09\", \"carryingCapacity\": 7.35}";

            var vehicle = JsonConvert.DeserializeObject <Vehicle>(json, converter);

            vehicle.Should().BeOfType(typeof(Vehicle));
            vehicle.Color.Should().BeEquivalentTo("red");
            vehicle.DateOfRegistration.Should().BeEquivalentTo("2016-04-09");
        }
        public void Test_Vehicle_JsonWithCarPropertiesAndCarType_WithConverterAndWithDiscriminator()
        {
            JsonDiscriminatorConverter converter = new JsonDiscriminatorConverter(typeof(Vehicle));

            string json = "{\"type\": \"Car\", \"color\": \"red\", \"dateOfRegistration\": \"2016-04-09\", \"ndoors\": 5}";

            var vehicle = JsonConvert.DeserializeObject <Vehicle>(json, converter);

            vehicle.Should().BeOfType(typeof(Car));
            vehicle.Color.Should().BeEquivalentTo("red");
            vehicle.DateOfRegistration.Should().BeEquivalentTo("2016-04-09");
            ((Car)vehicle).NumberOfDoors.Should().Be(5);
        }
        public void Test_VehicleNested_JsonWithCarTypeAndProperties_JsonWithTurbeEngineType_NoConverterAndWithDiscriminator()
        {
            JsonDiscriminatorConverter converter = new JsonDiscriminatorConverter(typeof(Vehicle));

            string json = "{\"type\": \"Car\", \"color\": \"red\", \"dateOfRegistration\": \"2016-04-09\", \"ndoors\": 5, \"engine\": {\"type\": \"Turbo\", \"power\": 100, \"acceleration\": 3.6}}";

            var vehicle = JsonConvert.DeserializeObject <Vehicle>(json, converter);

            vehicle.Should().BeOfType(typeof(Car));
            vehicle.Color.Should().BeEquivalentTo("red");
            vehicle.DateOfRegistration.Should().BeEquivalentTo("2016-04-09");
            ((Car)vehicle).NumberOfDoors.Should().Be(5);
            ((Car)vehicle).CarEngine.Should().NotBeNull();
            ((Car)vehicle).CarEngine.Should().BeOfType(typeof(Engine));
        }
        public void Constructor_AddOneTypeScanningTheCurrentTestAssembly()
        {
            _sut = new JsonDiscriminatorConverter(Assembly.GetExecutingAssembly());

            _sut.Types.Should().HaveCount(2);
        }
        public void Constructor_AddTwoEqualTypesAndOnlyOneInList()
        {
            _sut = new JsonDiscriminatorConverter(typeof(Vehicle), typeof(Vehicle));

            _sut.Types.Should().HaveCount(1);
        }
        public void Constructor_AddTwoDifferentTypes()
        {
            _sut = new JsonDiscriminatorConverter(typeof(Vehicle), typeof(Engine));

            _sut.Types.Should().HaveCount(2);
        }
        public void Constructor_AddOneType()
        {
            _sut = new JsonDiscriminatorConverter(typeof(Vehicle));

            _sut.Types.Should().HaveCount(1);
        }
 public void InitSut()
 {
     _sut = new JsonDiscriminatorConverter();
 }