Navigation Menu

Skip to content

Commit

Permalink
Add Processor#loadSync()
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Aug 9, 2012
1 parent fb6a27c commit 6a73f44
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 32 deletions.
22 changes: 10 additions & 12 deletions bin/gcs-post-sdf
Expand Up @@ -56,15 +56,13 @@ try {
return process.exit(1);
}

processor.load(batches)
.next(function(result) {
console.log('Status: %s', result.status);
console.log('Added: %s', result.adds);
console.log('Deleted: %s', result.deletes);
process.exit(0);
})
.error(function(error) {
console.log('Fatal error!');
console.log(error.message + '\n' + error.stack);
process.exit(1);
});
try {
var result = processor.loadSync(batches);
console.log('Status: %s', result.status);
console.log('Added: %s', result.adds);
console.log('Deleted: %s', result.deletes);
} catch(error) {
console.log('Fatal error!');
console.log(error.message + '\n' + error.stack);
process.exit(1);
}
25 changes: 25 additions & 0 deletions lib/batch/processor.js
Expand Up @@ -102,6 +102,31 @@ Processor.prototype = {
return self.formatResult(result);
});
},
loadSync: function(batches) {
var commandSets = this.translator.translate(batches);
var result = {
adds: 0,
deletes: 0,
errors: [],
warnings: []
};
commandSets.forEach(function(commandSet) {
try {
this.context.commandSync(commandSet.command, commandSet.options);
switch (commandSet.command) {
case 'load':
result.adds++;
break;
case 'delete':
result.deletes++;
break;
}
} catch(error) {
result.errors.push(error);
}
}, this);
return this.formatResult(result);
},
formatResult: function(result) {
var formattedResult = {
status: 'success',
Expand Down
52 changes: 32 additions & 20 deletions test/batch-processor.test.js
Expand Up @@ -41,28 +41,39 @@ suite('batch/processor/Processor (instance methods)', function() {
assert.equal(processor.databasePath, temporaryDatabase.path);
});

function assertSuccess(result, adds, deletes, expectedDump) {
var expected = {
status: 'success',
adds: adds,
deletes: deletes
};
assert.deepEqual(result, expected);
var dump = context.commandSync('dump', {
tables: 'companies_00000000000000000000000000'
});
assert.equal(dump, expectedDump);
}

test('load add-batches', function(done) {
var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8');
batches = JSON.parse(batches);
processor.load(batches)
.next(function(result) {
var expected = {
status: 'success',
adds: 10,
deletes: 0
};
assert.deepEqual(result, expected);
var dump = context.commandSync('dump', {
tables: 'companies_00000000000000000000000000'
});
assert.equal(dump, schemeDump + '\n' + loadDump);
assertSuccess(result, 10, 0, schemeDump + '\n' + loadDump);
done();
})
.error(function(error) {
done(error);
});
});

test('loadSync add-batches', function() {
var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8');
batches = JSON.parse(batches);
var result = processor.loadSync(batches);
assertSuccess(result, 10, 0, schemeDump + '\n' + loadDump);
});

test('load delete-batches', function(done) {
var batches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8');
batches = JSON.parse(batches);
Expand All @@ -73,23 +84,24 @@ suite('batch/processor/Processor (instance methods)', function() {
return processor.load(batches)
})
.next(function(result) {
var expected = {
status: 'success',
adds: 0,
deletes: 1
};
assert.deepEqual(result, expected);
var dump = context.commandSync('dump', {
tables: 'companies_00000000000000000000000000'
});
assert.equal(dump, schemeDump + '\n' + deletedLoadDump);
assertSuccess(result, 0, 1, schemeDump + '\n' + deletedLoadDump);
done();
})
.error(function(error) {
done(error);
});
});

test('loadSync delete-batches', function() {
var adddBatches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8');
adddBatches = JSON.parse(adddBatches);
processor.loadSync(adddBatches);
var deleteBatches = fs.readFileSync(__dirname + '/fixture/companies/delete.sdf.json', 'UTF-8');
deleteBatches = JSON.parse(deleteBatches);
processor.loadSync(deleteBatches);
assertSuccess(result, 0, 1, schemeDump + '\n' + deletedLoadDump);
});

test('validation, valid batches', function() {
var addBatches = fs.readFileSync(__dirname + '/fixture/companies/add.sdf.json', 'UTF-8');
var deleteBatches = fs.readFileSync(__dirname + '/fixture/companies/delete.sdf.json', 'UTF-8');
Expand Down

0 comments on commit 6a73f44

Please sign in to comment.