UNPKG

makedrive

Version:
100 lines (81 loc) 2.94 kB
var expect = require('chai').expect; var util = require('../../lib/util.js'); var MakeDrive = require('../../../client/src'); var Filer = require('../../../lib/filer.js'); describe('MakeDrive Client - sync many small files', function(){ var provider; beforeEach(function(done) { util.ready(function() { provider = new Filer.FileSystem.providers.Memory(util.username()); done(); }); }); afterEach(function() { provider = null; }); function smallFile(number) { return '<!doctype html> '+ '<head> '+ '<meta charset="utf-8"> '+ '<title> Small File ' + number + ' </title> '+ '</head> '+ '<body> '+ '<p>This is small file ' + number + '.</p> '+ '</body> '+ '</html>'; } /** * This test creates 100 small files in a dir, syncs, and checks that * they exist on the server. It then removes them, and makes sure a * downstream sync brings them back. */ it('should sync many small files', function(done) { util.authenticatedConnection(function( err, result ) { expect(err).not.to.exist; var fs = MakeDrive.fs({provider: provider, manual: true, forceCreate: true}); var sync = fs.sync; // Make a layout with /project and 100 small html files inside var layout = {}; for(var i=0; i<100; i++) { layout['/project/small-file' + i + '.html'] = smallFile(i); } sync.once('connected', function onConnected() { util.createFilesystemLayout(fs, layout, function(err) { expect(err).not.to.exist; expect(sync.state).to.equal(sync.SYNC_CONNECTED); sync.request(); }); }); sync.once('error', function onError(err){ expect(err).not.to.exist; }); sync.once('completed', function onUpstreamCompleted() { util.ensureRemoteFilesystem(layout, result.jar, function(err) { expect(err).not.to.exist; sync.disconnect(); }); }); sync.once('disconnected', function onDisconnected() { util.deleteFilesystemLayout(fs, null, function(err) { expect(err).not.to.exist; // Re-sync with server and make sure we get our deep dir back sync.once('connected', function onSecondDownstreamSync() { sync.once('disconnected', function onSecondDisconnected() { util.ensureFilesystem(fs, layout, function(err) { expect(err).not.to.exist; done(); }); }); sync.disconnect(); }); // Get a new token for this second connection util.getWebsocketToken(result, function(err, result) { expect(err).not.to.exist; sync.connect(util.socketURL, result.token); }); }); }); sync.connect(util.socketURL, result.token); }); }); });