This repository is for zephyr, which is implemented for a GUI of Eos.
Revisión | c88556b36a5c5405bef945b8e6d0df344be7f176 (tree) |
---|---|
Tiempo | 2016-01-23 14:38:47 |
Autor | himetani_cafe <fumifumi@yasu...> |
Commiter | himetani_cafe |
[Test]: db.createFile
modified: package.json
modified: server/class/DB.js
modified: test/mocha/DB.test.js
@@ -19,12 +19,14 @@ | ||
19 | 19 | "co": "^4.6.0", |
20 | 20 | "commander": "^2.9.0", |
21 | 21 | "express": "^4.13.3", |
22 | + "node-uuid": "^1.4.7", | |
22 | 23 | "sequelize": "^3.18.0", |
23 | 24 | "socket.io": "^1.3.7", |
24 | 25 | "sqlite3": "^3.1.1" |
25 | 26 | }, |
26 | 27 | "devDependencies": { |
27 | 28 | "chai": "^3.4.1", |
29 | + "chai-as-promised": "^5.2.0", | |
28 | 30 | "gulp": "^3.9.0", |
29 | 31 | "gulp-sass": "^2.1.1", |
30 | 32 | "mocha": "^2.3.4", |
@@ -9,6 +9,7 @@ function DB() { | ||
9 | 9 | var fs = require('fs'); |
10 | 10 | var Sequelize = require('sequelize'); |
11 | 11 | var co = require('co'); |
12 | + var uuid = require('node-uuid'); | |
12 | 13 | |
13 | 14 | var sequelize; |
14 | 15 | var test = 'hello'; |
@@ -17,27 +18,70 @@ function DB() { | ||
17 | 18 | dialect: 'sqlite' |
18 | 19 | }; |
19 | 20 | |
21 | + /** | |
22 | + * sync | |
23 | + * | |
24 | + * @returns {promise}<DBオブジェクトの関数群のオブジェクトをresolveする> | |
25 | + */ | |
20 | 26 | function sync() { |
21 | 27 | return new Promise(function(resolve) { |
22 | - Promise.all([Directory.sync(), File.sync()]) | |
28 | + Files.sync() | |
23 | 29 | .then(function() { |
24 | 30 | var root = { |
25 | - name: 'root', | |
26 | - parent: '' | |
31 | + fileId: uuid.v1(), | |
32 | + name: '/', | |
33 | + parentDirectory: '', | |
34 | + fileType: 0 | |
27 | 35 | }; |
28 | - return Directory.create(root); | |
36 | + return Files.create(root); | |
29 | 37 | }) |
30 | 38 | .then(function() { |
31 | 39 | var c = { |
32 | 40 | sayHello: function() { |
33 | 41 | return test; |
34 | - } | |
42 | + }, | |
43 | + createFile: createFile | |
44 | + /* | |
45 | + removeFile: removeFile, | |
46 | + createDirectory: createDirectory, | |
47 | + removeDirectory: removeDirectory, | |
48 | + getFilename: getFilename, | |
49 | + moveFile: moveFile, | |
50 | + moveDirectory: moveDirectory | |
51 | + */ | |
35 | 52 | }; |
36 | 53 | resolve(c); |
37 | 54 | }); |
38 | 55 | }); |
39 | 56 | } |
40 | 57 | |
58 | + /** | |
59 | + * createFile | |
60 | + * | |
61 | + * @param name | |
62 | + * @param directory | |
63 | + * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> | |
64 | + */ | |
65 | + function createFile(fileName,parentDirectory) { | |
66 | + return new Promise(function(resolve) { | |
67 | + var q = { | |
68 | + fileId: uuid.v1(), | |
69 | + name: fileName, | |
70 | + parentDirectory: parentDirectory, | |
71 | + fileType: 0 | |
72 | + } | |
73 | + Files.create(q) | |
74 | + .then(function(r) { | |
75 | + resolve(r); | |
76 | + }); | |
77 | + }); | |
78 | + } | |
79 | + | |
80 | + /** | |
81 | + * | |
82 | + * @constructor | |
83 | + * @returns {promise} | |
84 | + */ | |
41 | 85 | if(process.env['NODE_ENV'] === 'production') { |
42 | 86 | var dbPath = __dirname + '/../../user-specific-files/db/db.workspace'; |
43 | 87 | dbOption.storage = dbPath; |
@@ -52,7 +96,7 @@ function DB() { | ||
52 | 96 | |
53 | 97 | sequelize = new Sequelize('','','', dbOption); |
54 | 98 | |
55 | - var File = sequelize.define('file', { | |
99 | + var Files = sequelize.define('file', { | |
56 | 100 | fileId: { |
57 | 101 | type: Sequelize.UUID, |
58 | 102 | field: 'file_id', |
@@ -63,29 +107,18 @@ function DB() { | ||
63 | 107 | field: 'name', |
64 | 108 | allowNull: false |
65 | 109 | }, |
66 | - directoryName: { | |
110 | + parentDirectory: { | |
67 | 111 | type: Sequelize.STRING, |
68 | - field: 'directory_name', | |
112 | + field: 'parent_directory', | |
69 | 113 | allowNull: false |
70 | - } | |
71 | - }); | |
72 | - | |
73 | - var Directory = sequelize.define('directory', { | |
74 | - name: { | |
75 | - type: Sequelize.STRING, | |
76 | - field: 'name', | |
77 | - primaryKey: true | |
78 | 114 | }, |
79 | - parent: { | |
80 | - type: Sequelize.STRING, | |
81 | - field: 'parent', | |
115 | + fileType: { | |
116 | + type: Sequelize.ENUM(0,1), | |
117 | + field: 'file_type', | |
82 | 118 | allowNull: false |
83 | 119 | } |
84 | 120 | }); |
85 | 121 | |
86 | - Directory.hasMany(File, {foreignKey: 'directoryName'}); | |
87 | - File.belongsTo(Directory, {foreignKey: 'name'}); | |
88 | - | |
89 | 122 | return sync(); |
90 | 123 | } |
91 | 124 |
@@ -1,20 +1,52 @@ | ||
1 | 1 | (function() { |
2 | 2 | 'use strict'; |
3 | 3 | var DB = require('../../server/class/DB'); |
4 | - var expect = require('chai').expect; | |
4 | + var chai = require('chai'); | |
5 | + var chaiAsPromised = require('chai-as-promised'); | |
6 | + chai.use(chaiAsPromised); | |
7 | + var expect = chai.expect; | |
8 | + var should = chai.should; | |
5 | 9 | |
6 | 10 | //process.env['NODE_ENV'] = 'production'; |
7 | - var db; | |
8 | - before(function() { | |
9 | - return DB() | |
10 | - .then(function(r) { | |
11 | - db = r; | |
12 | - }); | |
13 | - }); | |
11 | + | |
12 | + var constructor = ` | |
13 | + /** | |
14 | + * createFile | |
15 | + * | |
16 | + * @param name | |
17 | + * @param directory | |
18 | + * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> | |
19 | + */ | |
20 | + `; | |
21 | + | |
22 | + var createFile = ` | |
23 | + /** | |
24 | + * createFile | |
25 | + * | |
26 | + * @param name | |
27 | + * @param directory | |
28 | + * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする> | |
29 | + */ | |
30 | + `; | |
14 | 31 | |
15 | 32 | describe('DB クラス', function() { |
16 | - it('test of test', function() { | |
17 | - expect(db.sayHello()).to.equal('hello'); | |
33 | + var db; | |
34 | + before(function() { | |
35 | + return DB() | |
36 | + .then(function(r) { | |
37 | + db = r; | |
38 | + }); | |
39 | + }); | |
40 | + | |
41 | + describe(constructor, function() { | |
42 | + it('should return hello when call sayHello', function() { | |
43 | + expect(db.sayHello()).to.equal('hello'); | |
44 | + }); | |
45 | + }); | |
46 | + describe(createFile, function() { | |
47 | + it('should return object which have proverty "dataValues"', function() { | |
48 | + return expect(db.createFile('hage.txt','root')).to.eventually.have.property('dataValues'); | |
49 | + }); | |
18 | 50 | }); |
19 | 51 | }); |
20 | 52 | })(); |