1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5/**
6 * Test fixture for the notifications custom bindings adapter.
7 * @constructor
8 * @extends {testing.Test}
9 */
10function NotificationsCustomBindingsTest() {
11  testing.Test.call(this);
12}
13
14NotificationsCustomBindingsTest.prototype = {
15  __proto__: testing.Test.prototype,
16
17  /** @Override */
18  extraLibraries: [
19    'notifications_test_util.js',
20    'notifications_custom_bindings.js'
21  ],
22};
23
24TEST_F('NotificationsCustomBindingsTest', 'TestImageDataSetter', function () {
25  var c = {};
26  var k = "key";
27  var callback = imageDataSetter(c, k);
28  callback('val');
29  expectTrue(c[k] === 'val');
30});
31
32TEST_F('NotificationsCustomBindingsTest', 'TestGetUrlSpecs', function () {
33  var imageSizes = {
34    scaleFactor: 1.0,
35    icon: { width: 10, height: 10 },
36    image: { width: 24, height: 32 },
37    buttonIcon: { width: 2, height: 2}
38  };
39
40  var notificationDetails = {};
41
42  var emptySpecs = getUrlSpecs(imageSizes, notificationDetails);
43  expectTrue(emptySpecs.length === 0);
44
45  notificationDetails.iconUrl = "iconUrl";
46  notificationDetails.imageUrl = "imageUrl";
47  notificationDetails.buttons = [
48    {iconUrl: "buttonOneIconUrl"},
49    {iconUrl: "buttonTwoIconUrl"}];
50
51  var allSpecs = getUrlSpecs(imageSizes, notificationDetails);
52  expectTrue(allSpecs.length === 4);
53
54  expectFalse(notificationDetails.iconBitmap === "test");
55  expectFalse(notificationDetails.imageBitmap === "test");
56  expectFalse(notificationDetails.buttons[0].iconBitmap === "test");
57  expectFalse(notificationDetails.buttons[1].iconBitmap === "test");
58
59  for (var i = 0; i < allSpecs.length; i++) {
60    var expectedKeys = ['path', 'width', 'height', 'callback'];
61    var spec = allSpecs[i];
62    for (var j in expectedKeys) {
63      expectTrue(spec.hasOwnProperty(expectedKeys[j]));
64    }
65    spec.callback(spec.path + "|" + spec.width + "|" + spec.height);
66  }
67
68  expectTrue(notificationDetails.iconBitmap === "iconUrl|10|10");
69  expectTrue(notificationDetails.imageBitmap === "imageUrl|24|32");
70  expectTrue(
71      notificationDetails.buttons[0].iconBitmap === "buttonOneIconUrl|2|2");
72  expectTrue(
73      notificationDetails.buttons[1].iconBitmap === "buttonTwoIconUrl|2|2");
74});
75
76TEST_F('NotificationsCustomBindingsTest', 'TestGetUrlSpecsScaled', function () {
77  var imageSizes = {
78    scaleFactor: 2.0,
79    icon: { width: 10, height: 10 },
80    image: { width: 24, height: 32 },
81    buttonIcon: { width: 2, height: 2}
82  };
83  var notificationDetails = {
84    iconUrl: "iconUrl",
85    imageUrl: "imageUrl",
86    buttons: [
87      {iconUrl: "buttonOneIconUrl"},
88      {iconUrl: "buttonTwoIconUrl"}
89    ]
90  };
91
92  var allSpecs = getUrlSpecs(imageSizes, notificationDetails);
93  for (var i = 0; i < allSpecs.length; i++) {
94    var spec = allSpecs[i];
95    spec.callback(spec.path + "|" + spec.width + "|" + spec.height);
96  }
97
98  expectEquals(notificationDetails.iconBitmap, "iconUrl|20|20");
99  expectEquals(notificationDetails.imageBitmap, "imageUrl|48|64");
100  expectEquals(notificationDetails.buttons[0].iconBitmap,
101               "buttonOneIconUrl|4|4");
102  expectEquals(notificationDetails.buttons[1].iconBitmap,
103               "buttonTwoIconUrl|4|4");
104});
105