public void WriteQueryable() { // Arrange //var models = UserModel.Users.AsQueryable(); var models = new UserModel[] { new UserModel { Id = 1, Name = "Joe" } }.AsQueryable(); var formatter = new JsonMediaTypeFormatter(); var converter = new ObjectConverter<UserModel>(); converter.Mapper = (u) => new { Key = u.Id, UserName = u.Name }; JsonContractFormatter.AddConverter(typeof(UserModel), converter); string actual = string.Empty; // Act //formatter.ExecuteFormat(models.GetType(), models, null); //formatter.OnWrite(models.GetType(), models, null); using (StringWriter writer = new StringWriter()) { formatter.WriteTo(models.GetType(), models, writer); actual = writer.ToString(); } // Remember to Add 'Items' on naked Queryables Assert.AreEqual("{\"$id\":\"1\",\"Items\":[{\"$id\":\"2\",\"Id\":1,\"Name\":\"Joe\",\"Email\":null}]}", actual); }
// PUT /convention/5 public UserModel Put(int id, UserModel user) { return user; }
// POST /convention public UserModel Post(UserModel user) { // echo entity with Id populated and can create location. user.Id = UserModel.Users.Length; // Simulate Id gen. return user; }