Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "comapi-sdk-js",
"version": "1.3.0",
"version": "1.4.0",
"scripts": {
"test": "karma start --browsers=ChromeHeadless",
"build": "grunt compile"
Expand Down Expand Up @@ -52,6 +52,6 @@
"webpack": "^1.13.3",
"ws": "^3.3.1"
},
"build": "46",
"build": "47",
"license": "MIT"
}
54 changes: 32 additions & 22 deletions specs/foundation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,69 +23,79 @@ describe("Foundation tests", () => {
Foundation.initialise(comapiConfig).then(result => {
foundation = result;
done();
});
}).catch(done.fail);
});

it("should return a version number", done => {
it("should return a version number", () => {
expect(Foundation.version).toBeDefined();
expect(foundation).toBeDefined();
done();
});

describe("Foundation tests / deep links", () => {
it("should get deep link url", async done => {
it("should get deep link url", async () => {
const inputs = [JSON.stringify({ trackingUrl: "tUrl", url: "url" }), { trackingUrl: "tUrl", url: "url" }];
inputs.forEach(async input => {
foundation["_get"] = (url) => Promise.resolve();
let obj = {};
obj["dd_deepLink"] = input;
let result = await foundation.handleLink(obj);
expect(result).toBe("url");
done();
});
let result = await foundation.handlePush(obj);
expect(result).toEqual({url: "url", ddOriginated: false});
}
});

it("should call deep link trackingUrl", async done => {
it("should call deep link trackingUrl", async () => {
const inputs = [JSON.stringify({ trackingUrl: "tUrl", url: "url" }), { trackingUrl: "tUrl", url: "url" }];
inputs.forEach(async input => {
for (const input of inputs) {
let trackingUrl;
foundation["_get"] = (url) => {
trackingUrl = url;
return Promise.resolve();
};
let obj = {};
obj["dd_deepLink"] = input;
await foundation.handleLink(obj);
await foundation.handlePush(obj);
expect(trackingUrl).toBe("tUrl");
});
done();
}
});

it("should call deep link trackingUrl in additionalData", async done => {
it("should call deep link trackingUrl in additionalData", async () => {
let trackingUrl;
foundation["_get"] = (url) => {
trackingUrl = url;
return Promise.resolve();
};
await foundation.handleLink({ additionalData: { dd_deepLink: { trackingUrl: "tUrl", url: "url" }}});
await foundation.handlePush({ additionalData: { dd_deepLink: { trackingUrl: "tUrl", url: "url" }}});
expect(trackingUrl).toBe("tUrl");
done();
});

it("should handle payload without dd_deepLink", async done => {
it("should handle payload without dd_deepLink", async () => {
let url;
let obj = {};
await foundation.handleLink(obj);
await foundation.handlePush(obj);
expect(url).toBeUndefined();
done();
});

it("should handle payload with partial dd_deepLink", async done => {
it("should handle payload with partial dd_deepLink", async () => {
let url;
let obj = JSON.stringify({ url: "url" });
await foundation.handleLink(obj);
await foundation.handlePush(obj);
expect(url).toBeUndefined();
done();
});

it("should read dd-originated flag from payload", async () => {
foundation["_get"] = (url) => Promise.resolve();
let result = await foundation.handlePush({ "dd-originated": true, dd_deepLink: { trackingUrl: "tUrl", url: "url" } });
expect(result.ddOriginated).toBe(true);
});

it("should read dd-originated flag from payload without deep link", async () => {
let result = await foundation.handlePush({ "dd-originated": true });
expect(result.ddOriginated).toBe(true);
});

it("should default dd-originated to false when not present", async () => {
let result = await foundation.handlePush({ dd_deepLink: { url: "url" } });
expect(result.ddOriginated).toBe(false);
});
});
});
9 changes: 5 additions & 4 deletions src/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,15 +277,16 @@ export class Foundation implements IFoundation {
}

/**
* Track notification click and return deep link url to be opened.
* @method Foundation#handleLink
* Track notification click and return deep link url to be opened as well as dd-originated flag.
* @method Foundation#handlePush
* @param message "FirebasePlugin push message returned from onMessageReceived"
*/
public handlePush(message) {
const ddOriginated = message["dd-originated"] ?? false;
let _this = this;
return new Promise((resolve, reject) => {
_this._handleLink((result) => {
resolve(result);
_this._handleLink((url) => {
resolve({ url, ddOriginated });
},
(error) => {
reject(error);
Expand Down