private string SponsorToJson(Sponsor x) =>
 $"{{" +
 $"'id':{x.Id}," +
 $"'sponsoredEvent':{EventJsonConverterTests.EventToJson( x.SponsoredEvent )}," +
 $"'sponsoringCompany':{CompanyJsonConverterTests.CompanyToJson( x.SponsoringCompany )}," +
 $"'sponsorshipLevel':{SponsorLevelJsonConverterTests.SponsorLevelToJson( x.SponsorshipLevel )}" +
 $"}}";
 private Sponsor CreateSponsor(int i) =>
 new Sponsor(
     id: i,
     sponsoredevent: EventJsonConverterTests.CreateEvent(i),
     sponsoringcompany: CompanyJsonConverterTests.CreateCompany(i),
     sponsorshiplevel: SponsorLevelJsonConverterTests.CreateSponsorLevel(i)
     );
        public void JsonDeserializer_ItemsOutOfOrder()
        {
            Sponsor expected = CreateSponsor(2015);
            string  json     = $"{{" +
                               $"'sponsoringCompany':{CompanyJsonConverterTests.CompanyToJson( expected.SponsoringCompany )}," +
                               $"'sponsoredEvent':{EventJsonConverterTests.EventToJson( expected.SponsoredEvent )}," +
                               $"'id':{expected.Id}," +
                               $"'sponsorshipLevel':{SponsorLevelJsonConverterTests.SponsorLevelToJson( expected.SponsorshipLevel )}" +
                               $"}}";

            Sponsor actual = JsonConvert.DeserializeObject <Sponsor>(json);

            Assert.Equal(expected, actual);
        }
        public void JsonSerializerFormattingIndented()
        {
            IEnumerable <Sponsor> data = Enumerable.Range(2015, 6).Select(i => CreateSponsor(i));
            string expected            = "[\r\n" + string.Join(",\r\n", data.Select(x => $@"  {{
    ""id"": {x.Id},
    ""sponsoredEvent"": {{
      ""id"": {x.SponsoredEvent.Id},
      ""name"": ""{x.SponsoredEvent.Name}"",
      ""startdate"": ""{EventJsonConverterTests.DateTimeToJsonString( x.SponsoredEvent.StartDate )}"",
      ""enddate"": ""{EventJsonConverterTests.DateTimeToJsonString( x.SponsoredEvent.EndDate )}""
    }},
    ""sponsoringCompany"": {{
      ""id"": {x.SponsoringCompany.Id},
      ""name"": ""{x.SponsoringCompany.Name}"",
      ""address"": ""{x.SponsoringCompany.Address}"",
      ""phone"": ""{x.SponsoringCompany.Phone}"",
      ""website"": ""{x.SponsoringCompany.Website}"",
      ""twitter"": ""{x.SponsoringCompany.Twitter}""
    }},
    ""sponsorshipLevel"": {{
      ""id"": {x.SponsorshipLevel.Id},
      ""displayorder"": {x.SponsorshipLevel.DisplayOrder},
      ""name"": ""{x.SponsorshipLevel.Name}"",
      ""cost"": {x.SponsorshipLevel.Cost},
      ""displaylink"": {x.SponsorshipLevel.DisplayLink.ToString().ToLower()},
      ""displayinemails"": {x.SponsorshipLevel.DisplayInEmails.ToString().ToLower()},
      ""displayinsidebar"": {x.SponsorshipLevel.DisplayInSidebar.ToString().ToLower()},
      ""tickets"": {x.SponsorshipLevel.Tickets},
      ""discount"": {x.SponsorshipLevel.Discount},
      ""timeonscreen"": {x.SponsorshipLevel.TimeOnScreen},
      ""preconemail"": {x.SponsorshipLevel.PreConEmail.ToString().ToLower()},
      ""midconemail"": {x.SponsorshipLevel.MidConEmail.ToString().ToLower()},
      ""postconemail"": {x.SponsorshipLevel.PostConEmail.ToString().ToLower()}
    }}
  }}")) + "\r\n]";

            string actual = JsonConvert.SerializeObject(data, Formatting.Indented);

            Assert.Equal(expected, actual);
        }