@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
138 lines • 8.05 kB
JavaScript
import { MockAjaxCall } from "../../../../test/mockajaxcall";
import { KnoraApiConfig } from "../../../knora-api-config";
import { KnoraApiConnection } from "../../../knora-api-connection";
import { CreateGroupRequest } from "../../../models/admin/create-group-request";
import { StringLiteral } from "../../../models/admin/string-literal";
import { UpdateGroupRequest } from "../../../models/admin/update-group-request";
describe("GroupsEndpoint", function () {
var config = new KnoraApiConfig("http", "localhost", 3333, undefined, undefined, true);
var knoraApiConnection = new KnoraApiConnection(config);
beforeEach(function () {
jasmine.Ajax.install();
});
afterEach(function () {
jasmine.Ajax.uninstall();
});
describe("Method getGroups", function () {
it("should return all groups", function (done) {
knoraApiConnection.admin.groupsEndpoint.getGroups().subscribe(function (response) {
expect(response.body.groups.length).toEqual(2);
expect(response.body.groups[0].id).toEqual("http://rdfh.ch/groups/00FF/images-reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var groups = require("../../../../test/data/api/admin/groups/get-groups-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(groups)));
expect(request.url).toBe("http://localhost:3333/admin/groups");
expect(request.method).toEqual("GET");
});
});
describe("Method createGroup", function () {
it("should create a group", function (done) {
var group = new CreateGroupRequest();
group.name = "NewGroup";
group.project = "http://rdfh.ch/projects/00FF";
group.status = true;
group.selfjoin = false;
var descriptions = new StringLiteral();
descriptions.language = "en";
descriptions.value = "NewGroupDescription";
group.descriptions = [descriptions];
knoraApiConnection.admin.groupsEndpoint.createGroup(group).subscribe(function (response) {
expect(response.body.group.name).toEqual("Image reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var groups = require("../../../../test/data/api/admin/groups/get-group-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(groups)));
expect(request.url).toBe("http://localhost:3333/admin/groups");
expect(request.method).toEqual("POST");
var payload = require("../../../../test/data/api/admin/groups/create-group-request.json");
expect(request.data()).toEqual(payload);
});
});
describe("Method getGroupByIri", function () {
it("should get a group by its IRI", function (done) {
var groupIri = "http://rdfh.ch/groups/00FF/images-reviewer";
knoraApiConnection.admin.groupsEndpoint.getGroupByIri(groupIri).subscribe(function (response) {
expect(response.body.group.id).toEqual("http://rdfh.ch/groups/00FF/images-reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var group = require("../../../../test/data/api/admin/groups/get-group-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(group)));
expect(request.url).toBe("http://localhost:3333/admin/groups/http%3A%2F%2Frdfh.ch%2Fgroups%2F00FF%2Fimages-reviewer");
expect(request.method).toEqual("GET");
});
});
describe("Method updateGroup", function () {
it("should update a group", function (done) {
var groupIri = "http://rdfh.ch/groups/00FF/images-reviewer";
var groupInfo = new UpdateGroupRequest();
groupInfo.name = "UpdatedGroupName";
var descriptions = new StringLiteral();
descriptions.language = "en";
descriptions.value = "UpdatedGroupDescription";
groupInfo.descriptions = [descriptions];
knoraApiConnection.admin.groupsEndpoint.updateGroup(groupIri, groupInfo).subscribe(function (response) {
expect(response.body.group.name).toEqual("Image reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var group = require("../../../../test/data/api/admin/groups/get-group-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(group)));
expect(request.url).toBe("http://localhost:3333/admin/groups/http%3A%2F%2Frdfh.ch%2Fgroups%2F00FF%2Fimages-reviewer");
expect(request.method).toEqual("PUT");
var payload = require("../../../../test/data/api/admin/groups/update-group-request.json");
expect(request.data()).toEqual(payload);
});
});
describe("Method updateGroupStatus", function () {
it("should update a group's status", function (done) {
var groupIri = "http://rdfh.ch/groups/00FF/images-reviewer";
var groupStatus = true;
// TODO: fix in Knora: payload
knoraApiConnection.admin.groupsEndpoint.updateGroupStatus(groupIri, groupStatus).subscribe(function (response) {
expect(response.body.group.name).toEqual("Image reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var group = require("../../../../test/data/api/admin/groups/get-group-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(group)));
expect(request.url).toBe("http://localhost:3333/admin/groups/http%3A%2F%2Frdfh.ch%2Fgroups%2F00FF%2Fimages-reviewer/status");
expect(request.method).toEqual("PUT");
var payload = require("../../../../test/data/api/admin/groups/change-group-status-request.json");
expect(request.data()).toEqual(payload);
});
});
describe("Method deleteGroup", function () {
it("should delete a group", function (done) {
var groupIri = "http://rdfh.ch/groups/00FF/images-reviewer";
knoraApiConnection.admin.groupsEndpoint.deleteGroup(groupIri).subscribe(function (response) {
expect(response.body.group.name).toEqual("Image reviewer");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var group = require("../../../../test/data/api/admin/groups/get-group-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(group)));
expect(request.url).toBe("http://localhost:3333/admin/groups/http%3A%2F%2Frdfh.ch%2Fgroups%2F00FF%2Fimages-reviewer");
expect(request.method).toEqual("DELETE");
});
});
describe("Method getGroupMembers", function () {
it("should get a group's members", function (done) {
var groupIri = "http://rdfh.ch/groups/00FF/images-reviewer";
knoraApiConnection.admin.groupsEndpoint.getGroupMembers(groupIri).subscribe(function (response) {
expect(response.body.members.length).toEqual(2);
expect(response.body.members[0].id).toEqual("http://rdfh.ch/users/images-reviewer-user");
done();
});
var request = jasmine.Ajax.requests.mostRecent();
var members = require("../../../../test/data/api/admin/groups/get-group-members-response.json");
request.respondWith(MockAjaxCall.mockResponse(JSON.stringify(members)));
expect(request.url).toBe("http://localhost:3333/admin/groups/http%3A%2F%2Frdfh.ch%2Fgroups%2F00FF%2Fimages-reviewer/members");
expect(request.method).toEqual("GET");
});
});
});
//# sourceMappingURL=groups-endpoint.spec.js.map