UNPKG

@mediarithmics/plugins-nodejs-sdk

Version:

This is the mediarithmics nodejs to help plugin developers bootstrapping their plugin without having to deal with most of the plugin boilerplate

176 lines (163 loc) 5.11 kB
import { expect } from "chai"; import "mocha"; import { core } from "@mediarithmics/plugins-nodejs-sdk"; import * as request from "supertest"; import * as sinon from "sinon"; import * as rp from "request-promise-native"; import { MyActivityAnalyzerPlugin } from "../MyPluginImpl"; describe("Test Example Activity Analyzer", function() { // We stub the Gateway calls const rpMockup: sinon.SinonStub = sinon.stub(); // Activity Analyzer stub const activityAnalyzer: core.ActivityAnalyzerResponse = { status: "ok", data: { id: "1000", name: "my analyzer", organisation_id: "1000", visit_analyzer_plugin_id: 1001, group_id: "com.mediarithmics.visit-analyzer", artifact_id: "default" }, count: 1 }; rpMockup .withArgs( sinon.match.has( "uri", sinon.match(function(value: string) { return value.match(/\/v1\/activity_analyzers\/(.){1,10}/) !== null; }) ) ) .returns(activityAnalyzer); // Activity Analyzer properties stub const activityAnalyzerProperties: core.PluginPropertyResponse = { count: 1, data: [ { technical_name: "analyzer_rules", value: { uri: "mics://data_file/tenants/10001/plugins_conf/activity_analyzer.conf" }, property_type: "DATA_FILE", origin: "PLUGIN", writable: true, deletable: true } ], status: "ok" }; rpMockup .withArgs( sinon.match.has( "uri", sinon.match(function(value: string) { return ( value.match(/\/v1\/activity_analyzers\/(.){1,10}\/properties/) !== null ); }) ) ) .returns(activityAnalyzerProperties); // Fake Activity const activity = JSON.parse(`{ "activity_analyzer_id": 1923, "datamart_id": 1034, "channel_id": "1268", "activity": { "$email_hash": null, "$events": [ { "$event_name": "page HP", "$properties": { "$referrer": "https://www.google.fr/", "$url": "https://estcequecestbientotlapero.fr/", "produit": "SANTE", "session id": "tQ6GQojf" }, "$ts": 1479820606900 }, { "$event_name": "formulaire", "$properties": { "$referrer": "https://estcequecestbientotlapero.fr/", "$url": "https://estcequecestbientotlapero.fr/php/main_new_api.php?EXEC=CONTACT&STEP=1&ID_SESSION=tQ6GQojf&remb_soins=0&remb_optique=200&remb_dentaire=100&remb_hopital=0", "choix_dentaire": "100", "choix_hospitalisation": "0", "choix_optique": "200", "choix_soinscourants": "0", "produit": "SANTE", "session id": "tQ6GQojf", "taux remplissage": "0" }, "$ts": 1479820777216 } ], "$location": null, "$origin": { "$campaign_id": null, "$campaign_name": null, "$campaign_technical_name": null, "$channel": "referral", "$creative_id": null, "$creative_name": null, "$creative_technical_name": null, "$gclid": null, "$keywords": null, "$log_id": null, "$message_id": null, "$message_technical_name": null, "$referral_path": "https://www.google.fr/", "$social_network": null, "$source": "www.google.fr", "$sub_campaign_id": null, "$sub_campaign_technical_name": null, "$ts": 1479820606901 }, "$session_duration": 302, "$session_status": "CLOSED_SESSION", "$site_id": "1268", "$topics": {}, "$ts": 1479820606901, "$ttl": 0, "$type": "SITE_VISIT", "$user_account_id": null, "$user_agent_id": "vec:289388396" } }`); it("Check behavior of dummy activity analyzer", function(done) { // All the magic is here const plugin = new MyActivityAnalyzerPlugin(); const runner = new core.TestingPluginRunner(plugin, rpMockup); // Plugin init request(runner.plugin.app) .post("/v1/init") .send({ authentication_token: "Manny", worker_id: "Calavera" }) .end((err, res) => { expect(res.status).to.equal(200); // Plugin log level to debug request(runner.plugin.app) .put("/v1/log_level") .send({ level: "info" }) .end((err, res) => { expect(res.status).to.equal(200); // Activity to process request(runner.plugin.app) .post("/v1/activity_analysis") .send(activity) .end((err, res) => { expect(res.status).to.eq(200); expect(JSON.parse(res.text).data.processed_by).to.be.eq( `${activityAnalyzer.data.group_id}:${activityAnalyzer.data .artifact_id} v.${activityAnalyzer.data .visit_analyzer_plugin_id}` ); done(); }); }); }); }); });