a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
// 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;
|
|
}
|
|
}
|
|
}
|