1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System;
using System.ComponentModel.DataAnnotations;
using Microsoft.Web.Http.Data.Helpers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Xunit;
namespace Microsoft.Web.Http.Data.Test
{
public class MetadataExtensionsTests
{
/// <summary>
/// Serialize metadata for a test controller exposing types with various
/// metadata annotations.
/// </summary>
[Fact]
public void TestMetadataSerialization()
{
JToken metadata = GenerateMetadata(typeof(TestController));
string s = metadata.ToString(Formatting.None);
Assert.True(s.Contains("{\"range\":[-10.0,20.5]}"));
}
private static JToken GenerateMetadata(Type dataControllerType)
{
DataControllerDescription desc = DataControllerDescriptionTest.GetDataControllerDescription(dataControllerType);
var metadata = DataControllerMetadataGenerator.GetMetadata(desc);
JObject metadataValue = new JObject();
foreach (var m in metadata)
{
metadataValue.Add(m.EncodedTypeName, m.ToJToken());
}
return metadataValue;
}
}
public class TestClass
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
[Range(-10.0, 20.5)]
public double Number { get; set; }
[StringLength(5)]
public string Address { get; set; }
}
public class TestController : DataController
{
public TestClass GetTestClass(int id)
{
return null;
}
}
}
|