You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2015/03/23 10:58:36 UTC
[06/22] olingo-odata4-js git commit: [OLINGO-442] Cleanup bevor
release
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/4621d41c/JSLib/tests/odata-json-light-tests.js
----------------------------------------------------------------------
diff --git a/JSLib/tests/odata-json-light-tests.js b/JSLib/tests/odata-json-light-tests.js
deleted file mode 100644
index 5e55d93..0000000
--- a/JSLib/tests/odata-json-light-tests.js
+++ /dev/null
@@ -1,2479 +0,0 @@
-/// <reference path="../src/odata-net.js" />
-/// <reference path="../src/odata.js" />
-/// <reference path="../src/odata-json-light.js" />
-/// <reference path="../src/odata-json.js" />
-/// <reference path="../common/djstest.js" />
-
-// odata-json-light-tests.js
-
-(function (window, undefined) {
-
- // DATAJS INTERNAL START
-
- var mockHttpClient;
-
- module("Unit", {
- setup: function () {
- mockHttpClient = window.MockHttpClient.clear();
- }
- });
-
- var getSampleModel = function () {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "NS",
- "entityType": [{
- "name": "EntityType",
- "key": { "propertyRef": [{ "name": "Id"}] },
- "property": [
- { "name": "Id", "type": "Edm.String" },
- { "name": "P1", "type": "Edm.Int32" }
- ]
- }],
- entityContainer: [{
- name: "TestContainer",
- isDefaultEntityContainer: "true",
- entitySet: [{ "name": "EntityTypes", "entityType": "NS.EntityType"}]
- }]
- }]
- }
- };
- return testModel;
- };
-
- var getSampleModelWithTwoKeys = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].key = { "propertyRef": [{ "name": "Id" }, { "name": "P1"}] };
- return testModel;
- };
-
- var getSampleModelWithOneConcurrencyProperty = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].property[0].concurrencyMode = "Fixed";
- return testModel;
- };
-
- var getSampleModelWithOneBinaryConcurrencyProperty = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].property[1].concurrencyMode = "Fixed";
- testModel.dataServices.schema[0].entityType[0].property[1].type = "Edm.Binary";
- return testModel;
- };
-
- var getSampleModelWithMultipleConcurrencyProperties = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].property[0].concurrencyMode = "Fixed";
- testModel.dataServices.schema[0].entityType[0].property[1].concurrencyMode = "Fixed";
- return testModel;
- };
-
- var getSampleModelWithDateTimeConcurrencyProperties = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].property[1] = { "name": "P1", "type": "Edm.DateTime", concurrencyMode: "Fixed" };
- return testModel;
- };
-
- var getSampleModelWithDecimalProperty = function () {
- var testModel = getSampleModel();
- testModel.dataServices.schema[0].entityType[0].property[1] = { "name": "P1", "type": "Edm.Decimal"};
- return testModel;
- };
-
- var getSampleModelWithNavPropertiesAndInheritedTypes = function () {
- return {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "maxDataServiceVersion": "4.0",
- "schema": [
- {
- "namespace": "ODataDemo",
- "entityType": [
- {
- "name": "Product",
- "key": {
- "propertyRef": [
- {
- "name": "ID"
- }
- ]
- },
- "property": [
- {
- "name": "ID",
- "nullable": "false",
- "type": "Edm.Int32"
- }
- ],
- "navigationProperty": [
- {
- "name": "Category",
- "toRole": "Category_Products",
- "fromRole": "Product_Category",
- "relationship": "ODataDemo.Product_Category_Category_Products"
- }]
- },
- {
- "name": "FeaturedProduct",
- "baseType": "ODataDemo.Product",
- "navigationProperty": [
- {
- "name": "Advertisement",
- "toRole": "Advertisement_FeaturedProduct",
- "fromRole": "FeaturedProduct_Advertisement",
- "relationship": "ODataDemo.FeaturedProduct_Advertisement_Advertisement_FeaturedProduct"
- }
- ]
- },
- {
- "name": "Advertisement",
- "key": {
- "propertyRef": [
- {
- "name": "ID"
- }
- ]
- },
- "property": [
- {
- "name": "ID",
- "nullable": "false",
- "type": "Edm.Guid"
- }
- ],
- "navigationProperty": [
- {
- "name": "FeaturedProduct",
- "toRole": "FeaturedProduct_Advertisement",
- "fromRole": "Advertisement_FeaturedProduct",
- "relationship": "ODataDemo.FeaturedProduct_Advertisement_Advertisement_FeaturedProduct"
- }
- ]
- },
- {
- "name": "Category",
- "key": {
- "propertyRef": [
- {
- "name": "ID"
- }
- ]
- },
- "property": [
- {
- "name": "ID",
- "nullable": "false",
- "type": "Edm.Int32"
- }
- ],
- "navigationProperty": [
- {
- "name": "Products",
- "toRole": "Product_Category",
- "fromRole": "Category_Products",
- "relationship": "ODataDemo.Product_Category_Category_Products"
- }
- ]
- }
- ],
- "association": [
- {
- "name": "Product_Category_Category_Products",
- "end": [
- {
- "type": "ODataDemo.Category",
- "multiplicity": "0..1",
- "role": "Category_Products"
- },
- {
- "type": "ODataDemo.Product",
- "multiplicity": "*",
- "role": "Product_Category"
- }
- ]
- },
- {
- "name": "FeaturedProduct_Advertisement_Advertisement_FeaturedProduct",
- "end": [
- {
- "type": "ODataDemo.Advertisement",
- "multiplicity": "0..1",
- "role": "Advertisement_FeaturedProduct"
- },
- {
- "type": "ODataDemo.FeaturedProduct",
- "multiplicity": "0..1",
- "role": "FeaturedProduct_Advertisement"
- }
- ]
- }
- ],
- "entityContainer": [
- {
- "name": "DemoService",
- "isDefaultEntityContainer": "true",
- "entitySet": [
- {
- "name": "Products",
- "entityType": "ODataDemo.Product"
- },
- {
- "name": "Advertisements",
- "entityType": "ODataDemo.Advertisement"
- },
- {
- "name": "Categories",
- "entityType": "ODataDemo.Category"
- }
- ],
- "associationSet": [
- {
- "name": "Products_Advertisement_Advertisements",
- "association": "ODataDemo.FeaturedProduct_Advertisement_Advertisement_FeaturedProduct",
- "end": [
- {
- "role": "FeaturedProduct_Advertisement",
- "entitySet": "Products"
- },
- {
- "role": "Advertisement_FeaturedProduct",
- "entitySet": "Advertisements"
- }
- ]
- },
- {
- "name": "Products_Category_Categories",
- "association": "ODataDemo.Product_Category_Category_Products",
- "end": [
- {
- "role": "Product_Category",
- "entitySet": "Products"
- },
- {
- "role": "Category_Products",
- "entitySet": "Categories"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- };
- };
-
- var failTest = function (err) {
- if (err && err.message) {
- djstest.fail(err.message);
- } else {
- djstest.fail("unexpected failure");
- }
- djstest.done();
- };
-
- var verifySerializedJsonLightData = function (actual, expected, message, requestUri) {
- mockHttpClient.addRequestVerifier("*", function (request) {
- djstest.assertAreEqualDeep(JSON.parse(request.body), expected, message);
- djstest.done();
- });
-
- odatajs.oData.request({
- requestUri: requestUri || "http://someUri",
- headers: { "Content-Type": "application/json" },
- method: "PUT",
- data: actual
- }, null, failTest, null, mockHttpClient);
- };
-
- var verifyReadJsonLightData = function (input, expected, message, model) {
- var response = { headers: { "Content-Type": "application/json;odata.metadata=full", DataServiceVersion: "4.0" }, body: JSON.stringify(input) };
-
- OData.jsonHandler.read(response, { metadata: model });
- djstest.assertAreEqualDeep(response.data, expected, message);
- };
-
- var verifyReadJsonLightWithMinimalMetadata = function (input, expected, message, model) {
- var response = { headers: { "Content-Type": "application/json;odata.metadata=minimal", DataServiceVersion: "4.0" }, body: JSON.stringify(input) };
-
- OData.jsonHandler.read(response, { metadata: model });
- djstest.assertAreEqualDeep(response.data, expected, message);
- };
-
-
- djstest.addTest(function jsonLightReadEmptySvcDocTest() {
- var input = {
- "odata.metadata": "http://someUri/ODataService.svc/OData/$metadata",
- "value": []
- };
-
- var expected = {
- workspaces: [
- {
- collections: []
- }
- ]
- };
-
- verifyReadJsonLightData(input, expected, "Json light links document was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadSvcDocTest() {
- var input = {
- "odata.metadata": "http://someUri/ODataService.svc/OData/$metadata",
- "value": [
- { "name": "Customers", "url": "Customers" },
- { "name": "Employees", "url": "http://someUri/ODataService.svc/OData/Employees" }
- ]
- };
-
- var expected = {
- workspaces: [
- {
- collections: [
- {
- title: "Customers",
- href: "http://someUri/ODataService.svc/OData/Customers"
- },
- {
- title: "Employees",
- href: "http://someUri/ODataService.svc/OData/Employees"
- }
- ]
- }
- ]
- };
-
- verifyReadJsonLightData(input, expected, "Json light links document was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEntryMetadataUriTest() {
- var tests = {
- "Qualified entity set": {
- input: { "odata.metadata": "http://someUri/$metadata#Ns.Container.EntitySet/@Element" },
- expected: { __metadata: { type: null} }
- },
- "Unqualified entity set": {
- input: { "odata.metadata": "http://someUri/$metadata#Ns.Container.EntitySet/@Element" },
- expected: { __metadata: { type: null} }
- },
- "Qualified entity set with type cast": {
- input: { "odata.metadata": "http://someUri/$metadata#Ns.Container.EntitySet/TypeCast/@Element" },
- expected: { __metadata: { type: "TypeCast"} }
- },
-
- "Unqualified entity set with type cast": {
- input: { "odata.metadata": "http://someUri/$metadata#EntitySet/TypeCast/@Element" },
- expected: { __metadata: { type: "TypeCast"} }
- }
- };
-
- for (name in tests) {
- var test = tests[name];
- verifyReadJsonLightData(test.input, test.expected, name + " - Json light entry metadata uri was read properly.");
- }
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEntryMetadataUriWithMetadataDocumentTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Test.Catalog",
- "entityContainer": [{
- "name": "TestCatalog",
- "isDefaultEntityContainer": "true",
- "entitySet": [
- { "name": "Titles", "entityType": "TestCatalog.Model.Title" }
- ]
- }, {
- "name": "GenreCatalog",
- "isDefaultEntityContainer": "false",
- "entitySet": [
- { "name": "Genres", "entityType": "TestCatalog.Model.Genre" }
- ]
- }]
- }]
- }
- };
-
- var tests = {
- "Qualified entity set": {
- input: { "odata.metadata": "http://someUri/$metadata#Test.Catalog.GenreCatalog.Genres/@Element" },
- expected: { __metadata: { type: "TestCatalog.Model.Genre"} }
- },
- "Unqualified entity set": {
- input: { "odata.metadata": "http://someUri/$metadata#Titles/@Element" },
- expected: { __metadata: { type: "TestCatalog.Model.Title"} }
- },
- "Qualified entity set with type cast": {
- input: { "odata.metadata": "http://someUri/$metadata#Test.Catalog.Titles/TestCatalog.Model.Songs/@Element" },
- expected: { __metadata: { type: "TestCatalog.Model.Songs"} }
- },
- "Unqualified entity set with type cast": {
- input: { "odata.metadata": "http://someUri/$metadata#Titles/TestCatalog.Model.Songs/@Element" },
- expected: { __metadata: { type: "TestCatalog.Model.Songs"} }
- },
- "Unqualified entity set in non default entity container": {
- input: { "odata.metadata": "http://someUri/$metadata#Generes/@Element" },
- expected: { __metadata: { type: null} }
- },
- "Unqualified entity set in non default entity container with type cast": {
- input: { "odata.metadata": "http://someUri/$metadata#Generes/TypeCast/@Element" },
- expected: { __metadata: { type: "TypeCast"} }
- }
- };
-
- for (name in tests) {
- var test = tests[name];
- verifyReadJsonLightData(test.input, test.expected, name + " - Json light entry metadata uri was read properly.", testModel);
- }
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadTypeInPayloadWinsOverModelTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "NS",
- "entityType": [{
- "name": "EntityType",
- "hasStream": "true",
- "key": { "propertyRef": [{ "name": "Id"}] },
- "property": [
- { "name": "Id", "type": "Edm.String" },
- { "name": "P1", "type": "Edm.String" },
- { "name": "P2", "type": "NS.ComplexType" },
- { "name": "P3", "type": "Edm.Int64" }
- ]
- }],
- "complexType": [{
- "name": "ComplexType",
- "property": [
- { "name": "C1", "type": "Edm.String" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/NS.EntityType/@Element",
- P1: "Hello",
- P2: {
- "odata.type": "Instance",
- C1: "World"
- },
- "P2@odata.type": "Property",
- P3: "500",
- "P3@odata.type": "Property",
- P4: {
- "odata.type": "NS.ComplexType",
- C1: "!!"
- }
- };
-
- var expected = {
- __metadata: {
- type: "NS.EntityType",
- properties: {
- P1: { type: "Edm.String" },
- P2: {
- type: "Instance",
- properties: {
- C1: { type: null }
- }
- },
- P3: { type: "Property" },
- P4: {
- type: "NS.ComplexType",
- properties: {
- C1: { type: "Edm.String" }
- }
- }
- }
- },
- P1: "Hello",
- P2: {
- __metadata: {
- type: "Instance"
- },
- C1: "World"
- },
- P3: "500",
- P4: {
- __metadata: {
- type: "NS.ComplexType"
- },
- C1: "!!"
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadObjectWithCollectionPropertyTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "NS",
- "entityType": [{
- "name": "EntityType",
- "property": [
- { "name": "p1", "type": "Collection(Edm.Int32)" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/NS.EntityType/@Element",
- p1: [1, 2, 3],
- p2: [
- { c1: 100, c2: 200 },
- { c1: 400, c2: 500, "odata.type": "NS.OtherType" }
- ],
- "p2@odata.type": "Collection(NS.ComplexType)",
- p3: [5, 6, 7]
- };
-
- var expected = {
- __metadata: {
- type: "NS.EntityType",
- properties: {
- p1: { type: "Collection(Edm.Int32)" },
- p2: {
- type: "Collection(NS.ComplexType)",
- elements: [
- {
- type: "NS.ComplexType",
- properties: {
- c1: { type: null },
- c2: { type: null }
- }
- },
- {
- type: "NS.OtherType",
- properties: {
- c1: { type: null },
- c2: { type: null }
- }
- }
- ]
- },
- p3: { type: null }
- }
- },
- p1: {
- __metadata: { type: "Collection(Edm.Int32)" },
- results: [1, 2, 3]
- },
- p2: {
- __metadata: { type: "Collection(NS.ComplexType)" },
- results: [
- {
- __metadata: {
- type: "NS.ComplexType"
- },
- c1: 100,
- c2: 200
- },
- {
- __metadata: {
- type: "NS.OtherType"
- },
- c1: 400,
- c2: 500
- }
- ]
- },
- p3: {
- __metadata: { type: null },
- results: [5, 6, 7]
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with collection porperties was read properly", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEntryODataAnnotationsTest() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#NS.Container.Set/TypeCast/@Element",
- "odata.id": "Customers(1)",
- "odata.etag": "etag-value",
- "odata.readLink": "read/Customers(1)",
- "odata.editLink": "Customers(1)",
- "odata.mediaReadLink": "Customers(1)/Image",
- "odata.mediaEditLink": "Customers(1)/$value",
- "odata.mediaETag": "stream-etag-value",
- "odata.mediaContentType": "image/jpg"
- };
-
- var expected = {
- __metadata: {
- id: "Customers(1)",
- type: "TypeCast",
- etag: "etag-value",
- self: "http://someUri/read/Customers(1)",
- edit: "http://someUri/Customers(1)",
- uri: "http://someUri/Customers(1)",
- media_src: "http://someUri/Customers(1)/Image",
- edit_media: "http://someUri/Customers(1)/$value",
- media_etag: "stream-etag-value",
- content_type: "image/jpg"
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light entry OData annotations were read properly");
- djstest.done();
- });
-
-
- djstest.addTest(function jsonLightReadObjectWithComplexPropertyTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Ns",
- "entityType": [{
- "name": "EntityType",
- "property": [
- { "name": "p1", "type": "Ns.ComplexType" }
- ]
- }],
- "complexType": [{
- "name": "ComplexType",
- "property": [
- { "name": "c1", "type": "Edm.Int16" },
- { "name": "c2", "type": "Edm.Int32" },
- { "name": "c3", "type": "Ns.ComplexType" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/Ns.EntityType/@Element",
- p1: {
- c1: 100,
- c2: 200,
- c3: {
- c1: 300,
- c2: 400,
- c3: {
- c1: 500,
- c2: 600,
- c3: null
- }
- }
- },
- p2: {
- "odata.type": "Ns.ComplexType2",
- c4: 800,
- "c4@odata.type": "Edm.Single",
- c5: 900,
- c6: {
- c1: 1000,
- c2: 2000,
- c3: {
- c1: 1100,
- "c1@odata.type": "Edm.Double",
- c2: 1200,
- c3: null
- }
- },
- "c6@odata.type": "Ns.ComplexType"
- },
- p3: {},
- "p3@odata.type": "Ns.ComplexType3"
- };
-
- var expected = {
- __metadata: {
- type: "Ns.EntityType",
- properties: {
- p1: {
- type: "Ns.ComplexType",
- properties: {
- c1: { type: "Edm.Int16" },
- c2: { type: "Edm.Int32" },
- c3: {
- type: "Ns.ComplexType",
- properties: {
- c1: { type: "Edm.Int16" },
- c2: { type: "Edm.Int32" },
- c3: {
- type: "Ns.ComplexType",
- properties: {
- c1: { type: "Edm.Int16" },
- c2: { type: "Edm.Int32" },
- c3: { type: "Ns.ComplexType" }
- }
- }
- }
- }
- }
- },
- p2: {
- type: "Ns.ComplexType2",
- properties: {
- c4: { type: "Edm.Single" },
- c5: { type: null },
- c6: {
- type: "Ns.ComplexType",
- properties: {
- c1: { type: "Edm.Int16" },
- c2: { type: "Edm.Int32" },
- c3: {
- type: "Ns.ComplexType",
- properties: {
- c1: { type: "Edm.Double" },
- c2: { type: "Edm.Int32" },
- c3: { type: "Ns.ComplexType" }
- }
- }
- }
- }
- }
- },
- p3: { type: "Ns.ComplexType3" }
- }
- },
- p1: {
- __metadata: { type: "Ns.ComplexType" },
- c1: 100,
- c2: 200,
- c3: {
- __metadata: { type: "Ns.ComplexType" },
- c1: 300,
- c2: 400,
- c3: {
- __metadata: { type: "Ns.ComplexType" },
- c1: 500,
- c2: 600,
- c3: null
- }
- }
- },
- p2: {
- __metadata: { type: "Ns.ComplexType2" },
- c4: 800,
- c5: 900,
- c6: {
- __metadata: { type: "Ns.ComplexType" },
- c1: 1000,
- c2: 2000,
- c3: {
- __metadata: { type: "Ns.ComplexType" },
- c1: 1100,
- c2: 1200,
- c3: null
- }
- }
- },
- p3: { __metadata: { type: "Ns.ComplexType3"} }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with complex type properties was read properly", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadObjectWithNamedStreamProperty() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#NS.Container.Set/TypeCast/@Element",
- "p1@odata.mediaReadLink": "Customers(1)/namedStream",
- "p1@odata.mediaEditLink": "Customers(1)/namedStream/$value",
- "p1@odata.mediaETag": "voice-etag-value",
- "p1@odata.mediaContentType": "audio/basic"
- };
-
- var expected = {
- __metadata: {
- type: "TypeCast",
- properties: {
- p1: { type: null }
- }
- },
- p1: {
- __mediaresource: {
- media_src: "http://someUri/Customers(1)/namedStream",
- edit_media: "http://someUri/Customers(1)/namedStream/$value",
- media_etag: "voice-etag-value",
- content_type: "audio/basic"
- }
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with named stream properties was read properly");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEntryWithDeferredNavigationPropertyTests() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#NS.Container.Set/TypeCast/@Element",
- "p1@odata.navigationLinkUrl": "entitySet(1)/deferred",
- "p1@odata.associationLinkUrl": "entitySet(1)/$links/deferred"
- };
-
- var expected = {
- __metadata: {
- type: "TypeCast",
- properties: {
- p1: {
- type: null,
- associationLinkUrl: "http://someUri/entitySet(1)/$links/deferred"
- }
- }
- },
- p1: {
- __deferred: {
- uri: "http://someUri/entitySet(1)/deferred"
- }
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with deferred navigation properties was read properly");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEntryWithInlinedNavigationPropertiesTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Ns",
- "entityType": [{
- "name": "EntityType",
- "navigationProperty": [
- { "name": "p1", "relationship": "Ns.Rel1", "toRole": "p1s" },
- { "name": "p2", "relationship": "Ns.Rel2", "toRole": "p2s" }
- ]
- }],
- "association": [{
- "name": "Rel1",
- "end": [
- { "type": "Ns.EntityType1", "role": "p1s" },
- { "type": "Ns.EntityType", "role": "otherRole" }
- ]
- },
- {
- "name": "Rel2",
- "end": [
- { "type": "Ns.EntityType", "role": "otherRole" },
- { "type": "Ns.EntityType2", "role": "p2s" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/Ns.EntityType/@Element",
- p1: [
- { e1: 100, e2: 200 },
- { e1: 110, e2: 220 }
- ],
- "p1@odata.count": 50,
- "p1@odata.nextLink": "nextToken",
- p2: {
- e3: 300
- },
- p3: [
- { e4: 400, e5: 500 },
- { e4: 440, e5: 550 }
- ],
- "p3@odata.navigationLinkUrl": "http://someUri/entitySet(1)/p3",
- "p3@odata.associationLinkUrl": "http://someUri/entitySet(1)/$links/p3",
- p4: {
- e6: 600
- },
- "p4@odata.navigationLinkUrl": "http://someUri/entitySet(1)/p4",
- "p4@odata.associationLinkUrl": "http://someUri/entitySet(1)/$links/p4",
- p5: [
- {
- "odata.id": 12345,
- e7: 700,
- e8: 800
- }
- ],
- p6: {
- "odata.id": 78910,
- e9: 900,
- "e9@odata.type": "Edm.Int32"
- }
- };
-
- var expected = {
- __metadata: {
- type: "Ns.EntityType",
- properties: {
- p1: {
- type: "Ns.EntityType1"
- },
- p2: {
- type: "Ns.EntityType2"
- },
- p3: {
- type: null,
- navigationLinkUrl: "http://someUri/entitySet(1)/p3",
- associationLinkUrl: "http://someUri/entitySet(1)/$links/p3"
- },
- p4: {
- type: null,
- navigationLinkUrl: "http://someUri/entitySet(1)/p4",
- associationLinkUrl: "http://someUri/entitySet(1)/$links/p4"
- },
- p5: {
- type: null
- },
- p6: {
- type: null
- }
- }
- },
- p1: {
- __count: 50,
- __next: "http://someUri/nextToken",
- results: [
- {
- __metadata: {
- type: "Ns.EntityType1",
- properties: {
- e1: { type: null },
- e2: { type: null }
- }
- },
- e1: 100,
- e2: 200
- },
- {
- __metadata: {
- type: "Ns.EntityType1",
- properties: {
- e1: { type: null },
- e2: { type: null }
- }
- },
- e1: 110,
- e2: 220
- }
- ]
- },
- p2: {
- __metadata: {
- type: "Ns.EntityType2",
- properties: {
- e3: { type: null }
- }
- },
- e3: 300
- },
- p3: {
- results: [
- {
- __metadata: {
- type: null,
- properties: {
- e4: { type: null },
- e5: { type: null }
- }
- },
- e4: 400,
- e5: 500
- },
- {
- __metadata: {
- type: null,
- properties: {
- e4: { type: null },
- e5: { type: null }
- }
- },
- e4: 440,
- e5: 550
- }
- ]
- },
- p4: {
- __metadata: {
- type: null,
- properties: {
- e6: { type: null }
- }
- },
- e6: 600
- },
- p5: {
- results: [
- {
- __metadata: {
- id: 12345,
- type: null,
- properties: {
- e7: { type: null },
- e8: { type: null }
- }
- },
- e7: 700,
- e8: 800
- }
- ]
- },
- p6: {
- __metadata: {
- id: 78910,
- type: null,
- properties: {
- e9: { type: "Edm.Int32" }
- }
- },
- e9: 900
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with inlined navigation properties was read properly", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadStringPropertiesTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Ns",
- "entityType": [{
- "name": "EntityType",
- "property": [
- { "name": "p1", "type": "Edm.DateTime" },
- { "name": "p2", "type": "Edm.DateTimeOffset" },
- { "name": "p3", "type": "Edm.Time" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/Ns.EntityType/@Element",
- p1: "2000-01-02T03:04:05",
- p2: "2000-01-02T03:04:05+01:00",
- p3: "P0Y0M05DT12H30M5S",
- p4: "hello world",
- p5: "2001-01-02T03:04:05",
- "p5@odata.type": "Edm.DateTime",
- p6: "2001-01-02T03:04:05+01:00",
- "p6@odata.type": "Edm.DateTimeOffset",
- p7: "P0Y0M05DT12H30M10S",
- "p7@odata.type": "Edm.Time"
- };
-
- var p2 = new Date("01/02/2000 02:04:05 GMT");
- p2.__edmType = "Edm.DateTimeOffset";
- p2.__offset = "+01:00";
-
- var p6 = new Date("01/02/2001 02:04:05 GMT");
- p2.__edmType = "Edm.DateTimeOffset";
- p2.__offset = "+01:00";
-
- var expected = {
- __metadata: {
- type: "Ns.EntityType",
- properties: {
- p1: { type: "Edm.DateTime" },
- p2: { type: "Edm.DateTimeOffset" },
- p3: { type: "Edm.Time" },
- p4: { type: null },
- p5: { type: "Edm.DateTime" },
- p6: { type: "Edm.DateTimeOffset" },
- p7: { type: "Edm.Time" }
- }
- },
- p1: new Date("01/02/2000 03:04:05 GMT"),
- p3: { ms: 477005000, __edmType: "Edm.Time" },
- p2: p2,
- p4: "hello world",
- p5: new Date("01/02/2001 03:04:05 GMT"),
- p6: p6,
- p7: { ms: 477010000, __edmType: "Edm.Time" }
- };
-
- verifyReadJsonLightData(input, expected, "Json light object with string properties was read properly", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadRecognizeDateLiteralsTest() {
- var input = {
- p1: "2000-01-02T03:04:05",
- p2: "2000-01-02T03:04:05+01:00"
- };
-
- var p2 = new Date("01/02/2000 02:04:05 GMT");
- p2.__edmType = "Edm.DateTimeOffset";
- p2.__offset = "+01:00";
-
- var expected = {
- __metadata: {
- properties: {
- p1: {
- type: null
- },
- p2: {
- type: null
- }
- },
- type: null
- },
- p1: new Date("01/02/2000 03:04:05 GMT"),
- p2: p2
- };
-
- OData.jsonHandler.recognizeDates = true;
- verifyReadJsonLightData(input, expected, "Json light datetime literals were recognized. ");
-
- OData.jsonHandler.recognizeDates = false;
-
- expected.p1 = input.p1;
- expected.p2 = input.p2;
-
- verifyReadJsonLightData(input, expected, "Json light datetime literals were ignored");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEmptyFeedTest() {
- var input = { "odata.metadata": "http://someUri#entitySet/Set", value: [] };
- var expected = { results: [] };
-
- verifyReadJsonLightData(input, expected, "Json light feed object was read properly");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadFeedTest() {
- var input = {
- "odata.metadata": "http://someUri#entitySet/Type",
- value: [
- { "odata.id": 12345 },
- { "odata.id": 56789 }
- ],
- "odata.count": 50,
- "odata.nextLink": "skipToken"
- };
-
- var expected = {
- __count: 50,
- __next: "http://someUri/skipToken",
- results: [
- {
- __metadata: {
- id: 12345,
- type: "Type"
- }
- },
- {
- __metadata: {
- id: 56789,
- type: "Type"
- }
- }
- ]
- };
-
- verifyReadJsonLightData(input, expected, "Json light feed object was read properly");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadFeedUsingMetadataTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Test.Catalog",
- "entityContainer": [{
- "name": "TestCatalog",
- "isDefaultEntityContainer": "true",
- "entitySet": [
- { "name": "Titles", "entityType": "TestCatalog.Model.Title" }
- ]
- }
- ]
- }
- ]
- }
- };
-
- var tests = {
- "Unqualified entity set": {
- input: { "odata.metadata": "http://someUri#Titles", value: [{}] },
- expected: { results: [{ __metadata: { type: "TestCatalog.Model.Title"}}] }
- },
- "Qualified entity set": {
- input: { "odata.metadata": "http://someUri#Test.Catalog.TestCatalog.Titles", value: [{}] },
- expected: { results: [{ __metadata: { type: "TestCatalog.Model.Title"}}] }
- },
- "Type casted entity set": {
- input: { "odata.metadata": "http://someUri#TestCatalog.Titles/TypeCast", value: [{}] },
- expected: { results: [{ __metadata: { type: "TypeCast"}}] }
- }
- };
-
- for (var name in tests) {
- var test = tests[name];
- verifyReadJsonLightData(test.input, test.expected, name + " - Json light feed was read properly.", testModel);
- }
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadInferFeedAsObjectTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Test.Catalog",
- "entityContainer": [{
- "name": "TestCatalog",
- "isDefaultEntityContainer": "true",
- "entitySet": [
- { "name": "Titles", "entityType": "TestCatalog.Model.Title" }
- ]
- }
- ]
- }
- ]
- }
- };
-
- var tests = {
- "Feed as object": {
- input: { "odata.metadata": "http://someUri#EntitySet", value: [] },
- expected: {
- __metadata: {
- type: "EntitySet",
- properties: {
- value: { type: null }
- }
- },
- value: { __metadata: { type: null }, results: [] }
- }
- },
- "Feed as feed using value": {
- input: { "odata.metadata": "http://someUri#EntiySet", value: [{ "odata.id": 12345}] },
- expected: { results: [{ __metadata: { type: null, id: 12345}}] }
- },
- "Feed as feed using metadata": {
- input: { "odata.metadata": "http://someUri#Titles", value: [] },
- expected: { results: [] }
- },
- "Collection of primitive": {
- input: { "odata.metadata": "http://someUri#Collection(Edm.Int32)", value: [] },
- expected: { __metadata: { type: "Collection(Edm.Int32)" }, results: [] }
- },
- "Collection of complex": {
- input: { "odata.metadata": "http://someUri#Collection(My.Type)", value: [] },
- expected: { __metadata: { type: "Collection(My.Type)" }, results: [] }
- }
- };
-
- for (var name in tests) {
- var test = tests[name];
- var response = {
- headers: {
- "Content-Type": "application/json;odata.metadata=full",
- DataServiceVersion: "4.0"
- },
- body: JSON.stringify(test.input)
- };
-
- OData.jsonHandler.read(response, { metadata: testModel });
- djstest.assertAreEqualDeep(response.data, test.expected, name + " - Json light object was read properly ");
- }
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadEmptyLinksDocumentTest() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/$links/NavProp",
- value: []
- };
-
- var expected = {
- results: []
- };
-
- verifyReadJsonLightData(input, expected, "Json light links document was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadLinksDocumentTest() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/$links/NavProp",
- value: [
- { url: "Products(1)" },
- { url: "http://someUri/Products(2)" }
- ]
- };
-
- var expected = {
- results: [
- { uri: "http://someUri/Products(1)" },
- { uri: "http://someUri/Products(2)" }
- ]
- };
-
- verifyReadJsonLightData(input, expected, "Json light links document was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadSingleLinkDocumentTest() {
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/$links/NavProp/@Element",
- url: "Products(1)"
- };
-
- var expected = {
- uri: "http://someUri/Products(1)"
- };
-
- verifyReadJsonLightData(input, expected, "Json light single link document was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadTopLevelPrimitiveProperty() {
- var input = {
- "odata.metadata": "http://someUri#Edm.GeometryPoint",
- value: {
- type: "Point",
- coordinates: [1.0, 2.0],
- crs: {
- type: name,
- properties: {
- name: "EPSG:4326"
- }
- }
- }
- };
-
- var expected = {
- __metadata: {
- type: "Edm.GeometryPoint"
- },
- value: {
- type: "Point",
- coordinates: [1.0, 2.0],
- crs: {
- type: name,
- properties: {
- name: "EPSG:4326"
- }
- }
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light top level primitive property was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadTopLevelComplexTypeTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Ns",
- "complexType": [{
- "name": "ComplexType",
- "property": [
- { "name": "value", "type": "Collection(Ns.ComplexType2)" }
- ]
- }]
- }]
- }
- };
-
- var input = {
- "odata.metadata": "http://someUri#Ns.ComplexType",
- value: [{
- p1: 100,
- p2: 200
- }]
- };
-
- var expected = {
- __metadata: {
- type: "Ns.ComplexType",
- properties: {
- value: {
- type: "Collection(Ns.ComplexType2)",
- elements: [
- {
- type: "Ns.ComplexType2",
- properties: {
- p1: { type: null },
- p2: { type: null }
- }
- }
- ]
- }
- }
- },
- value: {
- __metadata: { type: "Collection(Ns.ComplexType2)" },
- results: [
- {
- __metadata: { type: "Ns.ComplexType2" },
- p1: 100,
- p2: 200
- }
- ]
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light top level complex type property was read properly.", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadTopPrimitiveCollectionPropertyTest() {
- var input = {
- "odata.metadata": "http://someUri#Collection(Edm.GeometryPoint)",
- value: [{
- type: "Point",
- coordinates: [1.0, 2.0],
- crs: {
- type: "name",
- properties: {
- name: "EPSG:4326"
- }
- }
- }]
- };
-
- var expected = {
- __metadata: {
- type: "Collection(Edm.GeometryPoint)"
- },
- results: [{
- type: "Point",
- coordinates: [1.0, 2.0],
- crs: {
- type: "name",
- properties: {
- name: "EPSG:4326"
- }
- }
- }]
- };
-
- verifyReadJsonLightData(input, expected, "Json light top level primitive collection property was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadTopLevelComplexTypeCollectionTest() {
- var input = {
- "odata.metadata": "http://someUri#Collection(Ns.ComplexType2)",
- value: [{
- p1: 100,
- p2: 200,
- "p2@odata.type": "Edm.Int16"
- }]
- };
-
- var expected = {
- __metadata: {
- type: "Collection(Ns.ComplexType2)",
- elements: [
- {
- type: "Ns.ComplexType2",
- properties: {
- p1: { type: null },
- p2: { type: "Edm.Int16" }
- }
- }
- ]
- },
- results: [
- {
- __metadata: { type: "Ns.ComplexType2" },
- p1: 100,
- p2: 200
- }
- ]
- };
-
- verifyReadJsonLightData(input, expected, "Json light top level complex type collection property was read properly.");
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadFeedAdvertisedActionsTest() {
-
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Ns",
- "entityContainer": [{
- "name": "EntityContainer",
- "isDefaultEntityContainer": "true",
- "entitySet": [
- { "name": "EntitySet", "entityType": "Ns.EntityType" }
- ]
- }
- ]
- }
- ]
- }
- };
-
- input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet",
- "#action1": {
- target: "action1/item(0)",
- title: "Action1"
- },
- "#action2": {
- target: "action2/item(0)",
- title: "Action2"
- },
- value: []
- };
-
- expected = {
- __metadata: {
- actions: [
- {
- metadata: "http://someUri/action1",
- target: "http://someUri/action1/item(0)",
- title: "Action1"
- },
- {
- metadata: "http://someUri/action2",
- target: "http://someUri/action2/item(0)",
- title: "Action2"
- }
- ]
- },
- results: []
- };
-
- verifyReadJsonLightData(input, expected, "Json light feed with advertised actions was read properly.", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightReadAdvertisedActionsAndFunctionsTest() {
- var testModel = {
- "version": "1.0",
- "dataServices": {
- "dataServiceVersion": "4.0",
- "schema": [{
- "namespace": "Test.Catalog",
- "entityContainer": [{
- "name": "TestCatalog",
- "isDefaultEntityContainer": "true",
- "functionImport": [
- { "name": "function1", "isSideEffecting": "false" },
- { "name": "function2", "isSideEffecting": "false" },
- { "name": "action1", "isSideEffecting": "true" },
- { "name": "action2" }
- ]
- }, {
- "name": "OtherCatalog",
- "isDefaultEntityContainer": "false",
- "functionImport": [
- { "name": "function1", "isSideEffecting": "false" }
- ]
- }]
- }]
- }
- };
-
- input = {
- "odata.metadata": "http://someUri/$metadata#EntitySet/@Element",
- "#function2": [
- {
- target: "function2/item(0)",
- title: "Function2 overload1"
- },
- {
- target: "function2/item(0)",
- title: "Function2 overload2"
- }
- ],
- "#action1": {
- target: "action1/item(0)",
- title: "Action1"
- },
- "#action2": {
- target: "action2/item(0)",
- title: "Action2"
- },
- "#function1": {
- target: "function1/item(0)",
- title: "Function1"
- },
- "#Test.Catalog.OtherCatalog.function1": {
- target: "Test.Catalog.OtherCatalog.function1/item(0)",
- title: "Function1 in other catalog"
- },
- "#action3": [
- {
- target: "action3/item(0)",
- title: "Unkown action overload1"
- },
- {
- target: "http://otherUri/action3/item(0)",
- title: "Unkown action overload2"
- }
- ]
- };
-
- expected = {
- __metadata: {
- type: null,
- actions: [
- {
- metadata: "http://someUri/action1",
- target: "http://someUri/action1/item(0)",
- title: "Action1"
- },
- {
- metadata: "http://someUri/action2",
- target: "http://someUri/action2/item(0)",
- title: "Action2"
- },
- {
- metadata: "http://someUri/action3",
- target: "http://someUri/action3/item(0)",
- title: "Unkown action overload1"
- },
- {
- metadata: "http://someUri/action3",
- target: "http://otherUri/action3/item(0)",
- title: "Unkown action overload2"
- }
- ],
- functions: [
- {
- metadata: "http://someUri/function2",
- target: "http://someUri/function2/item(0)",
- title: "Function2 overload1"
- },
- {
- metadata: "http://someUri/function2",
- target: "http://someUri/function2/item(0)",
- title: "Function2 overload2"
- },
- {
- metadata: "http://someUri/function1",
- target: "http://someUri/function1/item(0)",
- title: "Function1"
- },
- {
- metadata: "http://someUri/Test.Catalog.OtherCatalog.function1",
- target: "http://someUri/Test.Catalog.OtherCatalog.function1/item(0)",
- title: "Function1 in other catalog"
- }
- ]
- }
- };
-
- verifyReadJsonLightData(input, expected, "Json light advertised actions and functions were read properly.", testModel);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightSerializeEntryMetadataTest() {
- var data = {
- __metadata: {
- metadata: "http://someUri/$metadata#NS.Container/Set/@Element",
- id: "http://someUri/Customers(1)",
- etag: "etag-value",
- self: "http://someUri/read/Customers(1)",
- edit: "http://someUri/read/Customers(1)",
- media_src: "http://someUri/Customers(1)/Image",
- edit_media: "http://someUri/Customers(1)/$value",
- media_etag: "stream-etag-value",
- content_type: "image/jpg"
- }
- };
-
- var expected = {
- "odata.etag": "etag-value",
- "odata.mediaReadLink": "http://someUri/Customers(1)/Image",
- "odata.mediaEditLink": "http://someUri/Customers(1)/$value",
- "odata.mediaETag": "stream-etag-value",
- "odata.mediaContentType": "image/jpg"
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry metadata was serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeCustomAnnotationsTest() {
- var data = {
- __metadata: {
- id: "id"
- },
- "odata.id": "id",
- "custom.annotation": "custom annotation value",
- "p1@ns1.primitive": "primitive",
- "p1@ns2.complex": { a1: 500 },
- "p1@ns3.ns4.value": 600,
- "p2@ns1.primitive": 400,
- "custom.annotation": "custom annotation value"
- };
-
- var expected = {
- "odata.id": "id",
- "custom.annotation": "custom annotation value",
- "p1@ns1.primitive": "primitive",
- "p1@ns2.complex": { a1: 500 },
- "p1@ns3.ns4.value": 600,
- "p2@ns1.primitive": 400
- };
-
- verifySerializedJsonLightData(data, expected, " Json light custom annotations were serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeEntryCollectionPropertiesTest() {
- var data = {
- __metadata: {
- id: "id",
- properties: {
- primitiveColArray: { type: "Collection(Edm.Int16)" },
- primitiveColObject: { type: "Collection(Edm.Int32)" }
- }
- },
- primitiveColArray: [1, 2, 3, 4],
- primitiveColObject: {
- results: [5, 6, 7, 8]
- },
- complexColArray: [{ p1: 100 }, { p1: 200}],
- complexColObject: {
- results: [{ p1: 300 }, { p1: 400}]
- }
- };
-
- var expected = {
- "primitiveColArray@odata.type": "Collection(Edm.Int16)",
- primitiveColArray: [1, 2, 3, 4],
- "primitiveColObject@odata.type": "Collection(Edm.Int32)",
- primitiveColObject: [5, 6, 7, 8],
- complexColArray: [{ p1: 100 }, { p1: 200}],
- complexColObject: [{ p1: 300 }, { p1: 400}]
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry collection properties were serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeEntryDeferredPropertyTest() {
- var data = {
- __metadata: {
- id: "id",
- properties: {
- deferred: {
- associationLinkUrl: "http://target/$links"
- }
- }
- },
- deferred: {
- __deferred: { uri: "http://target" }
- }
- };
-
- var expected = {
- "deferred@odata.navigationLinkUrl": "http://target"
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry deferred property were serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeEntryInlinePropertiesTest() {
- var data = {
- __metadata: {
- id: "id"
- },
- inlineEntry: {
- __metadata: { uri: "", properties: { p1: { type: "Edm.Int64"}} },
- p1: "300"
- },
- inlineBoundEntry: {
- __metadata: { uri: "http://entries(1)", properties: { p1: { type: "Edm.Int64"}} },
- p1: "400"
- },
- inlineFeedArray: [
- {
- __metadata: { uri: "http://entries(2)" }
- },
- {
- __metadata: { uri: "", properties: { p1: { type: "Edm.Int32"}} },
- p1: "600"
- },
- {
- __metadata: { uri: "http://entries(3)" }
- }
- ],
- inlineFeedObject: {
- __count: 50,
- __next: "next link",
- results: [
- { __metadata: { uri: "" }, p1: "900" }
- ]
- },
- inlineEmptyFeedObject: {
- results: []
- }
- };
-
- var expected = {
- inlineEntry: {
- "p1@odata.type": "Edm.Int64",
- p1: "300"
- },
- "inlineBoundEntry@odata.bind": "http://entries(1)",
- inlineFeedArray: [{
- "p1@odata.type": "Edm.Int32",
- p1: "600"
- }],
- "inlineFeedArray@odata.bind": [
- "http://entries(2)",
- "http://entries(3)"
- ],
- inlineFeedObject: [{
- p1: "900"
- }],
- inlineEmptyFeedObject: []
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry inline properties were serialized properly.");
-
- });
-
- djstest.addTest(function jsonLightSerializeEntryComplexPropertyTest() {
- var data = {
- __metadata: {
- id: "id",
- properties: {
- complexAsDeferredOnMetadata: {
- type: "complexAsDeferredOnMetadata.type"
- },
- complexAsCol: {
- type: "complexAsCol.type"
- }
- }
- },
- complexAsDeferred: {
- __metadata: {
- type: "complexAsDeferred.type"
- },
- __deferred: { uri: "http://uri" }
- },
- complexAsCol: {
- results: [1, 2, 3, 4]
- },
- complexAsNamedStream: {
- __metadata: {
- type: "complexAsNamedStream"
- },
- __mediaresource: {
- content_type: "content type",
- media_src: "http://source"
- }
- },
- complexAsDeferredOnMetadata: {
- __deferred: { uri: "http://uri2" }
- }
- };
-
- var expected = {
- complexAsDeferred: {
- "odata.type": "complexAsDeferred.type",
- __deferred: { uri: "http://uri" }
- },
- complexAsCol: {
- "odata.type": "complexAsCol.type",
- results: [1, 2, 3, 4]
- },
- complexAsNamedStream: {
- "odata.type": "complexAsNamedStream",
- __mediaresource: {
- content_type: "content type",
- media_src: "http://source"
- }
- },
- complexAsDeferredOnMetadata: {
- "odata.type": "complexAsDeferredOnMetadata.type",
- __deferred: { uri: "http://uri2" }
- }
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry complex properties were serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeEntryComplexPropertyMetadataTest() {
- var data = {
- __metadata: {
- id: "id",
- properties: {
- complex: {
- type: "this should be overriden",
- properties: {
- nested1: {
- type: "types.complex.nested1",
- properties: {
- nested2: {
- type: "types.complex.nested1.nested2"
- }
- }
- },
- c1: {
- type: "Edm.Int64"
- }
- }
- }
- }
- },
- complex: {
- __metadata: {
- type: "types.complex"
- },
- c1: "500",
- c2: "b",
- nested1: {
- nested2: {
- }
- }
- }
- };
-
- var expected = {
- complex: {
- "odata.type": "types.complex",
- "c1@odata.type": "Edm.Int64",
- c1: "500",
- c2: "b",
- nested1: {
- "odata.type": "types.complex.nested1",
- nested2: {
- "odata.type": "types.complex.nested1.nested2"
- }
- }
- }
- };
-
- verifySerializedJsonLightData(data, expected, " Json light entry complex property was serialized properly.");
- });
-
- djstest.addTest(function jsonLightSerializeLinksDocumentTest() {
- var tests = {
- "Empty uri string": {
- i: { uri: "" },
- e: { url: "" }
- },
- "Null uri string": {
- i: { uri: null },
- e: { url: null }
- },
- "Undefined uri string": {
- i: { uri: undefined },
- e: {}
- },
- "Uri": {
- i: { uri: "http://somUri/EntitySet(1)" },
- e: { url: "http://somUri/EntitySet(1)" }
- }
- };
-
- for (var name in tests) {
- verifySerializedJsonLightData(tests[name].i, tests[name].e, name + " - Json light links documents whas serialized properly.", "http://someUri/set(3)/$links/navprop");
- }
- });
-
- djstest.addTest(function jsonLightComputeLinksWithSingleKey() {
- var model = getSampleModel();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "MyId",
- P1: 42
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes('MyId')",
- "edit": "http://someUri/EntityTypes('MyId')",
- "uri": "http://someUri/EntityTypes('MyId')",
- "self": "http://someUri/EntityTypes('MyId')"
-
- },
- "Id": "MyId",
- "P1": 42
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinksWithMultipleKeys() {
- var model = getSampleModelWithTwoKeys();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "MyId",
- P1: 42
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes(Id='MyId',P1=42)",
- "edit": "http://someUri/EntityTypes(Id='MyId',P1=42)",
- "uri": "http://someUri/EntityTypes(Id='MyId',P1=42)",
- "self": "http://someUri/EntityTypes(Id='MyId',P1=42)"
- },
- "Id": "MyId",
- "P1": 42
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinksWithNonComputedEditLink() {
- var model = getSampleModel();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- "odata.editLink": "EntityTypes('notcomputed')",
- Id: "MyId",
- P1: 42
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes('notcomputed')",
- "edit": "http://someUri/EntityTypes('notcomputed')",
- "uri": "http://someUri/EntityTypes('notcomputed')",
- "self": "http://someUri/EntityTypes('notcomputed')"
- },
- "Id": "MyId",
- "P1": 42
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinksWithSingleConcurrencyProperty() {
- var model = getSampleModelWithOneConcurrencyProperty();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "MyId",
- P1: 42
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes('MyId')",
- "edit": "http://someUri/EntityTypes('MyId')",
- "uri": "http://someUri/EntityTypes('MyId')",
- "self": "http://someUri/EntityTypes('MyId')",
- "etag": "W/\"'MyId'\""
- },
- "Id": "MyId",
- "P1": 42
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinksWithSingleBinaryConcurrencyProperty() {
- var model = getSampleModelWithOneBinaryConcurrencyProperty();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "MyId",
- P1: "AAAAAAAAB9E="
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Binary"} },
- "id": "http://someUri/EntityTypes('MyId')",
- "edit": "http://someUri/EntityTypes('MyId')",
- "uri": "http://someUri/EntityTypes('MyId')",
- "self": "http://someUri/EntityTypes('MyId')",
- "etag": "W/\"X'00000000000007D1'\""
- },
- "Id": "MyId",
- "P1": "AAAAAAAAB9E="
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinkWithMutipleConcurrencyProperty() {
- var model = getSampleModelWithMultipleConcurrencyProperties();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "MyId",
- P1: 42
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes('MyId')",
- "edit": "http://someUri/EntityTypes('MyId')",
- "uri": "http://someUri/EntityTypes('MyId')",
- "self": "http://someUri/EntityTypes('MyId')",
- "etag": "W/\"'MyId',42\""
- },
- "Id": "MyId",
- "P1": 42
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightComputeLinkWithNullConcurrencyProperty() {
- var model = getSampleModelWithMultipleConcurrencyProperties();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "My Id'",
- P1: null
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": { "Id": { "type": "Edm.String" }, "P1": { "type": "Edm.Int32"} },
- "id": "http://someUri/EntityTypes('My%20Id''')",
- "edit": "http://someUri/EntityTypes('My%20Id''')",
- "uri": "http://someUri/EntityTypes('My%20Id''')",
- "self": "http://someUri/EntityTypes('My%20Id''')",
- "etag": "W/\"'My%20Id''',null\""
- },
- "Id": "My Id'",
- "P1": null
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightWithDecimalValue() {
- var model = getSampleModelWithDecimalProperty();
- var input = {
- "odata.metadata": "http://someUri/$metadata#EntityTypes/@Element",
- Id: "5",
- P1: "10.5"
- };
-
- var expected = {
- "__metadata": {
- "type": "NS.EntityType",
- "properties": {
- "Id": {
- "type": "Edm.String"
- },
- "P1": {
- "type": "Edm.Decimal"
- },
- },
- "id": "http:\/\/someUri\/EntityTypes('5')",
- "uri": "http:\/\/someUri\/EntityTypes('5')",
- "edit": "http:\/\/someUri\/EntityTypes('5')",
- "self": "http:\/\/someUri\/EntityTypes('5')"
- },
- "Id": "5",
- "P1": "10.5"
- };
-
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightNavigationPropertyAndAssociationUriShouldBeComputedTest() {
- var model = getSampleModelWithNavPropertiesAndInheritedTypes();
- var input = {
- "odata.metadata": "http://someUri/$metadata#Products/@Element",
- ID: 5,
- };
-
- var expected = {
- "__metadata": {
- "type": "ODataDemo.Product",
- "properties": {
- "ID": {
- "type": "Edm.Int32"
- },
- "Category": {
- "type": "ODataDemo.Category",
- "associationLinkUrl": "http:\/\/someUri\/Products(5)\/$links\/Category",
- }
- },
- "id": "http:\/\/someUri\/Products(5)",
- "uri": "http:\/\/someUri\/Products(5)",
- "edit": "http:\/\/someUri\/Products(5)",
- "self": "http:\/\/someUri\/Products(5)"
- },
- "ID": 5,
- "Category": {
- "__deferred": {
- "uri": "http:\/\/someUri\/Products(5)\/Category"
- }
- }
- };
-
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightNullNavigationPropertyShouldNotBeComputedTest() {
- var model = getSampleModelWithNavPropertiesAndInheritedTypes();
- var input = {
- "odata.metadata": "http://someUri/$metadata#Products/@Element",
- ID: 5,
- Category: null
- };
-
- var expected = {
- "__metadata": {
- "type": "ODataDemo.Product",
- "properties": {
- "ID": {
- "type": "Edm.Int32"
- },
- "Category": {
- "type": "ODataDemo.Category",
- "associationLinkUrl": "http:\/\/someUri\/Products(5)\/$links\/Category",
- "navigationLinkUrl": "http:\/\/someUri\/Products(5)\/Category"
- }
- },
- "id": "http:\/\/someUri\/Products(5)",
- "uri": "http:\/\/someUri\/Products(5)",
- "edit": "http:\/\/someUri\/Products(5)",
- "self": "http:\/\/someUri\/Products(5)"
- },
- "ID": 5,
- "Category": null
- };
-
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightUrisShouldBeComputedForExpandedEntities() {
- var model = getSampleModelWithNavPropertiesAndInheritedTypes();
- var input = {
- "odata.metadata": "http://someUri/$metadata#Products/@Element",
- ID: 5,
- Category: {
- ID: 1
- }
- };
-
- var expected = {
- "__metadata": {
- "type": "ODataDemo.Product",
- "properties": {
- "ID": {
- "type": "Edm.Int32"
- },
- "Category": {
- "type": "ODataDemo.Category",
- "navigationLinkUrl": "http:\/\/someUri\/Products(5)\/Category",
- "associationLinkUrl": "http:\/\/someUri\/Products(5)\/$links\/Category"
- }
- },
- "id": "http:\/\/someUri\/Products(5)",
- "uri": "http:\/\/someUri\/Products(5)",
- "edit": "http:\/\/someUri\/Products(5)",
- "self": "http:\/\/someUri\/Products(5)"
- },
- "ID": 5,
- "Category": {
- "__metadata": {
- "type": "ODataDemo.Category",
- "properties": {
- "ID": {
- "type": "Edm.Int32"
- },
- "Products": {
- "type": "ODataDemo.Product",
- "associationLinkUrl": "http:\/\/someUri\/Categories(1)\/$links\/Products"
- }
- },
- "id": "http:\/\/someUri\/Categories(1)",
- "uri": "http:\/\/someUri\/Categories(1)",
- "edit": "http:\/\/someUri\/Categories(1)",
- "self": "http:\/\/someUri\/Categories(1)"
- },
- "ID": 1,
- "Products": {
- "__deferred": {
- "uri": "http:\/\/someUri\/Categories(1)\/Products"
- }
- }
- }
- };
-
- verifyReadJsonLightWithMinimalMetadata(input, expected, "Json light type annotations in payload are preferred over type information in the metadata document", model);
- djstest.done();
- });
-
- djstest.addTest(function jsonLightUr
<TRUNCATED>