public void Should_serialize_playlist_as_expected() { var expectedXmlOutput = File.ReadAllText("StubRequests/Playlist.xml").Replace("\r\n", "").Replace("\t", ""); var playlist = new PlaylistRequest { Name = "Test Playlist", Visibility = PlaylistVisibilityType.Private, Tracks = new List<Product> { new Product { ArtistAppearsAs = "MGMT", ArtistId = "123", AudioUrl = "test.mp3", ReleaseArtistAppearsAs = "MGMT", ReleaseArtistId = "123", ReleaseId = "123", ReleaseTitle = "Oracula Spectacular", ReleaseVersion = "extended", Source = "local", TrackId = "123", TrackTitle = "Weekend Wars", TrackVersion = "deluxe", ImageUrl = "http://my.image.com/image.jpg" } } }; _fluentApi.WithPayload(playlist); var xml = new XmlPayloadSerializer().Serialize(playlist); Assert.That(xml, Is.EqualTo(expectedXmlOutput)); }
public void Should_serialize_track_list_as_expected() { var expectedXmlOutput = File.ReadAllText("StubRequests/PlaylistsTracks.xml").Replace("\r\n", "").Replace("\t",""); var products = new List<Product> { new Product { ArtistAppearsAs = "MGMT", ArtistId = "123", AudioUrl = "test.mp3", ReleaseArtistAppearsAs = "MGMT", ReleaseArtistId = "123", ReleaseId = "123", ReleaseTitle = "Oracula Spectacular", ReleaseVersion = "extended", Source = "local", TrackId = "123", TrackTitle = "Weekend Wars", TrackVersion = "deluxe", ImageUrl = "http://my.image.com/imageA.jpg" }, new Product { ArtistAppearsAs = "MGMT", ArtistId = "123", AudioUrl = "test.mp3", ReleaseArtistAppearsAs = "MGMT", ReleaseArtistId = "123", ReleaseId = "123", ReleaseTitle = "Oracula Spectacular", ReleaseVersion = "extended", Source = "local", TrackId = "124", TrackTitle = "Kids", TrackVersion = "deluxe", ImageUrl = "http://my.image.com/imageB.jpg" } }; var playlistTracksRequest = new PlaylistTracksRequest { Tracks = products }; var xml = new XmlPayloadSerializer().Serialize(playlistTracksRequest); Assert.That(xml, Is.EqualTo(expectedXmlOutput)); }
public void SetUp() { _payloadSerializer = new XmlPayloadSerializer(); }
/// <summary> /// Returns the payload to be used for this test case and the specified test configuration. /// </summary> /// <param name="testConfiguration">The test configuration to use.</param> /// <returns>The payload to use for testing.</returns> public static byte[] GetPayload( ReaderTestConfiguration testConfiguration, List <Func <ReaderTestConfiguration, Func <ODataPayloadElement, ODataPayloadElement> > > payloadNormalizers, PayloadReaderTestDescriptor.Settings settings, ODataPayloadElement payloadElement) { IPayloadSerializer payloadSerializer = null; // Apply all payload element transforms before serialization. IPayloadTransform <ODataPayloadElement> payloadElementTransform = settings.PayloadTransformFactory.GetTransform <ODataPayloadElement>(); ODataPayloadElement transformedODataElement = null; if (payloadElementTransform.TryTransform(payloadElement, out transformedODataElement)) { payloadElement = transformedODataElement; } ODataPayloadElement payloadElementToSerialize = payloadElement; // Apply all normalizers/fixups before serialization if (payloadNormalizers != null) { ODataPayloadElement payloadElementCopy = null; foreach (var getPayloadNormalizerFunc in payloadNormalizers) { var normalizer = getPayloadNormalizerFunc(testConfiguration); if (normalizer != null) { if (payloadElementCopy == null) { payloadElementCopy = payloadElementToSerialize.DeepCopy(); } payloadElementCopy = normalizer(payloadElementCopy); } } payloadElementToSerialize = payloadElementCopy ?? payloadElementToSerialize; } if (testConfiguration.Format == ODataFormat.Atom) { payloadSerializer = new XmlPayloadSerializer(settings.PayloadElementToXmlConverter); } else if (testConfiguration.Format == ODataFormat.Json) { // Create a copy of the payload element so that we can add annotations to it. payloadElementToSerialize = payloadElementToSerialize.DeepCopy(); // Annotate elements with version and response/request as appropriate PayloadFormatVersionAnnotatingVisitor.AnnotateJsonLight( payloadElementToSerialize, testConfiguration.Version.ToDataServiceProtocolVersion(), testConfiguration.IsRequest); payloadSerializer = new JsonPayloadSerializer(settings.PayloadElementToJsonLightConverter.ConvertToJsonLight); } else if (testConfiguration.Format == null) { if (payloadElementToSerialize.ElementType == ODataPayloadElementType.PrimitiveValue) { PrimitiveValue primitiveValue = (PrimitiveValue)payloadElementToSerialize; if (primitiveValue.ClrValue == null) { throw new NotSupportedException("Reading null values is not supported (since we don't support writing null values)."); } else if (primitiveValue.ClrValue.GetType() == typeof(byte[])) { payloadSerializer = settings.BinaryValuePayloadElementConverter; } else { payloadSerializer = settings.TextValuePayloadElementConverter; } } else if (payloadElementToSerialize.ElementType == ODataPayloadElementType.BatchRequestPayload || payloadElementToSerialize.ElementType == ODataPayloadElementType.BatchResponsePayload) { return(SerializeBatchPayload(payloadElementToSerialize, settings)); } else { throw new NotImplementedException("Default format not yet implemented for payload test descriptor and payload element type '" + payloadElementToSerialize.ElementType + "'."); } } else { throw new NotSupportedException("Unexpected format."); } // Default encoding is UTF8 return(payloadSerializer.SerializeToBinary(payloadElementToSerialize, null)); }