UNPKG

antfarm

Version:

File automation framework for ants.

123 lines (93 loc) 3.17 kB
var should = require("chai").should(); var Antfarm = require("./../../lib/antfarm"); var tmp = require('tmp'); var fs = require("fs"); var path = require('path'); //var mock = require('mock-fs'); describe('Tunnels', function() { var af, tunnel, tmpobj, tempFileObj; var options = { log_out_level: "error" }; before("make temporary log directory", function(done){ tmp.dir({ unsafeCleanup: true }, function(err, dir) { if (err) return done(err); setTimeout(function(){ options.log_dir = dir; done() }, 600); }); }); beforeEach(function() { af = new Antfarm(options); tunnel = af.createTunnel("Test tunnel"); tmpobj = tmp.dirSync(); tempFileObj = tmp.fileSync(); }); afterEach(function() { tmpobj.removeCallback(); tempFileObj.removeCallback(); }); after(function(){ // mock.restore(); }); it('should get the tunnel _name', function () { tunnel.name.should.equal("Test tunnel"); }); it('should add a run callback to the run list', function () { tunnel.run(function(){}); tunnel.runList.length.should.equal(1); }); it('should add multiple run callbacks to the run list', function () { tunnel.run(function(){}); tunnel.run(function(){}); tunnel.run(function(){}); tunnel.runList.length.should.equal(3); }); it('should execute a run callback', function () { var myObj = {num: 0}; var myString = ""; tunnel.run(function(){ myObj.num++; myString = "Something"; }); tunnel.executeRun(); // force run myObj.num.should.equal(1); myString.should.equal("Something"); }); describe('Nests', function() { var folder1, folder2; var tmpDir; beforeEach(function(done) { folder1 = af.createFolderNest(tmpobj.name); folder2 = af.createFolderNest(tmpobj.name); tmp.dir({ unsafeCleanup: true }, function(err, dir) { if (err) return done(err); tmpDir = dir; setTimeout(done, 600); }); }); it('should be able to watch nests', function() { tunnel.watch(folder1); tunnel.nests.length.should.be.equal(1); tunnel.watch(folder2); tunnel.nests.length.should.be.equal(2); }); it('should run on a nest arrival when watching', function(done) { var tn = af.createTunnel("Watch tunnel"); tn.watch(af.createFolderNest(tmpDir)); var obj = {num:0}; tn.runSync(function(job){ obj.num++; job.name.should.equal("dummy.tmp"); }); tn.runSync(function(){ obj.num.should.equal(1); }); var temp_file_path = tmpDir+"/dummy.tmp"; fs.writeFileSync(temp_file_path, "Some dummy data."); fs.unlinkSync(temp_file_path); done(); }); }); });