diff --git a/js/lib/eventUtil.js b/js/lib/eventUtil.js index 421c0170ef5..f2bd937cc3b 100644 --- a/js/lib/eventUtil.js +++ b/js/lib/eventUtil.js @@ -11,8 +11,9 @@ module.exports.isForSecondaryAction = (e) => module.exports.eventElHasAncestorWithClasses = (e, classesToCheck) => { // DO NOT ADD NEW CHECKS USING THIS METHOD - // classNames are changed from dev to prod by Aphrodite + // classNames are changed from dev to prod by Aphrodite est. v1.2.3 // and new code will not work. Consider using dataset attribute instead. + // See issue #10029 for a breaking example. // .... // TODO deprecate this method. let node = e.target diff --git a/test/unit/js/lib/eventUtilTest.js b/test/unit/js/lib/eventUtilTest.js new file mode 100644 index 00000000000..c825322421f --- /dev/null +++ b/test/unit/js/lib/eventUtilTest.js @@ -0,0 +1,38 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ +/* global describe, it */ + +const eventUtil = require('../../../../js/lib/eventUtil') +const assert = require('assert') + +require('../../braveUnit') + +describe('eventUtil', function () { + describe('elementHasDataset', function () { + let datasetToTest + let node = { dataset: { nespresso: true } } + + it('returns false if node dataset do not match', function () { + datasetToTest = ['starbucks', 'keurig'] + assert.equal(eventUtil.elementHasDataset(node, datasetToTest), false) + }) + it('returns true if node dataset match the provided dataset array', function () { + datasetToTest = ['wow', 'such', 'nespresso', 'very', 'amazing'] + assert.equal(eventUtil.elementHasDataset(node, datasetToTest), true) + }) + it('can accept strings for the dataset to match against', function () { + datasetToTest = 'nespresso' + assert.equal(eventUtil.elementHasDataset(node, datasetToTest), true) + }) + it('can not accept partial string match', function () { + datasetToTest = ['nespressomnibox'] + assert.equal(eventUtil.elementHasDataset(node, datasetToTest), false) + }) + it('returns false if node do not provide a dataset', function () { + node = delete node.dataset + datasetToTest = ['nespresso'] + assert.equal(eventUtil.elementHasDataset(node, datasetToTest), false) + }) + }) +})