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();
		}
Ejemplo n.º 4
0
        /// <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));
        }