| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 2de1f37 commit febea76
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1 @@ | |||
| 1 | + module.exports = { markup: '<svg></svg>'}; | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -152,8 +152,7 @@ | |||
| 152 | 152 | "EventEmitter": "wolfy87-eventemitter", | |
| 153 | 153 | "videojs": "video.js", | |
| 154 | 154 | "stripe": "stripe/stripe.min", | |
| 155 | - "^svgs\/(.*)$": "<rootDir>/__mocks__/fileMock.js", | ||
| 156 | - "\\.(html)$": "<rootDir>/__mocks__/fileMock.js", | ||
| 155 | + "^svgs\/(.*)$": "<rootDir>/__mocks__/svgMock.js", | ||
| 157 | 156 | "ophan/ng": "ophan-tracker-js", | |
| 158 | 157 | "ophan/embed": "ophan-tracker-js/build/ophan.embed" | |
| 159 | 158 | }, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,8 @@ | |||
| 1 | + // @flow | ||
| 2 | + /* eslint-disable */ | ||
| 3 | + export default { | ||
| 4 | + read: (fn: Function, ctx: ?Object): number => fn(), | ||
| 5 | + write: (fn: Function, ctx: ?Object): number => fn(), | ||
| 6 | + defer: (frame: number, fn: Function, ctx: ?Object): number => fn(), | ||
| 7 | + clear: (id: number): void => {}, | ||
| 8 | + }; | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,9 +4,7 @@ import fastdom from 'fastdom'; | |||
| 4 | 4 | import $ from 'lib/$'; | |
| 5 | 5 | import mediator from 'lib/mediator'; | |
| 6 | 6 | import userPrefs from 'common/modules/user-prefs'; | |
| 7 | - import template from 'lodash/utilities/template'; | ||
| 8 | 7 | import { inlineSvg } from 'common/views/svgs'; | |
| 9 | - import btnTmpl from 'raw-loader!facia/views/button-toggle.html'; | ||
| 10 | 8 | ||
| 11 | 9 | type ToggleState = 'hidden' | 'displayed'; | |
| 12 | 10 | ||
@@ -16,30 +14,40 @@ const toggleText = { | |||
| 16 | 14 | displayed: 'Hide', | |
| 17 | 15 | }; | |
| 18 | 16 | ||
| 17 | + const btnTmpl = ({ text, dataLink, icon }) => ` | ||
| 18 | + <button class="fc-container__toggle" data-link-name="${dataLink}"> | ||
| 19 | + ${icon} | ||
| 20 | + <span class="fc-container__toggle__text">${text}</span> | ||
| 21 | + </button> | ||
| 22 | + `; | ||
| 23 | + | ||
| 19 | 24 | export class ContainerToggle { | |
| 20 | 25 | $container: bonzo; | |
| 21 | 26 | state: ToggleState; | |
| 22 | 27 | $button: bonzo; | |
| 23 | 28 | constructor(container: Element) { | |
| 24 | 29 | this.$container = bonzo(container); | |
| 25 | - this.addToggle(); | ||
| 26 | - bonzo.create( | ||
| 27 | - template(btnTmpl, { | ||
| 28 | - text: 'Hide', | ||
| 29 | - dataLink: 'Show', | ||
| 30 | - icon: inlineSvg('arrowicon'), | ||
| 31 | - }) | ||
| 30 | + this.$button = bonzo( | ||
| 31 | + bonzo.create( | ||
| 32 | + btnTmpl({ | ||
| 33 | + text: 'Hide', | ||
| 34 | + dataLink: 'Show', | ||
| 35 | + icon: inlineSvg('arrowicon'), | ||
| 36 | + }) | ||
| 37 | + ) | ||
| 32 | 38 | ); | |
| 39 | + this.state = 'displayed'; | ||
| 33 | 40 | } | |
| 34 | 41 | ||
| 35 | - buttonText() { | ||
| 36 | - $('.fc-container__toggle__text', this.$button[0]); | ||
| 42 | + buttonText(): bonzo { | ||
| 43 | + return $('.fc-container__toggle__text', this.$button); | ||
| 37 | 44 | } | |
| 38 | 45 | ||
| 39 | 46 | updatePref(id: string): void { | |
| 40 | 47 | // update user prefs | |
| 41 | 48 | let prefs = userPrefs.get(prefName); | |
| 42 | 49 | const prefValue = id; | |
| 50 | + | ||
| 43 | 51 | if (this.state === 'displayed') { | |
| 44 | 52 | delete prefs[prefValue]; | |
| 45 | 53 | } else { | |
@@ -64,7 +72,7 @@ export class ContainerToggle { | |||
| 64 | 72 | 'data-link-name', | |
| 65 | 73 | toggleText[this.state === 'displayed' ? 'hidden' : 'displayed'] | |
| 66 | 74 | ); | |
| 67 | - this.buttonText.text(toggleText[this.state]); | ||
| 75 | + this.buttonText().text(toggleText[this.state]); | ||
| 68 | 76 | }); | |
| 69 | 77 | } | |
| 70 | 78 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,13 +2,15 @@ | |||
| 2 | 2 | import $ from 'lib/$'; | |
| 3 | 3 | import bonzo from 'bonzo'; | |
| 4 | 4 | import fastdom from 'fastdom'; | |
| 5 | + import mediator from 'lib/mediator'; | ||
| 5 | 6 | import userPrefs from 'common/modules/user-prefs'; | |
| 6 | 7 | import { ContainerToggle } from 'facia/modules/ui/container-toggle'; | |
| 7 | 8 | ||
| 9 | + jest.mock('lib/storage'); | ||
| 10 | + | ||
| 8 | 11 | describe('Container Toggle', () => { | |
| 9 | 12 | let container; | |
| 10 | 13 | let $container; | |
| 11 | - let mediator; | ||
| 12 | 14 | const containerId = 'uk/culture/regular-stories'; | |
| 13 | 15 | const storageId = 'container-states'; | |
| 14 | 16 | // helper assertion method | |
@@ -24,27 +26,26 @@ describe('Container Toggle', () => { | |||
| 24 | 26 | ); | |
| 25 | 27 | }; | |
| 26 | 28 | ||
| 27 | - function simulateClick() { | ||
| 29 | + const simulateClick = () => { | ||
| 28 | 30 | mediator.emit('module:clickstream:click', { | |
| 29 | 31 | target: $('button', container)[0], | |
| 30 | 32 | }); | |
| 31 | - } | ||
| 33 | + }; | ||
| 32 | 34 | ||
| 33 | - beforeEach(done => { | ||
| 35 | + beforeEach(() => { | ||
| 34 | 36 | container = bonzo.create( | |
| 35 | 37 | `<section class="fc-container js-container--toggle" data-id="${containerId}">` + | |
| 36 | 38 | `<div class="fc-container__header js-container__header">` + | |
| 37 | 39 | `<h2>A container</h2>` + | |
| 38 | 40 | `</div>` + | |
| 39 | 41 | `</section>` | |
| 40 | - )[0]; | ||
| 41 | - $container = bonzo(container); | ||
| 42 | - | ||
| 43 | - done(); | ||
| 42 | + ); | ||
| 43 | + $container = bonzo(container[0]); | ||
| 44 | 44 | }); | |
| 45 | 45 | ||
| 46 | 46 | afterEach(() => { | |
| 47 | 47 | $container.remove(); | |
| 48 | + userPrefs.remove('container-states'); | ||
| 48 | 49 | }); | |
| 49 | 50 | ||
| 50 | 51 | it('should be able to initialise', () => { | |
@@ -53,19 +54,18 @@ describe('Container Toggle', () => { | |||
| 53 | 54 | }); | |
| 54 | 55 | ||
| 55 | 56 | it('should remove "js-container--toggle" class from container', done => { | |
| 56 | - new ContainerToggle(container).addToggle(); | ||
| 57 | + const toggle = new ContainerToggle(container); | ||
| 58 | + toggle.addToggle(); | ||
| 57 | 59 | ||
| 58 | - console.log($container.hasClass('js-container--toggle')); | ||
| 59 | 60 | fastdom.defer(1, () => { | |
| 60 | - console.log('foo'); | ||
| 61 | - console.log(`bar: ${$container.hasClass('js-container--toggle')}`); | ||
| 62 | 61 | expect($container.hasClass('js-container--toggle')).toBeFalsy(); | |
| 63 | 62 | done(); | |
| 64 | 63 | }); | |
| 65 | 64 | }); | |
| 66 | 65 | ||
| 67 | 66 | it('should add "container--has-toggle" class to container', done => { | |
| 68 | - new ContainerToggle(container).addToggle(); | ||
| 67 | + const toggle = new ContainerToggle(container); | ||
| 68 | + toggle.addToggle(); | ||
| 69 | 69 | ||
| 70 | 70 | fastdom.defer(1, () => { | |
| 71 | 71 | expect( | |
@@ -76,7 +76,8 @@ describe('Container Toggle', () => { | |||
| 76 | 76 | }); | |
| 77 | 77 | ||
| 78 | 78 | it("should add button to the container's header", done => { | |
| 79 | - new ContainerToggle(container).addToggle(); | ||
| 79 | + const toggle = new ContainerToggle(container); | ||
| 80 | + toggle.addToggle(); | ||
| 80 | 81 | ||
| 81 | 82 | fastdom.defer(1, () => { | |
| 82 | 83 | expect( | |
@@ -88,7 +89,8 @@ describe('Container Toggle', () => { | |||
| 88 | 89 | }); | |
| 89 | 90 | ||
| 90 | 91 | it('initial state should be open', done => { | |
| 91 | - new ContainerToggle(container).addToggle(); | ||
| 92 | + const toggle = new ContainerToggle(container); | ||
| 93 | + toggle.addToggle(); | ||
| 92 | 94 | ||
| 93 | 95 | fastdom.defer(1, () => { | |
| 94 | 96 | assertState($container, 'open'); | |
@@ -97,7 +99,8 @@ describe('Container Toggle', () => { | |||
| 97 | 99 | }); | |
| 98 | 100 | ||
| 99 | 101 | it('should be able to close container', done => { | |
| 100 | - new ContainerToggle(container).addToggle(); | ||
| 102 | + const toggle = new ContainerToggle(container); | ||
| 103 | + toggle.addToggle(); | ||
| 101 | 104 | ||
| 102 | 105 | fastdom.defer(1, () => { | |
| 103 | 106 | simulateClick(); | |
@@ -110,9 +113,10 @@ describe('Container Toggle', () => { | |||
| 110 | 113 | }); | |
| 111 | 114 | ||
| 112 | 115 | it('should store state as user preference', done => { | |
| 113 | - new ContainerToggle(container).addToggle(); | ||
| 114 | - // click button | ||
| 116 | + const toggle = new ContainerToggle(container); | ||
| 117 | + toggle.addToggle(); | ||
| 115 | 118 | ||
| 119 | + // click button | ||
| 116 | 120 | fastdom.defer(1, () => { | |
| 117 | 121 | simulateClick(); | |
| 118 | 122 | ||
@@ -138,7 +142,8 @@ describe('Container Toggle', () => { | |||
| 138 | 142 | const prefs = {}; | |
| 139 | 143 | prefs[containerId] = 'closed'; | |
| 140 | 144 | userPrefs.set(storageId, prefs); | |
| 141 | - new ContainerToggle(container).addToggle(); | ||
| 145 | + const toggle = new ContainerToggle(container); | ||
| 146 | + toggle.addToggle(); | ||
| 142 | 147 | ||
| 143 | 148 | fastdom.defer(1, () => { | |
| 144 | 149 | assertState($container, 'closed'); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments