add tests and gitlab ci
This commit is contained in:
		
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | node_modules/ | ||||||
|  | test/data | ||||||
|  | pages/ | ||||||
|  | coverage/ | ||||||
|  | public/ | ||||||
							
								
								
									
										43
									
								
								.gitlab.ci.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								.gitlab.ci.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | image: hosttoday/ht-docker-node:npmts | ||||||
|  |  | ||||||
|  | stages: | ||||||
|  | - test | ||||||
|  | - release | ||||||
|  |  | ||||||
|  | before_script: | ||||||
|  |   - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 | ||||||
|  |   - echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list | ||||||
|  |   - sudo apt-get update | ||||||
|  |   - sudo apt-get install -y mongodb-org | ||||||
|  |  | ||||||
|  | testLEGACY: | ||||||
|  |   stage: test | ||||||
|  |   script: | ||||||
|  |     - npmci test legacy | ||||||
|  |   tags: | ||||||
|  |     - docker | ||||||
|  |   allow_failure: true | ||||||
|  |  | ||||||
|  | testLTS: | ||||||
|  |   stage: test | ||||||
|  |   script: | ||||||
|  |     - npmci test lts | ||||||
|  |   tags: | ||||||
|  |     - docker | ||||||
|  |      | ||||||
|  | testSTABLE: | ||||||
|  |   stage: test | ||||||
|  |   script: | ||||||
|  |     - npmci test stable | ||||||
|  |   tags: | ||||||
|  |     - docker | ||||||
|  |  | ||||||
|  | release: | ||||||
|  |   stage: release | ||||||
|  |   environment: npm_registry | ||||||
|  |   script: | ||||||
|  |     - npmci publish | ||||||
|  |   only: | ||||||
|  |     - tags | ||||||
|  |   tags: | ||||||
|  |     - docker | ||||||
							
								
								
									
										14
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | /// <reference types="q" /> | ||||||
|  | import * as plugins from './smartdata.plugins'; | ||||||
|  | export declare class DbCollection<T> { | ||||||
|  |     constructor(nameArg: string, db: plugins.mongodb.Db); | ||||||
|  | } | ||||||
|  | export declare type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed'; | ||||||
|  | export declare class DbConnection { | ||||||
|  |     dbUrl: string; | ||||||
|  |     db: plugins.mongodb.Db; | ||||||
|  |     status: TDbConnectionStatus; | ||||||
|  |     constructor(dbUrl: string); | ||||||
|  |     connect(): plugins.q.Promise<any>; | ||||||
|  |     close(): plugins.q.Promise<any>; | ||||||
|  | } | ||||||
							
								
								
									
										35
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | "use strict"; | ||||||
|  | const plugins = require('./smartdata.plugins'); | ||||||
|  | class DbCollection { | ||||||
|  |     constructor(nameArg, db) { | ||||||
|  |         let collection = db.collection(nameArg); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.DbCollection = DbCollection; | ||||||
|  | class DbConnection { | ||||||
|  |     constructor(dbUrl) { | ||||||
|  |         this.dbUrl = dbUrl; | ||||||
|  |     } | ||||||
|  |     connect() { | ||||||
|  |         let done = plugins.q.defer(); | ||||||
|  |         plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { | ||||||
|  |             if (err) { | ||||||
|  |                 console.log(err); | ||||||
|  |             } | ||||||
|  |             plugins.assert.equal(null, err); | ||||||
|  |             this.db = db; | ||||||
|  |             plugins.beautylog.success(`connected to database at ${this.dbUrl}`); | ||||||
|  |             done.resolve(this.db); | ||||||
|  |         }); | ||||||
|  |         return done.promise; | ||||||
|  |     } | ||||||
|  |     close() { | ||||||
|  |         let done = plugins.q.defer(); | ||||||
|  |         this.db.close(); | ||||||
|  |         plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`); | ||||||
|  |         done.resolve(); | ||||||
|  |         return done.promise; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | exports.DbConnection = DbConnection; | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxPQUFPLFdBQU0scUJBRXpCLENBQUMsQ0FGNkM7QUFFOUM7SUFDSSxZQUFZLE9BQWUsRUFBRSxFQUFzQjtRQUMvQyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUM7QUFDTCxDQUFDO0FBSlksb0JBQVksZUFJeEIsQ0FBQTtBQUlEO0lBS0ksWUFBWSxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3BELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1lBQ1osT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDZixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztBQUNMLENBQUM7QUE1Qlksb0JBQVksZUE0QnhCLENBQUEifQ== | ||||||
							
								
								
									
										5
									
								
								dist/smartdata.plugins.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								dist/smartdata.plugins.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | import 'typings-global'; | ||||||
|  | export import assert = require('assert'); | ||||||
|  | export import beautylog = require('beautylog'); | ||||||
|  | export import mongodb = require('mongodb'); | ||||||
|  | export import q = require('q'); | ||||||
							
								
								
									
										7
									
								
								dist/smartdata.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								dist/smartdata.plugins.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | "use strict"; | ||||||
|  | require('typings-global'); | ||||||
|  | exports.assert = require('assert'); | ||||||
|  | exports.beautylog = require('beautylog'); | ||||||
|  | exports.mongodb = require('mongodb'); | ||||||
|  | exports.q = require('q'); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRkYXRhLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGRhdGEucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFDUCxDQUFDLENBRHNCO0FBQ1QsY0FBTSxXQUFXLFFBQVEsQ0FBQyxDQUFBO0FBQzFCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUE7QUFDaEMsZUFBTyxXQUFXLFNBQVMsQ0FBQyxDQUFBO0FBQzVCLFNBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQSJ9 | ||||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							| @@ -3,6 +3,7 @@ | |||||||
|   "version": "1.0.0", |   "version": "1.0.0", | ||||||
|   "description": "do more with data", |   "description": "do more with data", | ||||||
|   "main": "dist/index.js", |   "main": "dist/index.js", | ||||||
|  |   "typings":"dist/index.d.ts", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "(npmts)" |     "test": "(npmts)" | ||||||
|   }, |   }, | ||||||
| @@ -15,5 +16,20 @@ | |||||||
|   "bugs": { |   "bugs": { | ||||||
|     "url": "https://gitlab.com/pushrocks/smartdata/issues" |     "url": "https://gitlab.com/pushrocks/smartdata/issues" | ||||||
|   }, |   }, | ||||||
|   "homepage": "https://gitlab.com/pushrocks/smartdata#README" |   "homepage": "https://gitlab.com/pushrocks/smartdata#README", | ||||||
|  |   "dependencies": { | ||||||
|  |     "@types/mongodb": "^2.1.32", | ||||||
|  |     "@types/q": "0.0.30", | ||||||
|  |     "beautylog": "^5.0.23", | ||||||
|  |     "mongodb": "^2.2.9", | ||||||
|  |     "q": "^1.4.1", | ||||||
|  |     "typings-global": "^1.0.14" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "@types/shelljs": "^0.3.30", | ||||||
|  |     "@types/should": "^8.1.29", | ||||||
|  |     "shelljs": "^0.7.4", | ||||||
|  |     "should": "^11.1.0", | ||||||
|  |     "typings-test": "^1.0.3" | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/test.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | import 'typings-test'; | ||||||
							
								
								
									
										29
									
								
								test/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								test/test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | "use strict"; | ||||||
|  | require('typings-test'); | ||||||
|  | const shelljs = require('shelljs'); | ||||||
|  | const smartdata = require('../dist/index'); | ||||||
|  | let mongoChildProcess; | ||||||
|  | let testDbConnection; | ||||||
|  | describe('mongodb', function () { | ||||||
|  |     it('should start mongodb', function (done) { | ||||||
|  |         mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017', { async: true }); | ||||||
|  |         setTimeout(() => { done(); }, 1500); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | describe('smartdata', function () { | ||||||
|  |     it('should establish a connection to mongodb', function (done) { | ||||||
|  |         testDbConnection = new smartdata.DbConnection('mongodb://localhost:27017/smartdata'); | ||||||
|  |         testDbConnection.connect().then(() => { done(); }); | ||||||
|  |     }); | ||||||
|  |     it('should create a collection', function () { | ||||||
|  |     }); | ||||||
|  |     it('should close the db Connection', function () { | ||||||
|  |         testDbConnection.close(); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | describe('mongodb', function () { | ||||||
|  |     it('should kill mongodb', function () { | ||||||
|  |         mongoChildProcess.kill('SIGTERM'); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLE1BQVksT0FBTyxXQUFNLFNBQ3pCLENBQUMsQ0FEaUM7QUFFbEMsTUFBWSxTQUFTLFdBQU0sZUFHM0IsQ0FBQyxDQUh5QztBQUcxQyxJQUFJLGlCQUFpQixDQUFBO0FBQ3JCLElBQUksZ0JBQXdDLENBQUE7QUFHNUMsUUFBUSxDQUFDLFNBQVMsRUFBQztJQUNmLEVBQUUsQ0FBQyxzQkFBc0IsRUFBQyxVQUFTLElBQUk7UUFDbkMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsRUFBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1FBQzFGLFVBQVUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFBLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQUE7QUFDRixRQUFRLENBQUMsV0FBVyxFQUFDO0lBQ2pCLEVBQUUsQ0FBQywwQ0FBMEMsRUFBQyxVQUFTLElBQUk7UUFDdkQsZ0JBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsWUFBWSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7UUFDcEYsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyw0QkFBNEIsRUFBQztJQUVoQyxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBQztRQUNoQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLFNBQVMsRUFBQztJQUNmLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQztRQUNyQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckMsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSJ9 | ||||||
							
								
								
									
										34
									
								
								test/test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								test/test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | import 'typings-test' | ||||||
|  | import * as shelljs from 'shelljs' | ||||||
|  | import * as should from 'should' | ||||||
|  | import * as smartdata from '../dist/index' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | let mongoChildProcess | ||||||
|  | let testDbConnection: smartdata.DbConnection | ||||||
|  |  | ||||||
|  |  | ||||||
|  | describe('mongodb',function(){ | ||||||
|  |     it('should start mongodb',function(done){ | ||||||
|  |         mongoChildProcess = shelljs.exec('mongod --dbpath=./test/data --port 27017',{async: true}) | ||||||
|  |         setTimeout(() => { done() }, 1500) | ||||||
|  |     }) | ||||||
|  | }) | ||||||
|  | describe('smartdata',function(){ | ||||||
|  |     it('should establish a connection to mongodb',function(done){ | ||||||
|  |         testDbConnection = new smartdata.DbConnection('mongodb://localhost:27017/smartdata') | ||||||
|  |         testDbConnection.connect().then(() => { done() }) | ||||||
|  |     }) | ||||||
|  |     it('should create a collection',function(){ | ||||||
|  |  | ||||||
|  |     }) | ||||||
|  |     it('should close the db Connection',function(){ | ||||||
|  |         testDbConnection.close() | ||||||
|  |     }) | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | describe('mongodb',function(){ | ||||||
|  |     it('should kill mongodb',function(){ | ||||||
|  |         mongoChildProcess.kill('SIGTERM') | ||||||
|  |     }) | ||||||
|  | }) | ||||||
							
								
								
									
										39
									
								
								ts/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								ts/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | import * as plugins from './smartdata.plugins' | ||||||
|  |  | ||||||
|  | export class DbCollection<T> { | ||||||
|  |     constructor(nameArg: string, db: plugins.mongodb.Db) { | ||||||
|  |         let collection = db.collection(nameArg) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export type TDbConnectionStatus = 'disconnected' | 'connected' | 'failed' | ||||||
|  |  | ||||||
|  | export class DbConnection { | ||||||
|  |     dbUrl: string | ||||||
|  |     db: plugins.mongodb.Db | ||||||
|  |     status: TDbConnectionStatus | ||||||
|  |  | ||||||
|  |     constructor(dbUrl: string) { | ||||||
|  |         this.dbUrl = dbUrl | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     connect(): plugins.q.Promise<any> { | ||||||
|  |         let done = plugins.q.defer() | ||||||
|  |         plugins.mongodb.MongoClient.connect(this.dbUrl, (err, db) => { | ||||||
|  |             if (err) { console.log(err) } | ||||||
|  |             plugins.assert.equal(null, err) | ||||||
|  |             this.db = db | ||||||
|  |             plugins.beautylog.success(`connected to database at ${this.dbUrl}`) | ||||||
|  |             done.resolve(this.db) | ||||||
|  |         }) | ||||||
|  |         return done.promise | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     close(): plugins.q.Promise<any> { | ||||||
|  |         let done = plugins.q.defer() | ||||||
|  |         this.db.close() | ||||||
|  |         plugins.beautylog.ok(`disconnected to database at ${this.dbUrl}`) | ||||||
|  |         done.resolve() | ||||||
|  |         return done.promise | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								ts/smartdata.plugins.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								ts/smartdata.plugins.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | import 'typings-global' | ||||||
|  | export import assert = require('assert') | ||||||
|  | export import beautylog = require('beautylog') | ||||||
|  | export import mongodb = require('mongodb') | ||||||
|  | export import q = require('q') | ||||||
							
								
								
									
										3
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | { | ||||||
|  |     "extends": "tslint-config-standard" | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user