Skip to content

Commit

Permalink
Part 4: Migrate tests for custom data
Browse files Browse the repository at this point in the history
Porting only the `data` test since there is a behavior mismatch for `icon`.

Differential Revision: https://phabricator.services.mozilla.com/D169319

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1781588
gecko-commit: 8f48638b3afe76768df717b6ebf04b8717962726
gecko-reviewers: smaug
  • Loading branch information
saschanaz authored and moz-wptsync-bot committed Feb 14, 2023
1 parent aba25a6 commit 302313d
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
5 changes: 5 additions & 0 deletions notifications/instance.https.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<title>Notification instance basic tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/custom-data.js"></script>
<script>
var n = new Notification("Radio check",
{
Expand All @@ -11,6 +12,7 @@
body: "This is a radio check.",
tag: "radio_check999",
icon: "http://example.com/icon.png",
data: fakeCustomData,
}
)
n.onshow = function() {
Expand Down Expand Up @@ -52,4 +54,7 @@
test(function() {
assert_equals("http://example.com/icon.png", n.icon)
},"Attribute exists with expected value: icon")
test(function() {
assert_custom_data(n.data);
},"Attribute exists with expected value: data")
</script>
66 changes: 66 additions & 0 deletions notifications/resources/custom-data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
var fakeCustomData = (function() {
var buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 42, true);
var canvas = document.createElement("canvas");
canvas.width = canvas.height = 100;
var context = canvas.getContext("2d");

var map = new Map();
var set = new Set();
map.set("test", 42);
set.add(4);
set.add(2);

return {
primitives: {
a: 123,
b: "test",
c: true,
d: [1, 2, 3],
},
date: new Date(2013, 2, 1, 1, 10),
regexp: new RegExp("[^.]+"),
arrayBuffer: buffer,
imageData: context.createImageData(100, 100),
map,
set,
};
})();

function assert_custom_data(dataObj) {
assert_equals(typeof dataObj, "object", "data should be a JS object");
assert_equals(
JSON.stringify(dataObj.primitives),
JSON.stringify(fakeCustomData.primitives),
"data.primitives should be preserved"
);
assert_equals(
dataObj.date.toDateString(),
fakeCustomData.date.toDateString(),
"data.date should be preserved"
);
assert_equals(
dataObj.regexp.exec("http://www.domain.com")[0].substr(7),
"www",
"data.regexp should be preserved"
);
assert_equals(
new Int16Array(dataObj.arrayBuffer)[0],
42,
"data.arrayBuffer should be preserved"
);
assert_equals(
JSON.stringify(dataObj.imageData.data),
JSON.stringify(fakeCustomData.imageData.data),
"data.imageData should be preserved"
)
assert_equals(
dataObj.map.get("test"),
42,
"data.map should be preserved"
);
assert_true(
dataObj.set.has(4) && dataObj.set.has(2),
"data.set should be preserved"
);
}
9 changes: 9 additions & 0 deletions notifications/shownotification.https.window.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
// META: script=resources/custom-data.js

"use strict";

Expand Down Expand Up @@ -95,3 +96,11 @@ promise_test(async t => {
assert_equals(notifications.length, 1, "Should return a notification");
assert_equals(notifications[0].title, "Hello", "Title should match");
}, "fetching only persistent notifications")

promise_test(async t => {
t.add_cleanup(cleanup);
await registration.showNotification("Hello", { data: fakeCustomData });
const notifications = await registration.getNotifications();
assert_equals(notifications.length, 1, "Should return a notification");
assert_custom_data(notifications[0].data);
}, "fetching a notification with custom data")

0 comments on commit 302313d

Please sign in to comment.