From 7b926b296129303c8f0c4154082a58da0f098795 Mon Sep 17 00:00:00 2001 From: himetani_cafe Date: Sat, 23 Jan 2016 18:38:53 +0900 Subject: [PATCH] develop and test db.createFile() --- server/class/DB.js | 100 ++++++++++++++++++++++++++++++++------------------ test/mocha/DB.test.js | 50 +++++++++++++++++++++++-- 2 files changed, 110 insertions(+), 40 deletions(-) diff --git a/server/class/DB.js b/server/class/DB.js index 6519403..67f5a0a 100644 --- a/server/class/DB.js +++ b/server/class/DB.js @@ -40,16 +40,18 @@ function DB() { sayHello: function() { return test; }, + checkFile: checkFile, + checkDirectory: checkDirectory, createFile: createFile, - checkFile: checkFile + test1: test1 /* - removeFile: removeFile, - createDirectory: createDirectory, - removeDirectory: removeDirectory, - getFilename: getFilename, - moveFile: moveFile, - moveDirectory: moveDirectory - */ + removeFile: removeFile, + createDirectory: createDirectory, + removeDirectory: removeDirectory, + getFilename: getFilename, + moveFile: moveFile, + moveDirectory: moveDirectory + */ }; resolve(c); }); @@ -65,17 +67,9 @@ function DB() { */ function createFile(fileName,parentDirectory) { return new Promise(function(resolve, reject) { - var q = { - where: { - name: parentDirectory, - fileType: 0 - } - }; - Files.findOne(q) - .then(function(r) { - if(r === null) { - return Promise.reject(new Error('parentDirectory doesn\'t exist.')); - } + Promise.all([checkFile(fileName, parentDirectory), checkDirectory(parentDirectory)]) + .catch(function(error) { + reject(error); }) .then(function() { var q = { @@ -86,11 +80,8 @@ function DB() { } return Files.create(q) }) - .catch(function(error) { - reject(error); - }) - .then(function(r) { - resolve(r); + .then(function() { + resolve(); }); }); } @@ -104,25 +95,62 @@ function DB() { */ function checkFile(fileName, parentDirectory) { return new Promise(function(resolve, reject) { - var q = { - where: { - name: fileName, - parentDirectory: parentDirectory, - fileType: 1 + var q = { + where: { + name: fileName, + parentDirectory: parentDirectory, + fileType: 1 } - }; - Files.findOne(q) - .then(function(r) { - if(r.dataValues) { - reject(new Error('parentDirectory doesn\'t exist.')); - } else { + }; + Files.findOne(q) + .then(function(r) { + if(r === null) { resolve(); + } else { + reject(new Error("\"" + fileName + "\" has already existed in " + '"' + parentDirectory + "\" directory.")); } - }); + }); }); } + /** + * checkDirectory + * + * @param {string} directory + * @returns {promise} ディレクトリが存在すればresolve、存在しなければreject + */ function checkDirectory(directory) { + return new Promise(function(resolve, reject) { + var q = { + where: { + name: directory, + fileType: 0 + } + }; + Files.findOne(q) + .then(function(r) { + if(r === null) { + reject(new Error('"' + directory + '" directory doesn\'t exist.')); + } else { + resolve(); + } + }); + }); + } + + /** + * test1 + * test用にデータベースのレコードを追加する関数 + * @returns {promise} + */ + function test1() { + var q = { + fileId: uuid.v1(), + name: 'hoge.txt', + parentDirectory: '/', + fileType: 1 + }; + return Files.create(q); } /** diff --git a/test/mocha/DB.test.js b/test/mocha/DB.test.js index 6d53d8f..af4dbf0 100644 --- a/test/mocha/DB.test.js +++ b/test/mocha/DB.test.js @@ -55,7 +55,7 @@ db = r; }) .then(function() { - return db.createFile('hoge.txt', '/'); + return db.test1(); }) }); @@ -67,6 +67,33 @@ + var checkDirectory = ` + /** + * checkDirectory + * + * @param {string} directory + * @returns {promise} ディレクトリが存在すればresolve、存在しなければreject + */ + `; + describe(checkDirectory, function() { + var db; + before(function() { + return DB() + .then(function(r) { + db = r; + }) + .then(function() { + return db.test1(); + }) + }); + + it('should be rejected when have the same name file in a directory', function() { + return db.checkDirectory('hage').should.be.rejected; + }); + }); + + + var createFile = ` /** * createFile @@ -77,14 +104,29 @@ */ `; describe(createFile, function() { + var db; + before(function() { + return DB() + .then(function(r) { + db = r; + }) + .then(function() { + return db.test1(); + }) + }); + /* it('should return object which have proverty "dataValues"', function() { - return expect(db.createFile('hage.txt','/')).to.eventually.have.property('dataValues'); + return expect(db.createFile('hage.txt','/')).to.eventually.have.property('dataValues'); }); + */ it('should be rejected when "parentDirectory" doesn\'t exist', function() { - return db.createFile('hoge.txt', 'hoge').should.be.rejected; + return db.createFile('hoge.txt', 'hoge').should.be.rejectedWith(Error, '"hoge" directory doesn\'t exist.'); }); - */ + it('should be rejected when a file has already existed in a directory.', function() { + return db.createFile('hoge.txt', '/').should.be.rejectedWith(Error, '"hoge.txt" has already existed in "/" directory.'); + }); + }); }); })(); -- 2.11.0