OSDN Git Service

[Test]: db.createFile v0.3.0p0006
authorhimetani_cafe <fumifumi@yasunaga-lab.bio.kyutech.ac.jp>
Sat, 23 Jan 2016 05:38:47 +0000 (14:38 +0900)
committerhimetani_cafe <fumifumi@yasunaga-lab.bio.kyutech.ac.jp>
Sat, 23 Jan 2016 05:38:47 +0000 (14:38 +0900)
 Please enter the commit message for your changes. Lines starting
 with '' will be ignored, and an empty message aborts the commit.
 On branch master
 Changes to be committed:
modified:   package.json
modified:   server/class/DB.js
modified:   test/mocha/DB.test.js

package.json
server/class/DB.js
test/mocha/DB.test.js

index ad2c162..caa0ede 100644 (file)
     "co": "^4.6.0",
     "commander": "^2.9.0",
     "express": "^4.13.3",
+    "node-uuid": "^1.4.7",
     "sequelize": "^3.18.0",
     "socket.io": "^1.3.7",
     "sqlite3": "^3.1.1"
   },
   "devDependencies": {
     "chai": "^3.4.1",
+    "chai-as-promised": "^5.2.0",
     "gulp": "^3.9.0",
     "gulp-sass": "^2.1.1",
     "mocha": "^2.3.4",
index c7d2811..991b180 100644 (file)
@@ -9,6 +9,7 @@ function DB() {
     var fs = require('fs');
     var Sequelize = require('sequelize');
     var co = require('co');
+    var uuid = require('node-uuid');
 
     var sequelize;
     var test = 'hello';
@@ -17,27 +18,70 @@ function DB() {
         dialect: 'sqlite'
     };
 
+    /**
+     * sync
+     *
+     * @returns {promise}<DBオブジェクトの関数群のオブジェクトをresolveする>
+     */
     function sync() {
         return new Promise(function(resolve) {
-            Promise.all([Directory.sync(), File.sync()])
+            Files.sync()
             .then(function() {
                 var root = {
-                    name: 'root',
-                    parent: ''
+                    fileId: uuid.v1(),
+                    name: '/',
+                    parentDirectory: '',
+                    fileType: 0
                 };
-                return Directory.create(root);
+                return Files.create(root);
             })
             .then(function() {
                 var c = {
                     sayHello: function() {
                         return test;
-                    }
+                    },
+                    createFile: createFile
+                    /*
+                    removeFile: removeFile,
+                    createDirectory: createDirectory,
+                    removeDirectory: removeDirectory,
+                    getFilename: getFilename,
+                    moveFile: moveFile,
+                    moveDirectory: moveDirectory
+                    */
                 };
                 resolve(c);
             });
         });
     }
 
+    /**
+     * createFile
+     *
+     * @param name
+     * @param directory
+     * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする>
+     */
+    function createFile(fileName,parentDirectory) {
+        return new Promise(function(resolve) {
+            var q = {
+                fileId: uuid.v1(),
+                name: fileName,
+                parentDirectory: parentDirectory,
+                fileType: 0
+            }
+            Files.create(q)
+            .then(function(r) {
+                resolve(r);
+            });
+        });
+    }
+
+    /**
+     * 
+     * @constructor
+     * @returns {promise}
+     */
     if(process.env['NODE_ENV'] === 'production') {
         var dbPath = __dirname + '/../../user-specific-files/db/db.workspace';
         dbOption.storage = dbPath;
@@ -52,7 +96,7 @@ function DB() {
 
     sequelize = new Sequelize('','','', dbOption);
 
-    var File = sequelize.define('file', {
+    var Files = sequelize.define('file', {
         fileId: {
             type: Sequelize.UUID,
             field: 'file_id',
@@ -63,29 +107,18 @@ function DB() {
             field: 'name',
             allowNull: false
         },
-        directoryName: {
+        parentDirectory: {
             type: Sequelize.STRING,
-            field: 'directory_name',
+            field: 'parent_directory',
             allowNull: false
-        }
-    });
-
-    var Directory = sequelize.define('directory', {
-        name: {
-            type: Sequelize.STRING,
-            field: 'name',
-            primaryKey: true
         },
-        parent: {
-            type: Sequelize.STRING,
-            field: 'parent',
+        fileType: {
+            type: Sequelize.ENUM(0,1),
+            field: 'file_type',
             allowNull: false
         }
     });
 
-    Directory.hasMany(File, {foreignKey: 'directoryName'});
-    File.belongsTo(Directory, {foreignKey: 'name'});
-
     return sync();
 }
 
index 15805c7..03938f4 100644 (file)
@@ -1,20 +1,52 @@
 (function() {
     'use strict';
     var DB = require('../../server/class/DB');
-    var expect = require('chai').expect;
+    var chai = require('chai');
+    var chaiAsPromised = require('chai-as-promised');
+    chai.use(chaiAsPromised);
+    var expect = chai.expect;
+    var should = chai.should;
 
     //process.env['NODE_ENV'] = 'production';
-    var db;
-    before(function() {
-        return DB()
-        .then(function(r) {
-            db = r;
-        });
-    });
+
+    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() {
-        it('test of test', function() {
-            expect(db.sayHello()).to.equal('hello');
+        var db;
+        before(function() {
+            return DB()
+            .then(function(r) {
+                db = r;
+            });
+        });
+
+        describe(constructor, function() {
+            it('should return hello when call sayHello', function() {
+                expect(db.sayHello()).to.equal('hello');
+            });
+        });
+        describe(createFile, function() {
+            it('should return object which have proverty "dataValues"', function() {
+                return expect(db.createFile('hage.txt','root')).to.eventually.have.property('dataValues');
+            });
         });
     });
 })();