From a34ba659c9f29916e2b607f2787846d968ef63fe Mon Sep 17 00:00:00 2001 From: himetani_cafe Date: Sat, 23 Jan 2016 17:13:38 +0900 Subject: [PATCH] develop checkFile() and tested it. --- server/class/DB.js | 65 +++++++++++++++++++++++++++++------ test/mocha/DB.test.js | 94 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 120 insertions(+), 39 deletions(-) diff --git a/server/class/DB.js b/server/class/DB.js index 991b180..42d5519 100644 --- a/server/class/DB.js +++ b/server/class/DB.js @@ -40,7 +40,8 @@ function DB() { sayHello: function() { return test; }, - createFile: createFile + createFile: createFile, + checkFile: checkFile /* removeFile: removeFile, createDirectory: createDirectory, @@ -58,19 +59,36 @@ function DB() { /** * createFile * - * @param name - * @param directory - * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> + * @param fileName + * @param parentDirectory + * @returns {promise} */ function createFile(fileName,parentDirectory) { - return new Promise(function(resolve) { + return new Promise(function(resolve, reject) { var q = { - fileId: uuid.v1(), - name: fileName, - parentDirectory: parentDirectory, - fileType: 0 - } - Files.create(q) + where: { + name: parentDirectory, + fileType: 0 + } + }; + Files.findOne(q) + .then(function(r) { + if(r === null) { + return Promise.reject(new Error('parentDirectory doesn\'t exist.')); + } + }) + .then(function() { + var q = { + fileId: uuid.v1(), + name: fileName, + parentDirectory: parentDirectory, + fileType: 0 + } + return Files.create(q) + }) + .catch(function(error) { + reject(error); + }) .then(function(r) { resolve(r); }); @@ -78,6 +96,31 @@ function DB() { } /** + * checkFile + * 同一ディレクトリに同名のファイルが存在するかどうか調べる + * @param {string}fileName + * @param {string}parentDirectory + * @returns {promise} + */ + function checkFile(fileName, parentDirectory) { + return new Promise(function(resolve, reject) { + var q = { + where: { + name: fileName, + parentDirectory: parentDirectory + } + }; + Files.findOne(q) + .then(function(r) { + if(r.dataValues) { + reject(new Error('parentDirectory doesn\'t exist.')); + } else { + resolve(); + } + }); + }); + } + /** * * @constructor * @returns {promise} diff --git a/test/mocha/DB.test.js b/test/mocha/DB.test.js index 03938f4..6d53d8f 100644 --- a/test/mocha/DB.test.js +++ b/test/mocha/DB.test.js @@ -5,48 +5,86 @@ var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); var expect = chai.expect; - var should = chai.should; + chai.should(); //process.env['NODE_ENV'] = 'production'; - var constructor = ` - /** - * createFile - * - * @param name - * @param directory - * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> - */ - `; - - var createFile = ` - /** - * createFile - * - * @param name - * @param directory - * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> - */ - `; + describe('DB クラス', function() { - var db; - before(function() { - return DB() - .then(function(r) { - db = r; - }); - }); + var constructor = ` + /** + * createFile + * + * @param name + * @param directory + * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> + */ + `; describe(constructor, function() { + var db; + before(function() { + return DB() + .then(function(r) { + db = r; + }); + }); + it('should return hello when call sayHello', function() { expect(db.sayHello()).to.equal('hello'); }); }); + + + + var checkFile = ` + /** + * checkFile + * 同一ディレクトリに同名のファイルが存在するかどうか調べる + * @param {string}fileName + * @param {string}parentDirectory + * @returns {promise} + */ + `; + describe(checkFile, function() { + var db; + before(function() { + return DB() + .then(function(r) { + db = r; + }) + .then(function() { + return db.createFile('hoge.txt', '/'); + }) + }); + + + it('should be rejected when have the same name file in a directory', function() { + return db.checkFile('hoge.txt', '/').should.be.rejected; + }); + }); + + + + var createFile = ` + /** + * createFile + * + * @param name + * @param directory + * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> + */ + `; describe(createFile, function() { + /* it('should return object which have proverty "dataValues"', function() { - return expect(db.createFile('hage.txt','root')).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; }); + */ }); }); })(); -- 2.11.0