Skip to content

Commit

Permalink
feat: Add a base store to be overriden
Browse files Browse the repository at this point in the history
  • Loading branch information
eastolfi committed Oct 24, 2017
1 parent eba51a0 commit bcf1148
Show file tree
Hide file tree
Showing 11 changed files with 365 additions and 1 deletion.
3 changes: 2 additions & 1 deletion index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { MongoPortable } from "./src/core";
import { BaseStore } from "./src/store"

try {
if (window) {
window["MongoPortable"] = MongoPortable;
}
} catch(e) { /* window not found -> not a browser environment */ }

export { MongoPortable };
export { MongoPortable, BaseStore };
49 changes: 49 additions & 0 deletions src/store/BaseStore.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/store/BaseStore.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions src/store/BaseStore.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import * as Promise from "promise";

import { IAbstractStore } from "./IAbstractStore";

export class BaseStore implements IAbstractStore {
createCollection(event): boolean | Promise<boolean> {
return Promise.resolve(true);
}

insert(event): boolean | Promise<boolean> {
return Promise.resolve(true);
}

save(event): object | Promise<object> {
return Promise.resolve({});
}

all(event): object | Promise<object> {
return Promise.resolve({});
}

find(event): object | Promise<object> {
return Promise.resolve({});
}

findOne(event): object | Promise<object> {
return Promise.resolve({});
}

update(event): boolean | Promise<boolean> {
return Promise.resolve(true);
}

remove(event): boolean | Promise<boolean> {
return Promise.resolve(true);
}

ensureIndex(event): object | Promise<object> {
return Promise.resolve({});
}

backup(event): object | Promise<object> {
return Promise.resolve({});
}

backups(event): object | Promise<object> {
return Promise.resolve({});
}

removeBackup(event): object | Promise<object> {
return Promise.resolve({});
}

restore(event): object | Promise<object> {
return Promise.resolve({});
}
}
3 changes: 3 additions & 0 deletions src/store/IAbstractStore.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/store/IAbstractStore.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 29 additions & 0 deletions src/store/IAbstractStore.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import * as Promise from "promise";

export interface IAbstractStore {
createCollection(event): boolean | Promise<boolean>;

insert(event): boolean | Promise<boolean>;

save(event): object | Promise<object>;

all(event): object | Promise<object>;

find(event): object | Promise<object>;

findOne (event): object | Promise<object>;

update(event): boolean | Promise<boolean>;

remove(event): boolean | Promise<boolean>;

ensureIndex(event): object | Promise<object>;

backup(event): object | Promise<object>;

backups(event): object | Promise<object>;

removeBackup(event): object | Promise<object>;

restore(event): object | Promise<object>;
}
7 changes: 7 additions & 0 deletions src/store/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/store/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/store/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./BaseStore";
214 changes: 214 additions & 0 deletions test/unit/store/BaseStore.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
import "mocha";
import { expect } from "chai";

import { TestHelper } from "../../helper/index";
import { MongoPortable } from "../../../src/core/index";
import { BaseStore } from "../../../src/store/index";

TestHelper.initLogger();

let db = null;

describe("- BaseStore", function() {
describe("#Constructor", function() {
it("should have the dependencies ready", function() {
TestHelper.assertDependencies([MongoPortable, BaseStore]);
});

it("should be able to instanciate", function() {
let store = new BaseStore();

expect(store).to.exist;
});
});

describe("#Emit", function() {
before(function() {
db = new MongoPortable("PRUEBAS", null);

db.addStore(new BaseStore());
});

it("should emit a 'createCollection' event", function(done) {
db.emit("createCollection", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'insert' event", function(done) {
db.emit("insert", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'save' event", function(done) {
db.emit("save", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'all' event", function(done) {
db.emit("all", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'find' event", function(done) {
db.emit("find", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'findOne' event", function(done) {
db.emit("findOne", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'update' event", function(done) {
db.emit("update", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'remove' event", function(done) {
db.emit("remove", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'ensureIndex' event", function(done) {
db.emit("ensureIndex", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'backup' event", function(done) {
db.emit("backup", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'backups' event", function(done) {
db.emit("backups", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'removeBackup' event", function(done) {
db.emit("removeBackup", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});

it("should emit a 'restore' event", function(done) {
db.emit("restore", {})
.then((result) => {
// Result: void
expect(result).to.not.exist;

done();
}).catch(error => {
expect(error).to.not.exist;

done();
});
});
});
});

0 comments on commit bcf1148

Please sign in to comment.