blob: 4d151d377c3a94cff6d23717ca63d72ef1182954 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the 'License'); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
'use strict';
var helpers = require('../../helpers/integration');
var harness = helpers.harness(__filename);
var db = harness.locals.db;
var it = harness.it;
var rev;
it('should insert one simple document', function(assert) {
db.insert({'foo': 'baz'}, 'foobaz', function(error, foo) {
rev = foo.rev;
assert.equal(error, null, 'should have stored foo');
assert.equal(foo.ok, true, 'response should be ok');
assert.ok(foo.rev, 'response should have rev');
assert.end();
});
});
it('should fail to insert again since it already exists', function(assert) {
db.insert({}, 'foobaz', function(error) {
assert.equal(error['statusCode'], 409, 'should be conflict');
assert.equal(error.scope, 'couch', 'scope is couch');
assert.equal(error.error, 'conflict', 'type is conflict');
assert.end();
});
});
it('should be able to use custom params in insert', function(assert) {
db.insert({
foo: 'baz',
_rev: rev
}, {
docName: 'foobaz',
'new_edits': false
}, function(error, foo) {
assert.equal(error, null, 'should have stored foo');
assert.equal(foo.ok, true, 'response should be ok');
assert.ok(foo.rev, 'response should have rev');
assert.end();
});
});
it('should be able to insert functions in docs', function(assert) {
db.insert({
fn: function() { return true; },
fn2: 'function () { return true; }'
}, function(error, fns) {
assert.equal(error, null, 'should have stored foo');
assert.equal(fns.ok, true, 'response should be ok');
assert.ok(fns.rev, 'response should have rev');
db.get(fns.id, function(error, fns) {
assert.equal(fns.fn, fns.fn2, 'fn matches fn2');
assert.equal(error, null, 'should get foo');
assert.end();
});
});
});
it('should be able to stream an insert', function(assert) {
var buffer = '';
var foobar = db.insert({'foo': 'bar'});
function runAssertions(error, foobar) {
assert.equal(error, null, 'should have stored foobar');
assert.ok(foobar.ok, 'this is ok');
assert.ok(foobar.rev, 'and i got revz');
assert.end();
}
foobar.on('data', function(chunk) { buffer += chunk; });
foobar.on('end', function() { runAssertions(null, JSON.parse(buffer)); });
foobar.on('error', runAssertions);
});