diff --git a/api/litehouse.js b/api/litehouse.js new file mode 100644 index 00000000..e69de29b diff --git a/api/litehouse.ts b/api/litehouse.ts index 386e9889..6ae3bfd4 100644 --- a/api/litehouse.ts +++ b/api/litehouse.ts @@ -15,6 +15,7 @@ interface IModel { addAdapter (name: string, cb: cb): void addService (name: string, cb: cb): void addRelation (name: string, model: string, foreignKey: string, desc: string, localOnly: boolean): Model + addDataSource (name: string, adapter: string) } declare class Litehouse implements IAegis { @@ -28,5 +29,5 @@ declare class Model implements IModel { addMethod (name: string, cb: cb): void addAdapter (name: string, cb: cb): void addService (name: string, cb: cb): void - addRelation(name: string, model: string, foreignKey: string, desc: string, localOnly: boolean): Model; + addRelation (name: string, model: string, foreignKey: string, desc: string, localOnly: boolean): Model } \ No newline at end of file diff --git a/api/test/adapter.js b/api/test/adapter.js new file mode 100644 index 00000000..fcde3f80 --- /dev/null +++ b/api/test/adapter.js @@ -0,0 +1,9 @@ +test('import remote adapter', async () => { + const litehouse = new Litehouse() + const fs = require('fs') + const adapter = litehouse.import('adapters/fedex') + const model.addAdapter('shipping',adapter) + await model.importDb() + const result = model.classify(fs.createReadStream('bird.jpg')) + assert.equal(result.name, 'bald eagle') +}) \ No newline at end of file diff --git a/api/test/method-override.js b/api/test/method-override.js deleted file mode 100644 index 36b6b112..00000000 --- a/api/test/method-override.js +++ /dev/null @@ -1,10 +0,0 @@ -const model = require('./models/classifier') -const decorate = require('./models/classifier/decorate') -const litehouse = new Litehouse() - -// overrides generated method, see model.js -model.addMethod('classify', (msg, model) => - decorate(model.classify(msg.readable)) -) - -litehouse.listen() diff --git a/api/test/method.js b/api/test/method.js index e8eec269..fe2f74c1 100644 --- a/api/test/method.js +++ b/api/test/method.js @@ -5,7 +5,7 @@ const litehouse = new Litehouse() const MODEL = 'math' const METHOD = 'fibonacci' -test(async () => { +test('method', async () => { const model = litehouse.addModel(MODEL, msg => ({ name: 'math', desc: 'various mathematical functions' @@ -39,3 +39,14 @@ test(async () => { .then(msg => Promise.resolve(assert.equal(msg.answer, 1000000))) .catch(err => Promise.reject(err)) }) + +test('override', () => { + const decorate = require('./models/dependencies/classifier/decorate') + const litehouse = new Litehouse() + const model = Litehouse.importRemote('models/classifier') + + // overrides generated method, see model.js + model.addMethod('classify', (msg, model) => + decorate(model.classify(msg.readable)) + ) +}) diff --git a/api/test/model.js b/api/test/model.js index dd157a50..20a32325 100644 --- a/api/test/model.js +++ b/api/test/model.js @@ -1,3 +1,4 @@ +const Litehouse = require('..') const litehouse = new Litehouse() const test = require('node:test') const assert = require('node:assert') @@ -18,7 +19,7 @@ const Classifier = (msg, deps) => ({ } }) -test(() => { +test('model', () => { litehouse.addModel(MODEL, Classifier, { export: [METHOD_IMPORTDB, METHOD_CLASSIFY] }) @@ -57,3 +58,13 @@ test(() => { .catch(err => Promise.reject(err)) ]) }) + +test('remote import', async () => { + const litehouse = new Litehouse() + const fs = require('fs') + const factory = litehouse.import('models/classifier') + const model = factory({ classdb: 'birds' }) + await model.importDb() + const result = model.classify(fs.createReadStream('bird.jpg')) + assert.equal(result.name, 'bald eagle') +})