var ldnode = require('../');
var supertest = require('supertest');
var fs = require('fs');
var fsExtra = require('fs-extra');
var expect = require('chai').expect;
var assert = require('chai').assert;
var path = require('path');
// Helper functions for the FS
var rm = require('./test-utils').rm;
var write = require('./test-utils').write;
var cp = require('./test-utils').cp;
var read = require('./test-utils').read;
describe('PATCH', function () {
// Starting LDP
var ldp = ldnode({
root: __dirname + '/resources/sampleContainer',
mount: '/test'
});
var server = supertest(ldp);
describe('DELETE', function () {
it('should be an empty resource if last triple is deleted', function (done) {
write(
'<#current> <#temp> 123 .',
'sampleContainer/existingTriple.ttl');
server.post('/existingTriple.ttl')
.set('content-type', 'application/sparql-update')
.send('DELETE { :current :temp 123 .}')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/existingTriple.ttl'),
'\n');
rm('sampleContainer/existingTriple.ttl');
done(err);
});
});
});
describe('DELETE and INSERT', function () {
it('should be update a resource using SPARQL-query using `prefix`', function (done) {
write(
'@prefix schema: .\n' +
'@prefix profile: .\n' +
'# a schema:Person ;\n' +
'<#> a schema:Person ;\n' +
' profile:first_name "Tim" .\n',
'sampleContainer/prefixSparql.ttl');
server.post('/prefixSparql.ttl')
.set('content-type', 'application/sparql-update')
.send('@prefix rdf: .\n' +
'@prefix schema: .\n' +
'@prefix profile: .\n' +
'@prefix ex: .\n' +
'DELETE { <#> profile:first_name "Tim" }\n' +
'INSERT { <#> profile:first_name "Timothy" }')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/prefixSparql.ttl'),
'@prefix schema: .\n' +
'@prefix profile: .\n' +
'\n' +
' <#> profile:first_name "Timothy"; a schema:Person .\n');
rm('sampleContainer/prefixSparql.ttl');
done(err);
});
});
});
describe('INSERT', function () {
it('should add a new triple', function (done) {
write(
'<#current> <#temp> 123 .',
'sampleContainer/addingTriple.ttl');
server.post('/addingTriple.ttl')
.set('content-type', 'application/sparql-update')
.send('INSERT DATA { :test :hello 456 .}')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/addingTriple.ttl'),
'\n' +
' <#current> <#temp> 123 .\n' +
' <#test> <#hello> 456 .\n');
rm('sampleContainer/addingTriple.ttl');
done(err);
});
});
it('should add value to existing triple', function (done) {
write(
'<#current> <#temp> 123 .',
'sampleContainer/addingTripleValue.ttl');
server.post('/addingTripleValue.ttl')
.set('content-type', 'application/sparql-update')
.send('INSERT DATA { :current :temp 456 .}')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/addingTripleValue.ttl'),
'\n' +
' <#current> <#temp> 123, 456 .\n');
rm('sampleContainer/addingTripleValue.ttl');
done(err);
});
});
it('should add value to same subject', function (done) {
write(
'<#current> <#temp> 123 .',
'sampleContainer/addingTripleSubj.ttl');
server.post('/addingTripleSubj.ttl')
.set('content-type', 'application/sparql-update')
.send('INSERT DATA { :current :temp2 456 .}')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/addingTripleSubj.ttl'),
'\n'+
' <#current> <#temp2> 456; <#temp> 123 .\n');
rm('sampleContainer/addingTripleSubj.ttl');
done(err);
});
});
});
it('nothing should change with empty patch', function (done) {
write(
'<#current> <#temp> 123 .',
'sampleContainer/emptyExample.ttl');
server.post('/emptyExample.ttl')
.set('content-type', 'application/sparql-update')
.send('')
.expect(200)
.end(function(err, res, body){
assert.equal(
read('sampleContainer/emptyExample.ttl'),
'\n' +
' <#current> <#temp> 123 .\n');
rm('sampleContainer/emptyExample.ttl');
done(err);
});
});
});