bv-ui-core 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/.eslintrc +40 -0
  2. package/.travis.yml +5 -0
  3. package/CONTRIBUTING.md +98 -0
  4. package/LICENSE.md +13 -0
  5. package/OWNERS +2 -0
  6. package/README.md +63 -0
  7. package/catalog-info.yaml +30 -0
  8. package/karma.conf.js +130 -0
  9. package/lib/README.md +61 -0
  10. package/lib/api/.babelrc +3 -0
  11. package/lib/api/.eslintrc +9 -0
  12. package/lib/api/README.md +134 -0
  13. package/lib/api/index.js +15 -0
  14. package/lib/api/statistics.js +148 -0
  15. package/lib/application/README.md +96 -0
  16. package/lib/application/index.js +171 -0
  17. package/lib/body/README.md +13 -0
  18. package/lib/body/index.js +19 -0
  19. package/lib/bvFetch/README.md +101 -0
  20. package/lib/bvFetch/index.js +383 -0
  21. package/lib/checkHighContrast/README.md +26 -0
  22. package/lib/checkHighContrast/index.js +36 -0
  23. package/lib/cookie/README.md +29 -0
  24. package/lib/cookie/index.js +111 -0
  25. package/lib/cookieConsent/README.md +41 -0
  26. package/lib/cookieConsent/index.js +227 -0
  27. package/lib/cssLoadChecker/README.md +19 -0
  28. package/lib/cssLoadChecker/index.js +72 -0
  29. package/lib/date.now/README.md +11 -0
  30. package/lib/date.now/index.js +40 -0
  31. package/lib/domainPolice/README.md +66 -0
  32. package/lib/domainPolice/index.js +95 -0
  33. package/lib/evented/README.md +42 -0
  34. package/lib/evented/index.js +135 -0
  35. package/lib/getOriginalConstructor/README.md +16 -0
  36. package/lib/getOriginalConstructor/index.js +52 -0
  37. package/lib/global/README.md +10 -0
  38. package/lib/global/index.js +48 -0
  39. package/lib/ie/README.md +13 -0
  40. package/lib/ie/index.js +25 -0
  41. package/lib/loader/README.md +73 -0
  42. package/lib/loader/index.js +358 -0
  43. package/lib/logger/README.md +82 -0
  44. package/lib/logger/index.js +180 -0
  45. package/lib/messageFormat/README.md +10 -0
  46. package/lib/messageFormat/index.js +42 -0
  47. package/lib/namespacer/README.md +57 -0
  48. package/lib/namespacer/index.js +98 -0
  49. package/lib/performance/README.md +35 -0
  50. package/lib/performance/entries.js +5 -0
  51. package/lib/performance/getEntries.js +42 -0
  52. package/lib/performance/getEntriesByName.js +61 -0
  53. package/lib/performance/getEntriesByType.js +55 -0
  54. package/lib/performance/index.js +11 -0
  55. package/lib/performance/mark.js +97 -0
  56. package/lib/performance/measure.js +106 -0
  57. package/lib/performance/now.js +63 -0
  58. package/lib/pixelsDisplayed/README.md +19 -0
  59. package/lib/pixelsDisplayed/index.js +113 -0
  60. package/lib/polyfills/README.md +39 -0
  61. package/lib/polyfills/fetch/Headers.js +3 -0
  62. package/lib/polyfills/fetch/Request.js +3 -0
  63. package/lib/polyfills/fetch/Response.js +3 -0
  64. package/lib/polyfills/fetch/fetch.js +3 -0
  65. package/lib/polyfills/fetch/index.js +57 -0
  66. package/lib/polyfills/promise.js +265 -0
  67. package/lib/queryShadowDom/README.md +50 -0
  68. package/lib/queryShadowDom/index.js +93 -0
  69. package/lib/region/README.md +64 -0
  70. package/lib/region/europe/index.js +94 -0
  71. package/lib/region/europe/territories.js +40 -0
  72. package/lib/region/index.js +123 -0
  73. package/lib/staticAssetLoader/README.md +116 -0
  74. package/lib/staticAssetLoader/index.js +248 -0
  75. package/lib/waitForBody/README.md +21 -0
  76. package/lib/waitForBody/index.js +36 -0
  77. package/mkdocs.yaml +5 -0
  78. package/package.json +55 -0
  79. package/test/.eslintrc +5 -0
  80. package/test/fixtures/lib.loader.document-is-wrong-in-ie8.js +5 -0
  81. package/test/fixtures/lib.loader.loadscript-attribute.js +3 -0
  82. package/test/fixtures/lib.loader.loadscript.js +3 -0
  83. package/test/fixtures/lib.loader.loadstylesheet.css +3 -0
  84. package/test/unit/api/.eslintrc +6 -0
  85. package/test/unit/api/index.spec.js +37 -0
  86. package/test/unit/api/response.json +67 -0
  87. package/test/unit/api/statistics.spec.js +218 -0
  88. package/test/unit/application/index.spec.js +313 -0
  89. package/test/unit/body/index.spec.js +15 -0
  90. package/test/unit/bvFetch/index.spec.js +246 -0
  91. package/test/unit/checkHighContrast/index.spec.js +16 -0
  92. package/test/unit/cookie/index.spec.js +191 -0
  93. package/test/unit/cookieConsent/index.spec.js +119 -0
  94. package/test/unit/cssLoadChecker/index.spec.js +75 -0
  95. package/test/unit/date.now/index.spec.js +21 -0
  96. package/test/unit/domainPolice/index.spec.js +141 -0
  97. package/test/unit/evented/index.spec.js +59 -0
  98. package/test/unit/getOriginalConstructor/index.spec.js +60 -0
  99. package/test/unit/global/index.spec.js +84 -0
  100. package/test/unit/ie/index.spec.js +14 -0
  101. package/test/unit/loader/index.spec.js +644 -0
  102. package/test/unit/logger/index.spec.js +141 -0
  103. package/test/unit/messageFormat/index.spec.js +31 -0
  104. package/test/unit/mochaInit.js +8 -0
  105. package/test/unit/namespacer/index.spec.js +100 -0
  106. package/test/unit/performance/getEntries.spec.js +30 -0
  107. package/test/unit/performance/getEntriesByName.spec.js +88 -0
  108. package/test/unit/performance/getEntriesByType.spec.js +48 -0
  109. package/test/unit/performance/index.spec.js +35 -0
  110. package/test/unit/performance/mark.spec.js +40 -0
  111. package/test/unit/performance/measure.spec.js +50 -0
  112. package/test/unit/performance/now.spec.js +21 -0
  113. package/test/unit/pixelsDisplayed/index.spec.js +271 -0
  114. package/test/unit/polyfills/fetch/Headers.js +12 -0
  115. package/test/unit/polyfills/fetch/Request.js +12 -0
  116. package/test/unit/polyfills/fetch/Response.js +12 -0
  117. package/test/unit/polyfills/fetch/fetch.js +12 -0
  118. package/test/unit/polyfills/fetch/index.js +61 -0
  119. package/test/unit/polyfills/promise.spec.js +48 -0
  120. package/test/unit/region/europe/index.spec.js +70 -0
  121. package/test/unit/region/index.spec.js +113 -0
  122. package/test/unit/staticAssetLoader/index.spec.js +215 -0
@@ -0,0 +1,215 @@
1
+ /**
2
+ * @fileOverview
3
+ * Unit tests for the staticAssetLoader module.
4
+ */
5
+
6
+ var loader = require('../../../lib/loader');
7
+ var namespacer = require('../../../lib/namespacer');
8
+ var staticAssetLoaderFactory = require('../../../lib/staticAssetLoader');
9
+
10
+ describe('lib/staticAssetLoader', function () {
11
+
12
+ var assets;
13
+ var assetNames;
14
+ var config;
15
+ var loaderOptions;
16
+ var sandbox;
17
+ var staticAssetLoader;
18
+
19
+ beforeEach(function () {
20
+ sandbox = sinon.sandbox.create();
21
+
22
+ loaderOptions = {};
23
+
24
+ assetNames = [
25
+ 'dependency-one@1.0.0',
26
+ 'asset-one@1.0.0'
27
+ ];
28
+
29
+ assets = {
30
+ 'dependency-one@1.0.0': { dependency: 'one' },
31
+ 'asset-one@1.0.0': { asset: 'one' }
32
+ };
33
+
34
+ config = {
35
+ generateUrl: function (assetNames, namespaceName) {
36
+ var filename = encodeURIComponent(assetNames.slice(0).sort().join('+')) + '.js';
37
+
38
+ namespaceName = encodeURIComponent(namespaceName);
39
+ return 'https://static.example.com/1/asset/' + namespaceName + '/' + filename;
40
+ },
41
+ namespaceName: 'EXAMPLE'
42
+ };
43
+
44
+ sandbox.stub(loader, 'loadScript');
45
+ sandbox.spy(config, 'generateUrl');
46
+
47
+ staticAssetLoader = staticAssetLoaderFactory.create(config);
48
+ });
49
+
50
+ afterEach(function () {
51
+ sandbox.restore();
52
+ delete namespacer.namespace(config.namespaceName)._staticAssetRegistry;
53
+ });
54
+
55
+ describe('require and define', function () {
56
+
57
+ it('basic operation works as expected', function (done) {
58
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
59
+ expect(dependencyOne).to.equal(assets[assetNames[0]]);
60
+ expect(assetOne).to.equal(assets[assetNames[1]]);
61
+ done();
62
+ });
63
+
64
+ sinon.assert.calledWith(
65
+ config.generateUrl,
66
+ assetNames,
67
+ config.namespaceName
68
+ );
69
+
70
+ sinon.assert.calledWith(
71
+ loader.loadScript,
72
+ config.generateUrl(assetNames, config.namespaceName),
73
+ loaderOptions,
74
+ sinon.match.func
75
+ );
76
+
77
+ // After both of these are done, the callback for require() should
78
+ // trigger. Do them out of order for the sake of it.
79
+ staticAssetLoader.define(
80
+ assetNames[1],
81
+ assets[assetNames[1]]
82
+ );
83
+ staticAssetLoader.define(
84
+ assetNames[0],
85
+ assets[assetNames[0]]
86
+ );
87
+ });
88
+
89
+ it('if an asset exists, do not request it', function (done) {
90
+ // Define the dependency first.
91
+ staticAssetLoader.define(
92
+ assetNames[0],
93
+ assets[assetNames[0]]
94
+ );
95
+
96
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
97
+ expect(dependencyOne).to.equal(assets[assetNames[0]]);
98
+ expect(assetOne).to.equal(assets[assetNames[1]]);
99
+ done();
100
+ });
101
+
102
+ sinon.assert.calledWith(
103
+ config.generateUrl,
104
+ assetNames.slice(1),
105
+ config.namespaceName
106
+ );
107
+
108
+ sinon.assert.calledWith(
109
+ loader.loadScript,
110
+ config.generateUrl(assetNames.slice(1), config.namespaceName),
111
+ loaderOptions,
112
+ sinon.match.func
113
+ );
114
+
115
+ // After this is done, the callback for require() should
116
+ // trigger.
117
+ staticAssetLoader.define(
118
+ assetNames[1],
119
+ assets[assetNames[1]]
120
+ );
121
+ });
122
+
123
+ it('require the same things twice, but only one load request', function (done) {
124
+ var completed = 0;
125
+
126
+ function finish (done) {
127
+ completed++;
128
+ if (completed === 2) {
129
+ done();
130
+ }
131
+ }
132
+
133
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
134
+ expect(dependencyOne).to.equal(assets[assetNames[0]]);
135
+ expect(assetOne).to.equal(assets[assetNames[1]]);
136
+ finish(done);
137
+ });
138
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
139
+ expect(dependencyOne).to.equal(assets[assetNames[0]]);
140
+ expect(assetOne).to.equal(assets[assetNames[1]]);
141
+ finish(done);
142
+ });
143
+
144
+ sinon.assert.calledOnce(config.generateUrl);
145
+ sinon.assert.calledOnce(loader.loadScript);
146
+
147
+ // After both of these are done, the callback for require() should
148
+ // trigger. Do them out of order for the sake of it.
149
+ staticAssetLoader.define(
150
+ assetNames[1],
151
+ assets[assetNames[1]]
152
+ );
153
+ staticAssetLoader.define(
154
+ assetNames[0],
155
+ assets[assetNames[0]]
156
+ );
157
+ });
158
+
159
+ it('partial definition of requirements means no callback', function (done) {
160
+ var complete = false;
161
+
162
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
163
+ complete = true;
164
+ });
165
+
166
+ staticAssetLoader.define(
167
+ assetNames[1],
168
+ assets[assetNames[1]]
169
+ );
170
+
171
+ setTimeout(function () {
172
+ expect(complete).to.equal(false);
173
+ done();
174
+ }, 1000);
175
+ });
176
+
177
+ it('works with no callback', function (done) {
178
+ staticAssetLoader.require(assetNames);
179
+
180
+ staticAssetLoader.define(
181
+ assetNames[1],
182
+ assets[assetNames[1]]
183
+ );
184
+ staticAssetLoader.define(
185
+ assetNames[0],
186
+ assets[assetNames[0]]
187
+ );
188
+
189
+ staticAssetLoader.require(assetNames, function (dependencyOne, assetOne) {
190
+ expect(dependencyOne).to.equal(assets[assetNames[0]]);
191
+ expect(assetOne).to.equal(assets[assetNames[1]]);
192
+ done();
193
+ });
194
+ });
195
+
196
+ it('cannot redefine an asset', function (done) {
197
+ var assetA = { a: 1 };
198
+ var assetB = { b: 1 };
199
+
200
+ staticAssetLoader.define(
201
+ assetNames[0],
202
+ assetA
203
+ );
204
+ staticAssetLoader.define(
205
+ assetNames[0],
206
+ assetB
207
+ );
208
+
209
+ staticAssetLoader.require([assetNames[0]], function (dependencyOne) {
210
+ expect(dependencyOne).to.equal(assetA);
211
+ done();
212
+ });
213
+ });
214
+ });
215
+ });