summaryrefslogtreecommitdiff
path: root/spec/frontend/lib/utils/dom_utils_spec.js
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-03 00:06:28 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-03 00:06:28 +0000
commit10d0e5693c0eed9fd9c40f4fadeda187237db6b5 (patch)
tree82a723f14e4a44146c7c5e2259b9c7d6d9b834bb /spec/frontend/lib/utils/dom_utils_spec.js
parenta19a376bf35b2009566e86b8190662c21ed7e2ba (diff)
downloadgitlab-ce-10d0e5693c0eed9fd9c40f4fadeda187237db6b5.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/lib/utils/dom_utils_spec.js')
-rw-r--r--spec/frontend/lib/utils/dom_utils_spec.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/spec/frontend/lib/utils/dom_utils_spec.js b/spec/frontend/lib/utils/dom_utils_spec.js
new file mode 100644
index 00000000000..10b4a10a8ff
--- /dev/null
+++ b/spec/frontend/lib/utils/dom_utils_spec.js
@@ -0,0 +1,115 @@
+import { addClassIfElementExists, canScrollUp, canScrollDown } from '~/lib/utils/dom_utils';
+
+const TEST_MARGIN = 5;
+
+describe('DOM Utils', () => {
+ describe('addClassIfElementExists', () => {
+ const className = 'biology';
+ const fixture = `
+ <div class="parent">
+ <div class="child"></div>
+ </div>
+ `;
+
+ let parentElement;
+
+ beforeEach(() => {
+ setFixtures(fixture);
+ parentElement = document.querySelector('.parent');
+ });
+
+ it('adds class if element exists', () => {
+ const childElement = parentElement.querySelector('.child');
+
+ expect(childElement).not.toBe(null);
+
+ addClassIfElementExists(childElement, className);
+
+ expect(childElement.classList).toContainEqual(className);
+ });
+
+ it('does not throw if element does not exist', () => {
+ const childElement = parentElement.querySelector('.other-child');
+
+ expect(childElement).toBe(null);
+
+ addClassIfElementExists(childElement, className);
+ });
+ });
+
+ describe('canScrollUp', () => {
+ [1, 100].forEach(scrollTop => {
+ it(`is true if scrollTop is > 0 (${scrollTop})`, () => {
+ expect(
+ canScrollUp({
+ scrollTop,
+ }),
+ ).toBe(true);
+ });
+ });
+
+ [0, -10].forEach(scrollTop => {
+ it(`is false if scrollTop is <= 0 (${scrollTop})`, () => {
+ expect(
+ canScrollUp({
+ scrollTop,
+ }),
+ ).toBe(false);
+ });
+ });
+
+ it('is true if scrollTop is > margin', () => {
+ expect(
+ canScrollUp(
+ {
+ scrollTop: TEST_MARGIN + 1,
+ },
+ TEST_MARGIN,
+ ),
+ ).toBe(true);
+ });
+
+ it('is false if scrollTop is <= margin', () => {
+ expect(
+ canScrollUp(
+ {
+ scrollTop: TEST_MARGIN,
+ },
+ TEST_MARGIN,
+ ),
+ ).toBe(false);
+ });
+ });
+
+ describe('canScrollDown', () => {
+ let element;
+
+ beforeEach(() => {
+ element = {
+ scrollTop: 7,
+ offsetHeight: 22,
+ scrollHeight: 30,
+ };
+ });
+
+ it('is true if element can be scrolled down', () => {
+ expect(canScrollDown(element)).toBe(true);
+ });
+
+ it('is false if element cannot be scrolled down', () => {
+ element.scrollHeight -= 1;
+
+ expect(canScrollDown(element)).toBe(false);
+ });
+
+ it('is true if element can be scrolled down, with margin given', () => {
+ element.scrollHeight += TEST_MARGIN;
+
+ expect(canScrollDown(element, TEST_MARGIN)).toBe(true);
+ });
+
+ it('is false if element cannot be scrolled down, with margin given', () => {
+ expect(canScrollDown(element, TEST_MARGIN)).toBe(false);
+ });
+ });
+});