@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
677 lines • 105 kB
JavaScript
import { of } from "rxjs";
import { MockList } from "../../../../test/data/api/v2/mock-list";
import { MockOntology } from "../../../../test/data/api/v2/mock-ontology";
import { MockAjaxCall } from "../../../../test/mockajaxcall";
import { KnoraApiConfig } from "../../../knora-api-config";
import { KnoraApiConnection } from "../../../knora-api-connection";
import { Constants } from "../../../models/v2/Constants";
import { UpdateResource } from "../../../models/v2/resources/update/update-resource";
import { CreateBooleanValue } from "../../../models/v2/resources/values/create/create-boolean-value";
import { CreateColorValue } from "../../../models/v2/resources/values/create/create-color-value";
import { CreateDateValue } from "../../../models/v2/resources/values/create/create-date-value";
import { CreateDecimalValue } from "../../../models/v2/resources/values/create/create-decimal-value";
import { CreateStillImageFileValue } from "../../../models/v2/resources/values/create/create-file-value";
import { CreateGeomValue } from "../../../models/v2/resources/values/create/create-geom-value";
import { CreateGeonameValue } from "../../../models/v2/resources/values/create/create-geoname-value";
import { CreateIntValue } from "../../../models/v2/resources/values/create/create-int-value";
import { CreateIntervalValue } from "../../../models/v2/resources/values/create/create-interval-value";
import { CreateLinkValue } from "../../../models/v2/resources/values/create/create-link-value";
import { CreateListValue } from "../../../models/v2/resources/values/create/create-list-value";
import { CreateTextValueAsString, CreateTextValueAsXml } from "../../../models/v2/resources/values/create/create-text-value";
import { CreateTimeValue } from "../../../models/v2/resources/values/create/create-time-value";
import { CreateUriValue } from "../../../models/v2/resources/values/create/create-uri-value";
import { DeleteValue } from "../../../models/v2/resources/values/delete/delete-value";
import { ReadBooleanValue } from "../../../models/v2/resources/values/read/read-boolean-value";
import { ReadColorValue } from "../../../models/v2/resources/values/read/read-color-value";
import { KnoraDate, ReadDateValue } from "../../../models/v2/resources/values/read/read-date-value";
import { ReadDecimalValue } from "../../../models/v2/resources/values/read/read-decimal-value";
import { ReadStillImageExternalFileValue, ReadStillImageFileValue } from "../../../models/v2/resources/values/read/read-file-value";
import { ReadGeomValue } from "../../../models/v2/resources/values/read/read-geom-value";
import { ReadGeonameValue } from "../../../models/v2/resources/values/read/read-geoname-value";
import { ReadIntValue } from "../../../models/v2/resources/values/read/read-int-value";
import { ReadIntervalValue } from "../../../models/v2/resources/values/read/read-interval-value";
import { ReadLinkValue } from "../../../models/v2/resources/values/read/read-link-value";
import { ReadListValue } from "../../../models/v2/resources/values/read/read-list-value";
import { ReadTextValueAsString, ReadTextValueAsXml } from "../../../models/v2/resources/values/read/read-text-value";
import { ReadTimeValue } from "../../../models/v2/resources/values/read/read-time-value";
import { UpdateBooleanValue } from "../../../models/v2/resources/values/update/update-boolean-value";
import { UpdateColorValue } from "../../../models/v2/resources/values/update/update-color-value";
import { UpdateDateValue } from "../../../models/v2/resources/values/update/update-date-value";
import { UpdateDecimalValue } from "../../../models/v2/resources/values/update/update-decimal-value";
import { UpdateStillImageFileValue } from "../../../models/v2/resources/values/update/update-file-value";
import { UpdateGeomValue } from "../../../models/v2/resources/values/update/update-geom-value";
import { UpdateGeonameValue } from "../../../models/v2/resources/values/update/update-geoname-value";
import { UpdateIntValue } from "../../../models/v2/resources/values/update/update-int-value";
import { UpdateIntervalValue } from "../../../models/v2/resources/values/update/update-interval-value";
import { UpdateLinkValue } from "../../../models/v2/resources/values/update/update-link-value";
import { UpdateListValue } from "../../../models/v2/resources/values/update/update-list-value";
import { UpdateTextValueAsString, UpdateTextValueAsXml } from "../../../models/v2/resources/values/update/update-text-value";
import { UpdateTimeValue } from "../../../models/v2/resources/values/update/update-time-value";
import { UpdateUriValue } from "../../../models/v2/resources/values/update/update-uri-value";
import { UpdateValuePermissions } from "../../../models/v2/resources/values/update/update-value-permissions";
var config = new KnoraApiConfig("http", "0.0.0.0", 3333, undefined, undefined, true);
var knoraApiConnection;
var getResourceClassDefinitionFromCacheSpy;
var getListNodeFromCacheSpy;
var WriteValueMocks;
(function (WriteValueMocks) {
var mockWriteValueResponse = function (id, type, uuid, creationDate) {
var _a;
var res = (_a = {
"@id": id,
"@type": type
},
_a[Constants.ValueHasUUID] = uuid,
_a);
if (creationDate !== undefined) {
res[Constants.ValueCreationDate] = {
"@type": "http://www.w3.org/2001/XMLSchema#dateTimeStamp",
"@value": creationDate
};
}
return JSON.stringify(res);
};
WriteValueMocks.mockUpdateValueResponse = function (id, type, uuid) {
return mockWriteValueResponse(id, type, uuid);
};
WriteValueMocks.mockCreateValueResponse = function (id, type, uuid, creationDate) {
return mockWriteValueResponse(id, type, uuid, creationDate);
};
})(WriteValueMocks || (WriteValueMocks = {}));
describe("ValuesEndpoint", function () {
beforeEach(function () {
jasmine.Ajax.install();
knoraApiConnection = new KnoraApiConnection(config);
getResourceClassDefinitionFromCacheSpy = spyOn(knoraApiConnection.v2.ontologyCache, "getResourceClassDefinition").and.callFake(function (resClassIri) {
return of(MockOntology.mockIResourceClassAndPropertyDefinitions(resClassIri));
});
getListNodeFromCacheSpy = spyOn(knoraApiConnection.v2.listNodeCache, "getNode").and.callFake(function (listNodeIri) {
return of(MockList.mockNode(listNodeIri));
});
});
afterEach(function () {
jasmine.Ajax.uninstall();
});
describe("Method getValue", function () {
it("should read an integer value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "dJ1ES8QTQNepFKF5-EAqdg").subscribe(function (res) {
var intVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasInteger", ReadIntValue);
expect(intVal.length).toEqual(1);
expect(intVal[0].int).toEqual(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-int-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/dJ1ES8QTQNepFKF5-EAqdg");
expect(request.method).toEqual("GET");
});
it("should read a decimal value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "bXMwnrHvQH2DMjOFrGmNzg-EAqdg").subscribe(function (res) {
var decVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasDecimal", ReadDecimalValue);
expect(decVal.length).toEqual(1);
expect(decVal[0].decimal).toBeCloseTo(1.5, 1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-decimal-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/bXMwnrHvQH2DMjOFrGmNzg-EAqdg");
expect(request.method).toEqual("GET");
});
it("should read a color value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "TAziKNP8QxuyhC4Qf9-b6w").subscribe(function (res) {
var colorVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasColor", ReadColorValue);
expect(colorVal.length).toEqual(1);
expect(colorVal[0].color).toEqual("#ff3333");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-color-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/TAziKNP8QxuyhC4Qf9-b6w");
expect(request.method).toEqual("GET");
});
it("should read an interval value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "RbDKPKHWTC-0lkRKae-E6A").subscribe(function (res) {
var intervalVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasInterval", ReadIntervalValue);
expect(intervalVal.length).toEqual(1);
expect(intervalVal[0].start).toEqual(0);
expect(intervalVal[0].end).toEqual(216000);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-interval-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/RbDKPKHWTC-0lkRKae-E6A");
expect(request.method).toEqual("GET");
});
it("should read an Boolean value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "IN4R19yYR0ygi3K2VEHpUQ").subscribe(function (res) {
var boolVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasBoolean", ReadBooleanValue);
expect(boolVal.length).toEqual(1);
expect(boolVal[0].bool).toBeTruthy();
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-boolean-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/IN4R19yYR0ygi3K2VEHpUQ");
expect(request.method).toEqual("GET");
});
it("should read a list value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "XAhEeE3kSVqM4JPGdLt4Ew").subscribe(function (res) {
var listVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasListItem", ReadListValue);
expect(listVal.length).toEqual(1);
expect(listVal[0].listNode).toEqual("http://rdfh.ch/lists/0001/treeList01");
expect(listVal[0].listNodeLabel).toEqual("Tree list node 01");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getListNodeFromCacheSpy).toHaveBeenCalledWith("http://rdfh.ch/lists/0001/treeList01");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-list-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/XAhEeE3kSVqM4JPGdLt4Ew");
expect(request.method).toEqual("GET");
});
it("should read an link value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "uvRVxzL1RD-t9VIQ1TpfUw").subscribe(function (res) {
var linkVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasOtherThingValue", ReadLinkValue);
expect(linkVal.length).toEqual(1);
expect(linkVal[0].linkedResourceIri).toEqual("http://rdfh.ch/0001/0C-0L1kORryKzJAJxxRyRQ");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(2);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-link-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/uvRVxzL1RD-t9VIQ1TpfUw");
expect(request.method).toEqual("GET");
});
it("should read a text value without standoff", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "SZyeLLmOTcCCuS3B0VksHQ").subscribe(function (res) {
var textVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasText", ReadTextValueAsString);
expect(textVal.length).toEqual(1);
expect(textVal[0].text).toEqual("test");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-text-value-without-standoff-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/SZyeLLmOTcCCuS3B0VksHQ");
expect(request.method).toEqual("GET");
});
it("should read a text value with standoff", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "rvB4eQ5MTF-Qxq0YgkwaDg").subscribe(function (res) {
var textVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasRichtext", ReadTextValueAsXml);
expect(textVal.length).toEqual(1);
expect(textVal[0].xml).toEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<text><p>test with <strong>markup</strong></p></text>");
expect(textVal[0].mapping).toEqual("http://rdfh.ch/standoff/mappings/StandardMapping");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-text-value-with-standoff-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/rvB4eQ5MTF-Qxq0YgkwaDg");
expect(request.method).toEqual("GET");
});
it("should read a date value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "-rG4F5FTTu2iB5mTBPVn5Q").subscribe(function (res) {
var dateVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasDate", ReadDateValue);
expect(dateVal.length).toEqual(1);
expect(dateVal[0].date instanceof KnoraDate).toBeTruthy();
expect(dateVal[0].date.calendar).toEqual("GREGORIAN");
expect(dateVal[0].date.day).toEqual(13);
expect(dateVal[0].date.month).toEqual(5);
expect(dateVal[0].date.year).toEqual(2018);
expect(dateVal[0].date.era).toEqual("CE");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-date-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/-rG4F5FTTu2iB5mTBPVn5Q");
expect(request.method).toEqual("GET");
});
it("should read a date value (Islamic)", function (done) {
// test data for Islamic date has been created manually!
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "-rG4F5FTTu2iB5mTBPVn5Q").subscribe(function (res) {
var dateVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasDate", ReadDateValue);
expect(dateVal.length).toEqual(1);
expect(dateVal[0].date instanceof KnoraDate).toBeTruthy();
expect(dateVal[0].date.calendar).toEqual("ISLAMIC");
expect(dateVal[0].date.day).toEqual(27);
expect(dateVal[0].date.month).toEqual(8);
expect(dateVal[0].date.year).toEqual(1439);
expect(dateVal[0].date.era).toEqual("noEra");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/manually-generated/get-islamic-date-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/-rG4F5FTTu2iB5mTBPVn5Q");
expect(request.method).toEqual("GET");
});
it("should read a still image file value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "goZ7JFRNSeqF-dNxsqAS7Q").subscribe(function (res) {
var stillImageVal = res.getValuesAs("http://api.knora.org/ontology/knora-api/v2#hasStillImageFileValue", ReadStillImageFileValue);
expect(stillImageVal.length).toEqual(1);
expect(stillImageVal[0].filename).toEqual("B1D0OkEgfFp-Cew2Seur7Wi.jp2");
expect(stillImageVal[0].dimX).toEqual(512);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#ThingPicture");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-still-image-file-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/goZ7JFRNSeqF-dNxsqAS7Q");
expect(request.method).toEqual("GET");
});
it("should read an external image file value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0803/RRjceJu5S86zfc_-ZrIEtg", "1-COzXfuTXiwDJ_2GZxeoQ").subscribe(function (res) {
var externalImageVal = res.getValuesAs("http://api.knora.org/ontology/knora-api/v2#hasStillImageFileValue", ReadStillImageExternalFileValue);
expect(externalImageVal.length).toEqual(1);
expect(externalImageVal[0].externalUrl).toEqual("https://ids.lib.harvard.edu/ids/iiif/24209711/full/105,/0/default.jpg");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#ThingPicture");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/manually-generated/get-still-image-external-file-value-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0803%2FRRjceJu5S86zfc_-ZrIEtg/1-COzXfuTXiwDJ_2GZxeoQ");
expect(request.method).toEqual("GET");
});
it("should read a geometry value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "we-ybmj-SRen-91n4RaDOQ").subscribe(function (res) {
var geomVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasGeometry", ReadGeomValue);
expect(geomVal.length).toEqual(1);
expect(geomVal[0].geometry.type).toEqual("rectangle");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-geom-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/we-ybmj-SRen-91n4RaDOQ");
expect(request.method).toEqual("GET");
});
it("should read a Geoname value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "hty-ONF8SwKN2RKU7rLKDg").subscribe(function (res) {
var geomVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasGeoname", ReadGeonameValue);
expect(geomVal.length).toEqual(1);
expect(geomVal[0].geoname).toEqual("2661604");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-geoname-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/hty-ONF8SwKN2RKU7rLKDg");
expect(request.method).toEqual("GET");
});
it("should read a time value", function (done) {
knoraApiConnection.v2.values.getValue("http://rdfh.ch/0001/H6gBWUuJSuuO-CilHV8kQw", "l6DhS5SCT9WhXSoYEZRTRw").subscribe(function (res) {
var geomVal = res.getValuesAs("http://0.0.0.0:3333/ontology/0001/anything/v2#hasTimeStamp", ReadTimeValue);
expect(geomVal.length).toEqual(1);
expect(geomVal[0].time).toEqual("2019-08-30T10:45:20.173572Z");
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledTimes(1);
expect(getResourceClassDefinitionFromCacheSpy).toHaveBeenCalledWith("http://0.0.0.0:3333/ontology/0001/anything/v2#Thing");
expect(getListNodeFromCacheSpy).toHaveBeenCalledTimes(0);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var resource = require("../../../../test/data/api/v2/values/get-time-value-response-expanded.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(resource)));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values/http%3A%2F%2Frdfh.ch%2F0001%2FH6gBWUuJSuuO-CilHV8kQw/l6DhS5SCT9WhXSoYEZRTRw");
expect(request.method).toEqual("GET");
});
});
describe("Method updateValue", function () {
it("should check mocked update value response", function () {
var mockedUpdateIntValueResponse = WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/ADHkEJicT1qjuoEgFyfPIg", Constants.IntValue, "NwAp_UmGRlWTOCss0Yfwbw");
var updateIntValueResponse = require("../../../../test/data/api/v2/values/update-int-value-response-expanded.json");
// TODO: remove this bad hack once test data is stable
updateIntValueResponse["@id"] = "http://rdfh.ch/0001/a-thing/values/ADHkEJicT1qjuoEgFyfPIg";
updateIntValueResponse["http://api.knora.org/ontology/knora-api/v2#valueHasUUID"] = "NwAp_UmGRlWTOCss0Yfwbw";
expect(JSON.parse(mockedUpdateIntValueResponse)).toEqual(updateIntValueResponse);
});
it("should update an integer value", function (done) {
var updateIntVal = new UpdateIntValue();
updateIntVal.id = "http://rdfh.ch/0001/a-thing/values/Gdp7h5fOTEaxJEvoTXIW5A";
updateIntVal.int = 5;
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasInteger";
updateResource.value = updateIntVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.IntValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.IntValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-int-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasInteger"]["@id"] = "http://rdfh.ch/0001/a-thing/values/Gdp7h5fOTEaxJEvoTXIW5A";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a decimal value", function (done) {
var updateDecimalVal = new UpdateDecimalValue();
updateDecimalVal.id = "http://rdfh.ch/0001/a-thing/values/7Rl2CDFTSIGE04RyB1CG2w";
updateDecimalVal.decimal = 5.6;
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasDecimal";
updateResource.value = updateDecimalVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.DecimalValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.DecimalValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-decimal-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasDecimal"]["@id"] = "http://rdfh.ch/0001/a-thing/values/7Rl2CDFTSIGE04RyB1CG2w";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a color value", function (done) {
var updateColorVal = new UpdateColorValue();
updateColorVal.id = "http://rdfh.ch/0001/a-thing/values/74h6nw99Rgiww0y_n2sspQ";
updateColorVal.color = "#ff3344";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasColor";
updateResource.value = updateColorVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.ColorValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.ColorValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-color-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasColor"]["@id"] = "http://rdfh.ch/0001/a-thing/values/74h6nw99Rgiww0y_n2sspQ";
expect(request.data()).toEqual(expectedPayload);
});
it("should update an interval value", function (done) {
var updateIntervalVal = new UpdateIntervalValue();
updateIntervalVal.id = "http://rdfh.ch/0001/a-thing/values/W5_dZsbwTTWj9E4J5WlIJA";
updateIntervalVal.start = 5.6;
updateIntervalVal.end = 7.8;
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasInterval";
updateResource.value = updateIntervalVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.IntervalValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.IntervalValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-interval-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasInterval"]["@id"] = "http://rdfh.ch/0001/a-thing/values/W5_dZsbwTTWj9E4J5WlIJA";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a Boolean value", function (done) {
var updateBooleanVal = new UpdateBooleanValue();
updateBooleanVal.id = "http://rdfh.ch/0001/a-thing/values/-B-cx99VScG5vBXyM5F5tg";
updateBooleanVal.bool = false;
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasBoolean";
updateResource.value = updateBooleanVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.BooleanValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.BooleanValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-boolean-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasBoolean"]["@id"] = "http://rdfh.ch/0001/a-thing/values/-B-cx99VScG5vBXyM5F5tg";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a list value", function (done) {
var updateListVal = new UpdateListValue();
updateListVal.id = "http://rdfh.ch/0001/a-thing/values/C91T8eVmTD2suPhq6RBNAw";
updateListVal.listNode = "http://rdfh.ch/lists/0001/treeList02";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasListItem";
updateResource.value = updateListVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.ListValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.ListValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-list-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasListItem"]["@id"] = "http://rdfh.ch/0001/a-thing/values/C91T8eVmTD2suPhq6RBNAw";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a link value", function (done) {
var updateLinkVal = new UpdateLinkValue();
updateLinkVal.id = "http://rdfh.ch/0001/a-thing/values/vLpKgz66Sn2tyUYJSJ5B5A";
updateLinkVal.linkedResourceIri = "http://rdfh.ch/0001/5IEswyQFQp2bxXDrOyEfEA";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasOtherThingValue";
updateResource.value = updateLinkVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.LinkValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.LinkValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-link-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasOtherThingValue"]["@id"] = "http://rdfh.ch/0001/a-thing/values/vLpKgz66Sn2tyUYJSJ5B5A";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a URI value", function (done) {
var updateUriVal = new UpdateUriValue();
updateUriVal.id = "http://rdfh.ch/0001/a-thing/values/ozzNaZM7T6OILHJbxv4MGw";
updateUriVal.uri = "https://docs.knora.org";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasUri";
updateResource.value = updateUriVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.UriValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.UriValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-uri-value-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasUri"]["@id"] = "http://rdfh.ch/0001/a-thing/values/ozzNaZM7T6OILHJbxv4MGw";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a text value as string", function (done) {
var updateTextVal = new UpdateTextValueAsString();
updateTextVal.id = "http://rdfh.ch/0001/a-thing/values/pHuFhBelROGexp2IhaLQAg";
updateTextVal.text = "text without standoff updated";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasText";
updateResource.value = updateTextVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.TextValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.TextValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-text-value-without-standoff-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasText"]["@id"] = "http://rdfh.ch/0001/a-thing/values/pHuFhBelROGexp2IhaLQAg";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a text value as XML", function (done) {
var updateTextVal = new UpdateTextValueAsXml();
updateTextVal.id = "http://rdfh.ch/0001/a-thing/values/I4OWMilwQwaYvaN5wlUIqg";
updateTextVal.xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<text>\n This updated text links to another <a class=\"salsah-link\" href=\"http://rdfh.ch/0001/another-thing\">resource</a>.\n</text>";
updateTextVal.mapping = "http://rdfh.ch/standoff/mappings/StandardMapping";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasText";
updateResource.value = updateTextVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.TextValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.TextValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Content-Type": "application/json; charset=utf-8",
"X-Asset-Ingested": "true"
});
var expectedPayload = require("../../../../test/data/api/v2/values/update-text-value-with-standoff-request-expanded.json");
// TODO: remove this bad hack once test data is stable
expectedPayload["http://0.0.0.0:3333/ontology/0001/anything/v2#hasText"]["@id"] = "http://rdfh.ch/0001/a-thing/values/I4OWMilwQwaYvaN5wlUIqg";
expect(request.data()).toEqual(expectedPayload);
});
it("should update a date value with day precision", function (done) {
var updateDateVal = new UpdateDateValue();
updateDateVal.id = "http://rdfh.ch/0001/a-thing/values/80rXchZpShyfQShMi-JZbA";
updateDateVal.calendar = "GREGORIAN";
updateDateVal.startYear = 2018;
updateDateVal.startMonth = 10;
updateDateVal.startDay = 5;
updateDateVal.startEra = "CE";
updateDateVal.endYear = 2018;
updateDateVal.endMonth = 12;
updateDateVal.endDay = 6;
updateDateVal.endEra = "CE";
var updateResource = new UpdateResource();
updateResource.id = "http://rdfh.ch/0001/a-thing";
updateResource.type = "http://0.0.0.0:3333/ontology/0001/anything/v2#Thing";
updateResource.property = "http://0.0.0.0:3333/ontology/0001/anything/v2#hasDate";
updateResource.value = updateDateVal;
knoraApiConnection.v2.values.updateValue(updateResource).subscribe(function (res) {
expect(res.id).toEqual("http://rdfh.ch/0001/a-thing/values/updated");
expect(res.type).toEqual(Constants.DateValue);
done();
});
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith(MockAjaxCall.mockResponse(WriteValueMocks.mockUpdateValueResponse("http://rdfh.ch/0001/a-thing/values/updated", Constants.DateValue, "uuid")));
expect(request.url).toBe("http://0.0.0.0:3333/v2/values");
expect(request.method).toEqual("PUT");
expect(request.requestHeaders).toEqual({
"Co