@icij/murmur-next 4.0.0 → 4.0.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.
- package/README.md +15 -19
- package/dist/lib/components/AccordionStep.vue.d.ts +79 -0
- package/dist/lib/components/AccordionWrapper.vue.d.ts +33 -0
- package/dist/lib/components/ActiveTextTruncate.vue.d.ts +101 -0
- package/dist/lib/components/AdvancedLinkForm.vue.d.ts +168 -0
- package/dist/lib/components/Brand.vue.d.ts +55 -0
- package/dist/lib/components/BrandExpansion.vue.d.ts +105 -0
- package/dist/lib/components/ConfirmButton.vue.d.ts +158 -0
- package/dist/lib/components/ContentPlaceholder.vue.d.ts +44 -0
- package/dist/lib/components/CustomPagination.vue.d.ts +130 -0
- package/dist/lib/components/DigitsInput.vue.d.ts +66 -0
- package/dist/lib/components/DonateForm.vue.d.ts +46 -0
- package/dist/lib/components/EmbedForm.vue.d.ts +121 -0
- package/dist/lib/components/EmbeddableFooter.vue.d.ts +103 -0
- package/dist/lib/components/FollowUsPopover.vue.d.ts +16 -0
- package/dist/lib/components/GenericFooter.vue.d.ts +47 -0
- package/dist/lib/components/GenericHeader.vue.d.ts +928 -0
- package/dist/lib/components/HapticCopy.vue.d.ts +156 -0
- package/dist/lib/components/ImddbHeader.vue.d.ts +960 -0
- package/dist/lib/components/OrdinalLegend.vue.d.ts +87 -0
- package/dist/lib/components/RangePicker.vue.d.ts +196 -0
- package/dist/lib/components/ResponsiveIframe.vue.d.ts +45 -0
- package/dist/lib/components/ScaleLegend.vue.d.ts +101 -0
- package/dist/lib/components/SecretInput.vue.d.ts +99 -0
- package/dist/lib/components/SelectableDropdown.vue.d.ts +210 -0
- package/dist/lib/components/SharingOptions.vue.d.ts +153 -0
- package/dist/lib/components/SharingOptionsLink.vue.d.ts +200 -0
- package/dist/lib/components/SignUpForm.vue.d.ts +141 -0
- package/dist/lib/components/SlideUpDown.vue.d.ts +74 -0
- package/dist/lib/components/TexturedDeck.vue.d.ts +89 -0
- package/dist/lib/components/TinyPagination.vue.d.ts +188 -0
- package/dist/lib/composables/chart.d.ts +48 -0
- package/dist/lib/composables/resizeObserver.d.ts +22 -0
- package/dist/lib/composables/sendEmail.d.ts +6 -0
- package/dist/lib/config.d.ts +19 -0
- package/dist/lib/config.default.d.ts +34 -0
- package/dist/lib/datavisualisations/BarChart.vue.d.ts +234 -0
- package/dist/lib/datavisualisations/ColumnChart.vue.d.ts +404 -0
- package/dist/lib/datavisualisations/LineChart.vue.d.ts +200 -0
- package/dist/lib/datavisualisations/StackedBarChart.vue.d.ts +342 -0
- package/dist/lib/datavisualisations/StackedColumnChart.vue.d.ts +412 -0
- package/dist/lib/enums.d.ts +32 -0
- package/dist/lib/i18n.d.ts +4 -0
- package/dist/lib/keys.d.ts +2 -0
- package/dist/lib/main.d.ts +52 -0
- package/dist/lib/maps/ChoroplethMap.vue.d.ts +460 -0
- package/dist/lib/maps/ChoroplethMapAnnotation.vue.d.ts +188 -0
- package/dist/lib/maps/SymbolMap.vue.d.ts +276 -0
- package/dist/lib/murmur.css +1 -0
- package/dist/lib/murmur.js +44661 -0
- package/dist/lib/murmur.js.map +1 -0
- package/dist/lib/murmur.umd.cjs +837 -0
- package/dist/lib/murmur.umd.cjs.map +1 -0
- package/dist/lib/types.d.ts +44 -0
- package/dist/lib/utils/animation.d.ts +8 -0
- package/dist/lib/utils/assets.d.ts +2 -0
- package/dist/lib/utils/clipboard.d.ts +2 -0
- package/dist/lib/utils/iframe-resizer.d.ts +10 -0
- package/dist/lib/utils/placeholder.d.ts +12 -0
- package/dist/lib/utils/placeholderTypes.d.ts +18 -0
- package/dist/lib/utils/strings.d.ts +1 -0
- package/package.json +15 -1
- package/.github/workflows/deploy-github-pages.yaml +0 -50
- package/.storybook/app.scss +0 -14
- package/.storybook/doc_variables.scss +0 -20
- package/.storybook/main.ts +0 -35
- package/.storybook/preview-head.html +0 -2
- package/.storybook/preview.ts +0 -32
- package/deploy.js +0 -15
- package/docs/components/ApiTable.vue +0 -171
- package/docs/components/App.vue +0 -146
- package/docs/components/CollapsibleBlock.vue +0 -122
- package/docs/components/DocsHeader.vue +0 -68
- package/docs/components/DocsMenu.vue +0 -201
- package/docs/components/DocsMenuSection.vue +0 -109
- package/docs/components/EditLink.vue +0 -49
- package/docs/components/OutboundLink.vue +0 -13
- package/docs/components/PalettePresenter.vue +0 -96
- package/docs/components/RepositoryLink.vue +0 -28
- package/docs/components/SampleCard.vue +0 -119
- package/docs/main.js +0 -42
- package/docs/pages/components/accordion/doc.md +0 -96
- package/docs/pages/components/active-text-truncate/doc.md +0 -44
- package/docs/pages/components/advanced-link-form/doc.md +0 -105
- package/docs/pages/components/brand/doc.md +0 -30
- package/docs/pages/components/brand-expansion/doc.md +0 -70
- package/docs/pages/components/confirm-button/doc.md +0 -91
- package/docs/pages/components/content-placeholder/doc.md +0 -16
- package/docs/pages/components/custom-pagination/doc.md +0 -61
- package/docs/pages/components/digits-input/doc.md +0 -28
- package/docs/pages/components/donate-form/doc.md +0 -20
- package/docs/pages/components/embed-form/doc.md +0 -22
- package/docs/pages/components/embeddable-footer/doc.md +0 -60
- package/docs/pages/components/follow-us-popover/doc.md +0 -5
- package/docs/pages/components/generic-footer/doc.md +0 -21
- package/docs/pages/components/generic-header/doc.md +0 -24
- package/docs/pages/components/haptic-copy/doc.md +0 -27
- package/docs/pages/components/imddb-header/doc.md +0 -23
- package/docs/pages/components/ordinal-legend/doc.md +0 -44
- package/docs/pages/components/range-picker/doc.md +0 -86
- package/docs/pages/components/responsive-iframe/doc.md +0 -13
- package/docs/pages/components/scale-legend/doc.md +0 -65
- package/docs/pages/components/secret-input/doc.md +0 -12
- package/docs/pages/components/selectable-dropdown/doc.md +0 -156
- package/docs/pages/components/sharing-options/doc.md +0 -13
- package/docs/pages/components/sharing-options-link/doc.md +0 -36
- package/docs/pages/components/sign-up-form/doc.md +0 -13
- package/docs/pages/components/slide-up-down/doc.md +0 -28
- package/docs/pages/components/textured-deck/doc.md +0 -78
- package/docs/pages/components/tiny-pagination/doc.md +0 -92
- package/docs/pages/datavisualisation/bars/doc.md +0 -110
- package/docs/pages/datavisualisation/columns/doc.md +0 -165
- package/docs/pages/datavisualisation/lines/doc.md +0 -139
- package/docs/pages/datavisualisation/stacked-bar/doc.md +0 -160
- package/docs/pages/datavisualisation/stacked-column/doc.md +0 -191
- package/docs/pages/getting-started/about-icij/doc.md +0 -13
- package/docs/pages/getting-started/custom-bootstrap/doc.md +0 -36
- package/docs/pages/getting-started/installation-guide/doc.md +0 -59
- package/docs/pages/getting-started/internationalization/doc.md +0 -74
- package/docs/pages/maps/choropleth-map/doc.md +0 -420
- package/docs/pages/maps/choropleth-map-annotation/doc.md +0 -373
- package/docs/pages/maps/symbol-map/doc.md +0 -203
- package/docs/pages/structure/breakpoints/doc.md +0 -3
- package/docs/pages/structure/grid/doc.md +0 -3
- package/docs/pages/utilities/assets/doc.md +0 -138
- package/docs/pages/utilities/config/doc.md +0 -52
- package/docs/pages/utilities/iframes/doc.md +0 -3
- package/docs/pages/visual/colors/doc.md +0 -31
- package/docs/pages/visual/iconography/doc.md +0 -56
- package/docs/pages/visual/states/doc.md +0 -77
- package/docs/pages/visual/themes/doc.md +0 -3
- package/docs/pages/visual/typography/doc.md +0 -71
- package/docs/routes.js +0 -25
- package/docs/store/index.js +0 -21
- package/docs/styles/app.scss +0 -36
- package/docs/styles/variables.scss +0 -20
- package/loaders/highlight-loader.js +0 -13
- package/loaders/markdown-loader.js +0 -91
- package/loaders/metadata-loader.js +0 -18
- package/loaders/sass-extract-loader.js +0 -14
- package/loaders/vue-docgen-loader.js +0 -14
- package/plugins/MdPluginTypes.ts +0 -10
- package/plugins/docs.ts +0 -50
- package/plugins/front-matter.ts +0 -36
- package/plugins/highlight.ts +0 -27
- package/plugins/markdown-it/api-table.ts +0 -25
- package/plugins/markdown-it/sample-card.ts +0 -31
- package/plugins/plugin-delete.ts +0 -47
- package/plugins/plugin-docgen.ts +0 -23
- package/plugins/sass-vars.ts +0 -25
- package/plugins/vue-docgen.ts +0 -29
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/img/arrow-bottom.svg +0 -3
- package/public/assets/img/texture-brick-black.jpg +0 -0
- package/public/assets/img/texture-brick.jpg +0 -0
- package/public/assets/img/texture-carbon-black.jpg +0 -0
- package/public/assets/img/texture-carbon.jpg +0 -0
- package/public/assets/img/texture-crack-black.jpg +0 -0
- package/public/assets/img/texture-crack.jpg +0 -0
- package/public/assets/img/texture-rock-black.jpg +0 -0
- package/public/assets/img/texture-rock.jpg +0 -0
- package/public/assets/img/texture-sand-black.jpg +0 -0
- package/public/assets/img/texture-sand.jpg +0 -0
- package/public/assets/img/texture-silk-black.jpg +0 -0
- package/public/assets/img/texture-silk.jpg +0 -0
- package/public/assets/topojson/france-departments.json +0 -1
- package/public/assets/topojson/paris-arrondissements.json +0 -1
- package/public/assets/topojson/world-countries-sans-antarctica.json +0 -1
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/site.webmanifest +0 -1
- package/stories/assets/code-brackets.svg +0 -1
- package/stories/assets/colors.svg +0 -1
- package/stories/assets/comments.svg +0 -1
- package/stories/assets/direction.svg +0 -1
- package/stories/assets/flow.svg +0 -1
- package/stories/assets/plugin.svg +0 -1
- package/stories/assets/repo.svg +0 -1
- package/stories/assets/stackalt.svg +0 -1
- package/stories/getting-started/about-icij.mdx +0 -14
- package/stories/getting-started/custom-bootstrap.mdx +0 -23
- package/stories/getting-started/installation-guide.mdx +0 -62
- package/stories/getting-started/internationalization.mdx +0 -63
- package/stories/murmur/components/AccordionStep.stories.ts +0 -33
- package/stories/murmur/components/AccordionWrapper.stories.ts +0 -69
- package/stories/murmur/components/ActiveTextTruncate.stories.ts +0 -32
- package/stories/murmur/components/AdvancedLinkForm.stories.ts +0 -77
- package/stories/murmur/components/Brand.stories.ts +0 -30
- package/stories/murmur/components/BrandExpansion.stories.ts +0 -41
- package/stories/murmur/components/ConfirmButton.stories.ts +0 -40
- package/stories/murmur/components/ContentPlaceholder.stories.ts +0 -41
- package/stories/murmur/components/CustomPagination.stories.ts +0 -42
- package/stories/murmur/components/DigitsInput.stories.ts +0 -29
- package/stories/murmur/components/DonateForm.stories.ts +0 -29
- package/stories/murmur/components/EmbedForm.stories.ts +0 -35
- package/stories/murmur/components/EmbeddableFooter.stories.ts +0 -59
- package/stories/murmur/components/FollowUsPopover.stories.ts +0 -24
- package/stories/murmur/components/GenericFooter.stories.ts +0 -27
- package/stories/murmur/components/GenericHeader.stories.ts +0 -27
- package/stories/murmur/components/HapticCopy.stories.ts +0 -40
- package/stories/murmur/components/ImddbHeader.stories.ts +0 -27
- package/stories/murmur/components/OrdinalLegend.stories.ts +0 -49
- package/stories/murmur/components/RangePicker.stories.ts +0 -98
- package/stories/murmur/components/ResponsiveIframe.stories.ts +0 -24
- package/stories/murmur/components/ScaleLegend.stories.ts +0 -65
- package/stories/murmur/components/SecretInput.stories.ts +0 -60
- package/stories/murmur/components/SelectableDropdown.stories.ts +0 -143
- package/stories/murmur/components/SharingOptions.stories.ts +0 -32
- package/stories/murmur/components/SharingOptionsLink.stories.ts +0 -53
- package/stories/murmur/components/SignUpForm.stories.ts +0 -51
- package/stories/murmur/components/SlideUpDown.stories.ts +0 -32
- package/stories/murmur/components/TexturedDeck.stories.ts +0 -83
- package/stories/murmur/components/TinyPagination.stories.ts +0 -65
- package/stories/murmur/datavisualisations/BarChart.stories.ts +0 -54
- package/stories/murmur/datavisualisations/ColumnChart.stories.ts +0 -88
- package/stories/murmur/datavisualisations/LineChart.stories.ts +0 -139
- package/stories/murmur/datavisualisations/StackedBarChart.stories.ts +0 -199
- package/stories/murmur/datavisualisations/StackedColumnChart.stories.ts +0 -136
- package/stories/murmur/decorators.ts +0 -108
- package/stories/murmur/maps/ChoroplethMap.stories.ts +0 -440
- package/stories/murmur/maps/ChoroplethMapAnnotation.stories.ts +0 -26
- package/stories/murmur/maps/SymbolMap.stories.ts +0 -24
- package/stories/murmur/utils.ts +0 -7
- package/tests/unit/components/AccordionStep.spec.ts +0 -157
- package/tests/unit/components/AccordionWrapper.spec.ts +0 -57
- package/tests/unit/components/ActiveTextTruncate.spec.js +0 -30
- package/tests/unit/components/AdvancedLinkForm.spec.js +0 -124
- package/tests/unit/components/Brand.spec.js +0 -50
- package/tests/unit/components/ContentPlaceholder.spec.js +0 -29
- package/tests/unit/components/CustomPagination.spec.js +0 -72
- package/tests/unit/components/DigitsInput.spec.ts +0 -157
- package/tests/unit/components/DonateForm.spec.js +0 -149
- package/tests/unit/components/EmbedForm.spec.js +0 -108
- package/tests/unit/components/EmbeddableFooter.spec.js +0 -11
- package/tests/unit/components/Fa.spec.js +0 -18
- package/tests/unit/components/FollowUsPopover.spec.js +0 -29
- package/tests/unit/components/GenericFooter.spec.js +0 -29
- package/tests/unit/components/GenericHeader.spec.js +0 -104
- package/tests/unit/components/HapticCopy.spec.js +0 -123
- package/tests/unit/components/ImddbHeader.spec.js +0 -96
- package/tests/unit/components/OrdinalLegend.spec.js +0 -120
- package/tests/unit/components/RangePicker.spec.ts +0 -87
- package/tests/unit/components/ResponsiveIframe.spec.js +0 -20
- package/tests/unit/components/ScaleLegend.spec.js +0 -139
- package/tests/unit/components/SecretInput.spec.js +0 -81
- package/tests/unit/components/SelectableDropdown.spec.js +0 -160
- package/tests/unit/components/SharingOptions.spec.js +0 -125
- package/tests/unit/components/SharingOptionsLink.spec.js +0 -184
- package/tests/unit/components/SignUpForm.spec.js +0 -145
- package/tests/unit/components/SlideUpDown.spec.js +0 -59
- package/tests/unit/components/TinyPagination.spec.js +0 -46
- package/tests/unit/config.spec.js +0 -136
- package/tests/unit/datavisualisations/BarChart.spec.js +0 -63
- package/tests/unit/datavisualisations/ColumnChart.spec.js +0 -344
- package/tests/unit/datavisualisations/LineChart.spec.js +0 -155
- package/tests/unit/datavisualisations/StackedBarChart.spec.js +0 -294
- package/tests/unit/datavisualisations/StackedColumnChart.spec.js +0 -443
- package/tests/unit/i18n.spec.ts +0 -19
- package/tests/unit/main.spec.js +0 -82
- package/tests/unit/maps/ChoroplethMap.spec.js +0 -214
- package/tests/unit/maps/ChoroplethMapAnnotation.spec.ts +0 -186
- package/tests/unit/maps/SymbolMap.spec.js +0 -92
- package/tests/unit/require.spec.js +0 -22
- package/tests/unit/setup.js +0 -13
- package/tests/unit/utils/assets.spec.js +0 -61
- package/tests/unit/utils/clipboard.spec.js +0 -18
- package/tests/unit/utils/iframe-resizer.spec.js +0 -71
- package/tsconfig.json +0 -35
- package/vite.config.ts +0 -79
- package/vitest.config.ts +0 -19
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils'
|
|
2
|
-
import TinyPagination from '@/components/TinyPagination.vue'
|
|
3
|
-
|
|
4
|
-
describe('TinyPagination.vue', () => {
|
|
5
|
-
it('is a Vue instance', () => {
|
|
6
|
-
const wrapper = mount(TinyPagination)
|
|
7
|
-
expect(wrapper.vm).toBeTruthy()
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
it('renders the pagination component', () => {
|
|
11
|
-
const wrapper = mount(TinyPagination)
|
|
12
|
-
expect(wrapper.find('.tiny-pagination').exists()).toEqual(true)
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
it('expects totalRows, perPage, value as props', () => {
|
|
16
|
-
const propsData = { totalRows: 200, perPage: 20, modelValue: 2 }
|
|
17
|
-
const wrapper = mount(TinyPagination, { propsData })
|
|
18
|
-
expect(wrapper.vm.totalRows).toBe(200)
|
|
19
|
-
expect(wrapper.vm.perPage).toBe(20)
|
|
20
|
-
expect(wrapper.vm.modelValue).toBe(2)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('calculates numberOfPages based on the totalRows and perPage prop values', () => {
|
|
24
|
-
const propsData = { totalRows: 200, perPage: 20 }
|
|
25
|
-
const wrapper = mount(TinyPagination, { propsData })
|
|
26
|
-
expect(wrapper.vm.numberOfPages).toBe(10)
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it('emits an event on form submit with the currentPageInput', async () => {
|
|
30
|
-
const propsData = { totalRows: 200, perPage: 20, }
|
|
31
|
-
const wrapper = mount(TinyPagination, { propsData })
|
|
32
|
-
wrapper.vm.currentPageInput = 3
|
|
33
|
-
await wrapper.vm.applyPageForm()
|
|
34
|
-
await wrapper.vm.$nextTick()
|
|
35
|
-
expect(wrapper.emitted("update:modelValue")[0]).toContain(3)
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('does not emit an event if the currentPageInput is invalid', async () => {
|
|
39
|
-
const propsData = { totalRows: 200, perPage: 20 }
|
|
40
|
-
const wrapper = mount(TinyPagination, { propsData })
|
|
41
|
-
wrapper.vm.currentPageInput = "azrazzer"
|
|
42
|
-
await wrapper.vm.applyPageForm()
|
|
43
|
-
await wrapper.vm.$nextTick()
|
|
44
|
-
expect(wrapper.emitted()).toEqual({})
|
|
45
|
-
})
|
|
46
|
-
})
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { config } from '@vue/test-utils';
|
|
2
|
-
|
|
3
|
-
import { default as murmurConfig, Config } from '@/config'
|
|
4
|
-
import Murmur from '@/main'
|
|
5
|
-
import { getCurrentInstance, h} from "vue";
|
|
6
|
-
import { mount } from "@vue/test-utils";
|
|
7
|
-
import {beforeAll} from "vitest";
|
|
8
|
-
describe('config.ts', () => {
|
|
9
|
-
beforeAll(()=>{
|
|
10
|
-
config.global.plugins = []
|
|
11
|
-
})
|
|
12
|
-
it('should be an instance of `Config`', () => {
|
|
13
|
-
expect(murmurConfig).toBeInstanceOf(Config)
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
it('should define a scope named `foo`', () => {
|
|
17
|
-
murmurConfig.set('foo.bar', 'uwu')
|
|
18
|
-
expect(murmurConfig.scope('foo')).toBeInstanceOf(Config)
|
|
19
|
-
expect(murmurConfig.scope('foo').get('bar')).toBe('uwu')
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
it('should define two scopes named `foo` and `bar`', () => {
|
|
23
|
-
murmurConfig.set('foo.bar', 'uwu')
|
|
24
|
-
murmurConfig.set('bar.foo', 'owo')
|
|
25
|
-
expect(murmurConfig.scope('foo').get('bar')).toBe('uwu')
|
|
26
|
-
expect(murmurConfig.scope('bar').get('foo')).toBe('owo')
|
|
27
|
-
expect(murmurConfig.scopes.foo).toBeDefined()
|
|
28
|
-
expect(murmurConfig.scopes.bar).toBeDefined()
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('should define two values named `foo` and `bar`', () => {
|
|
32
|
-
murmurConfig.set('foo', 'uwu')
|
|
33
|
-
murmurConfig.set('bar', 'owo')
|
|
34
|
-
expect(murmurConfig.values.foo).toBeDefined()
|
|
35
|
-
expect(murmurConfig.values.bar).toBeDefined()
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('should merge the given object with the murmurConfig', () => {
|
|
39
|
-
murmurConfig.set('foo', 'erased')
|
|
40
|
-
murmurConfig.merge({ 'foo': 'foo', 'bar': 'bar' })
|
|
41
|
-
expect(murmurConfig.get('foo')).toBe('foo')
|
|
42
|
-
expect(murmurConfig.get('bar')).toBe('bar')
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
it('should merge all the boolean values', () => {
|
|
46
|
-
murmurConfig.merge({ 'foo': true, 'bar': false })
|
|
47
|
-
expect(murmurConfig.get('foo')).toBe(true)
|
|
48
|
-
expect(murmurConfig.get('bar')).toBe(false)
|
|
49
|
-
murmurConfig.merge({ 'foo': false, 'bar': true })
|
|
50
|
-
expect(murmurConfig.get('foo')).toBe(false)
|
|
51
|
-
expect(murmurConfig.get('bar')).toBe(true)
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('should merge the given object and its scopes with the murmurConfig', () => {
|
|
55
|
-
murmurConfig.merge({ 'foo.bar': 'foobar' })
|
|
56
|
-
expect(murmurConfig.scope('foo').get('bar')).toBe('foobar')
|
|
57
|
-
murmurConfig.merge({ 'bar.foo': 'barfoo' })
|
|
58
|
-
expect(murmurConfig.scope('bar').get('foo')).toBe('barfoo')
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
it('should merge the given object with the murmurConfig with a new key', () => {
|
|
62
|
-
expect(murmurConfig.get('help')).toBeUndefined()
|
|
63
|
-
murmurConfig.merge({ 'help': 'link' })
|
|
64
|
-
expect(murmurConfig.get('help')).toBe('link')
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
it('should give the value of a given key as true', () => {
|
|
68
|
-
murmurConfig.set('activated', 1)
|
|
69
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
70
|
-
murmurConfig.set('activated', '1')
|
|
71
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
72
|
-
murmurConfig.set('activated', 'true')
|
|
73
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
74
|
-
murmurConfig.set('activated', true)
|
|
75
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
76
|
-
murmurConfig.set('activated', 'foo')
|
|
77
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
78
|
-
murmurConfig.set('activated', 'bar')
|
|
79
|
-
expect(murmurConfig.is('activated')).toBeTruthy()
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
it('should give the value of a given key as false', () => {
|
|
83
|
-
murmurConfig.set('activated', 0)
|
|
84
|
-
expect(murmurConfig.is('activated')).toBeFalsy()
|
|
85
|
-
murmurConfig.set('activated', '0')
|
|
86
|
-
expect(murmurConfig.is('activated')).toBeFalsy()
|
|
87
|
-
murmurConfig.set('activated', 'false')
|
|
88
|
-
expect(murmurConfig.is('activated')).toBeFalsy()
|
|
89
|
-
murmurConfig.set('activated', false)
|
|
90
|
-
expect(murmurConfig.is('activated')).toBeFalsy()
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
it('should give the value of a given key as false (when it\'s true)', () => {
|
|
94
|
-
murmurConfig.set('activated', 0)
|
|
95
|
-
expect(murmurConfig.isnt('activated')).toBeTruthy()
|
|
96
|
-
murmurConfig.set('activated', '0')
|
|
97
|
-
expect(murmurConfig.isnt('activated')).toBeTruthy()
|
|
98
|
-
murmurConfig.set('activated', 'false')
|
|
99
|
-
expect(murmurConfig.isnt('activated')).toBeTruthy()
|
|
100
|
-
murmurConfig.set('activated', false)
|
|
101
|
-
expect(murmurConfig.isnt('activated')).toBeTruthy()
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
it('should create a reactive property', async () => {
|
|
106
|
-
const component = {
|
|
107
|
-
setup(){
|
|
108
|
-
const app = getCurrentInstance();
|
|
109
|
-
return ()=> h('div', app.appContext.config.globalProperties.$config.get('reactiveProp', 'bar'))
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const wrapper = mount(component,{global: {plugins: [Murmur]} })
|
|
114
|
-
expect(wrapper.text()).toBe('bar')
|
|
115
|
-
wrapper.vm.$config.set('reactiveProp', 'baz')
|
|
116
|
-
await wrapper.vm.$nextTick()
|
|
117
|
-
expect(wrapper.text()).toBe('baz')
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
it('should create a nested reactive property from inside the component', async () => {
|
|
122
|
-
//configVTU.global.plugins.push(Murmur);
|
|
123
|
-
const component = {
|
|
124
|
-
setup(){
|
|
125
|
-
const app = getCurrentInstance();
|
|
126
|
-
return ()=>h('div', app.appContext.config.globalProperties.$config.get('nested.reactiveProp', 'bar'))
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const wrapper = mount(component, {global: {plugins: [Murmur]} })
|
|
131
|
-
expect(wrapper.text()).toBe('bar')
|
|
132
|
-
wrapper.vm.$config.set('nested.reactiveProp', 'baz')
|
|
133
|
-
await wrapper.vm.$nextTick()
|
|
134
|
-
expect(wrapper.text()).toBe('baz')
|
|
135
|
-
})
|
|
136
|
-
})
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import * as d3 from 'd3'
|
|
2
|
-
import { mount,flushPromises} from '@vue/test-utils'
|
|
3
|
-
import BarChart from "@/datavisualisations/BarChart.vue";
|
|
4
|
-
|
|
5
|
-
vi.mock('d3', async () => {
|
|
6
|
-
return {
|
|
7
|
-
...await vi.importActual('d3'),
|
|
8
|
-
}
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
// Mock HTML element offset so the size of the chart can be calculated
|
|
12
|
-
// dynamicly using JSDOM and tests
|
|
13
|
-
Object.defineProperties(window.HTMLElement.prototype, {
|
|
14
|
-
offsetWidth: {
|
|
15
|
-
get () { return parseFloat(this.style.width) || 0 }
|
|
16
|
-
},
|
|
17
|
-
offsetHeight: {
|
|
18
|
-
get () { return parseFloat(this.style.height) || 0 }
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
describe('BarChart.vue', () => {
|
|
23
|
-
|
|
24
|
-
describe('a five columns chart with 1 highlight and no y axis', () => {
|
|
25
|
-
|
|
26
|
-
let wrapper
|
|
27
|
-
|
|
28
|
-
beforeEach(async () => {
|
|
29
|
-
|
|
30
|
-
const propsData = {
|
|
31
|
-
data: [
|
|
32
|
-
{
|
|
33
|
-
"label": "Warned about local complications",
|
|
34
|
-
"value": 52
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"label": "Not warned",
|
|
38
|
-
"value": 42,
|
|
39
|
-
"highlight": true
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"label": "Warned thoroughly",
|
|
43
|
-
"value": 1
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"label": "Other",
|
|
47
|
-
"value": 6
|
|
48
|
-
}
|
|
49
|
-
]
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
wrapper = mount(BarChart, {propsData})
|
|
53
|
-
|
|
54
|
-
wrapper.vm.$el.style.width = '500px'
|
|
55
|
-
await wrapper.vm.$nextTick()
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
it('is a Vue instance', () => {
|
|
59
|
-
expect(wrapper.vm).toBeTruthy()
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
})
|
|
63
|
-
})
|
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
import * as d3 from 'd3'
|
|
2
|
-
import { mount,flushPromises} from '@vue/test-utils'
|
|
3
|
-
import ColumnChart from '@/datavisualisations/ColumnChart.vue'
|
|
4
|
-
|
|
5
|
-
vi.mock('d3', async () => {
|
|
6
|
-
return {
|
|
7
|
-
...await vi.importActual('d3'),
|
|
8
|
-
}
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
// Mock HTML element offset so the size of the chart can be calculated
|
|
12
|
-
// dynamicly using JSDOM and tests
|
|
13
|
-
Object.defineProperties(window.HTMLElement.prototype, {
|
|
14
|
-
offsetWidth: {
|
|
15
|
-
get () { return parseFloat(this.style.width) || 0 }
|
|
16
|
-
},
|
|
17
|
-
offsetHeight: {
|
|
18
|
-
get () { return parseFloat(this.style.height) || 0 }
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
describe('ColumnChart.vue', () => {
|
|
23
|
-
|
|
24
|
-
describe('a five columns chart with 1 highlight and no y axis', () => {
|
|
25
|
-
|
|
26
|
-
let wrapper
|
|
27
|
-
|
|
28
|
-
beforeEach(async () => {
|
|
29
|
-
|
|
30
|
-
const propsData = {
|
|
31
|
-
data: [
|
|
32
|
-
{ date: 2000, value: 0 },
|
|
33
|
-
{ date: 2001, value: 1 },
|
|
34
|
-
{ date: 2002, value: 2 },
|
|
35
|
-
{ date: 2003, value: 3, highlight: true },
|
|
36
|
-
{ date: 2004, value: 4 }
|
|
37
|
-
],
|
|
38
|
-
noYAxis: true
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
42
|
-
|
|
43
|
-
wrapper.vm.$el.style.width = '500px'
|
|
44
|
-
await wrapper.vm.$nextTick()
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it('is a Vue instance', () => {
|
|
48
|
-
expect(wrapper.vm).toBeTruthy()
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
it('creates five x-axis ticks', () => {
|
|
52
|
-
expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(5)
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
it('creates no y-axis but a x-axis', () => {
|
|
56
|
-
expect(wrapper.find('.column-chart__axis--y').exists()).toBeFalsy()
|
|
57
|
-
expect(wrapper.find('.column-chart__axis--x').exists()).toBeTruthy()
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
it('creates x-axis ticks with the right years ', () => {
|
|
61
|
-
const ticks = wrapper.findAll('.column-chart__axis--x .tick')
|
|
62
|
-
expect(ticks.at(0).text()).toBe('2000')
|
|
63
|
-
expect(ticks.at(1).text()).toBe('2001')
|
|
64
|
-
expect(ticks.at(2).text()).toBe('2002')
|
|
65
|
-
expect(ticks.at(3).text()).toBe('2003')
|
|
66
|
-
expect(ticks.at(4).text()).toBe('2004')
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
it('creates five columns', () => {
|
|
70
|
-
expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(5)
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
it('creates the first column with minimum height', () => {
|
|
74
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
|
|
75
|
-
const height = parseFloat(column.attributes('height'))
|
|
76
|
-
expect(height).toBe(0)
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
it('creates the third column with medium height', () => {
|
|
80
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
|
|
81
|
-
const height = parseFloat(column.attributes('height'))
|
|
82
|
-
expect(height).toBe(wrapper.vm.padded.height / 2)
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
it('creates the last column with maximum height', () => {
|
|
86
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(4)
|
|
87
|
-
const height = parseFloat(column.attributes('height'))
|
|
88
|
-
expect(height).toBe(wrapper.vm.padded.height)
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
it('should highlight only the fourth column', () => {
|
|
92
|
-
const columns = wrapper.findAll('.column-chart__columns__item')
|
|
93
|
-
expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
94
|
-
expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
95
|
-
expect(columns.at(2).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
96
|
-
expect(columns.at(3).classes('column-chart__columns__item--highlight')).toBeTruthy()
|
|
97
|
-
expect(columns.at(4).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
98
|
-
})
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
describe('a two columns chart with no highlights using remote JSON', () => {
|
|
102
|
-
|
|
103
|
-
let wrapper
|
|
104
|
-
|
|
105
|
-
beforeAll(async () => {
|
|
106
|
-
d3.json = vi.fn().mockResolvedValue([
|
|
107
|
-
{ date: 2019, value: 50 },
|
|
108
|
-
{ date: 2020, value: 100 }
|
|
109
|
-
])
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
beforeEach(async () => {
|
|
113
|
-
const propsData = { data: 'http://localhost/data.json' }
|
|
114
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
115
|
-
wrapper.vm.$el.style.width = '500px'
|
|
116
|
-
await wrapper.vm.$nextTick()
|
|
117
|
-
await flushPromises()
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
it('is a Vue instance', () => {
|
|
121
|
-
expect(wrapper.vm).toBeTruthy()
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
it('creates two x-axis ticks', () => {
|
|
125
|
-
expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(2)
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
it('creates x-axis ticks with the right years ', () => {
|
|
129
|
-
const ticks = wrapper.findAll('.column-chart__axis--x .tick')
|
|
130
|
-
expect(ticks.at(0).text()).toBe('2019')
|
|
131
|
-
expect(ticks.at(1).text()).toBe('2020')
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
it('creates two columns', () => {
|
|
135
|
-
expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(2)
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
it('creates the first column with medium height', () => {
|
|
139
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
|
|
140
|
-
const height = parseFloat(column.attributes('height'))
|
|
141
|
-
expect(height).toBe(wrapper.vm.padded.height / 2)
|
|
142
|
-
})
|
|
143
|
-
|
|
144
|
-
it('creates the second column with maximum height', () => {
|
|
145
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(1)
|
|
146
|
-
const height = parseFloat(column.attributes('height'))
|
|
147
|
-
expect(height).toBe(wrapper.vm.padded.height)
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
it('should have no highlighted column', () => {
|
|
151
|
-
const columns = wrapper.findAll('.column-chart__columns__item')
|
|
152
|
-
expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
153
|
-
expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
|
|
157
|
-
describe('a 10 columns chart with two highlights using remote CSV and no tooltips', () => {
|
|
158
|
-
|
|
159
|
-
let wrapper
|
|
160
|
-
|
|
161
|
-
beforeAll(() => {
|
|
162
|
-
d3.csv = vi.fn().mockReturnValue([
|
|
163
|
-
{ date: 2000, indicator: 0, highlight: false },
|
|
164
|
-
{ date: 2001, indicator: 10, highlight: false },
|
|
165
|
-
{ date: 2002, indicator: 20, highlight: false },
|
|
166
|
-
{ date: 2003, indicator: 30, highlight: false },
|
|
167
|
-
{ date: 2004, indicator: 40, highlight: false },
|
|
168
|
-
{ date: 2005, indicator: 50, highlight: true },
|
|
169
|
-
{ date: 2006, indicator: 60, highlight: false },
|
|
170
|
-
{ date: 2007, indicator: 70, highlight: true },
|
|
171
|
-
{ date: 2008, indicator: 80, highlight: false },
|
|
172
|
-
{ date: 2009, indicator: 90, highlight: false }
|
|
173
|
-
])
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
beforeEach(async () => {
|
|
177
|
-
const propsData = {
|
|
178
|
-
data: 'http://localhost/data.csv',
|
|
179
|
-
dataUrlType: 'csv',
|
|
180
|
-
seriesName: 'indicator',
|
|
181
|
-
noTooltips: true
|
|
182
|
-
}
|
|
183
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
184
|
-
wrapper.vm.$el.style.width = '500px'
|
|
185
|
-
await wrapper.vm.$nextTick()
|
|
186
|
-
})
|
|
187
|
-
|
|
188
|
-
it('is a Vue instance', () => {
|
|
189
|
-
expect(wrapper.vm).toBeTruthy()
|
|
190
|
-
})
|
|
191
|
-
|
|
192
|
-
it('creates ten x-axis ticks', () => {
|
|
193
|
-
expect(wrapper.findAll('.column-chart__axis--x .tick')).toHaveLength(10)
|
|
194
|
-
})
|
|
195
|
-
|
|
196
|
-
it('creates x-axis ticks with the right years ', () => {
|
|
197
|
-
const ticks = wrapper.findAll('.column-chart__axis--x .tick')
|
|
198
|
-
expect(ticks.at(0).text()).toBe('2000')
|
|
199
|
-
expect(ticks.at(1).text()).toBe('2001')
|
|
200
|
-
expect(ticks.at(2).text()).toBe('2002')
|
|
201
|
-
expect(ticks.at(3).text()).toBe('2003')
|
|
202
|
-
expect(ticks.at(4).text()).toBe('2004')
|
|
203
|
-
expect(ticks.at(5).text()).toBe('2005')
|
|
204
|
-
expect(ticks.at(6).text()).toBe('2006')
|
|
205
|
-
expect(ticks.at(7).text()).toBe('2007')
|
|
206
|
-
expect(ticks.at(8).text()).toBe('2008')
|
|
207
|
-
expect(ticks.at(9).text()).toBe('2009')
|
|
208
|
-
})
|
|
209
|
-
|
|
210
|
-
it('creates ten columns', () => {
|
|
211
|
-
expect(wrapper.findAll('.column-chart__columns__item__bar')).toHaveLength(10)
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
it('creates the first column with medium height', () => {
|
|
215
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(0)
|
|
216
|
-
const height = parseFloat(column.attributes('height'))
|
|
217
|
-
expect(height).toBe(0)
|
|
218
|
-
})
|
|
219
|
-
|
|
220
|
-
it('creates the last column with maximum height', () => {
|
|
221
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(9)
|
|
222
|
-
const height = parseFloat(column.attributes('height'))
|
|
223
|
-
expect(height).toBe(wrapper.vm.padded.height)
|
|
224
|
-
})
|
|
225
|
-
|
|
226
|
-
it('should have two highlighted columns', () => {
|
|
227
|
-
const columns = wrapper.findAll('.column-chart__columns__item')
|
|
228
|
-
expect(columns.at(0).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
229
|
-
expect(columns.at(1).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
230
|
-
expect(columns.at(2).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
231
|
-
expect(columns.at(3).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
232
|
-
expect(columns.at(4).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
233
|
-
expect(columns.at(5).classes('column-chart__columns__item--highlight')).toBeTruthy()
|
|
234
|
-
expect(columns.at(6).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
235
|
-
expect(columns.at(7).classes('column-chart__columns__item--highlight')).toBeTruthy()
|
|
236
|
-
expect(columns.at(8).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
237
|
-
expect(columns.at(9).classes('column-chart__columns__item--highlight')).toBeFalsy()
|
|
238
|
-
})
|
|
239
|
-
|
|
240
|
-
it('should have 0 tooltips', () => {
|
|
241
|
-
const tooltips = wrapper.findAll('.column-chart__tooltips__item')
|
|
242
|
-
expect(tooltips).toHaveLength(0)
|
|
243
|
-
})
|
|
244
|
-
})
|
|
245
|
-
|
|
246
|
-
describe('a three columns chart with no highlights using remote JSON', () => {
|
|
247
|
-
let wrapper
|
|
248
|
-
|
|
249
|
-
beforeAll(() => {
|
|
250
|
-
// eslint-disable-next-line no-import-assign
|
|
251
|
-
d3.json = vi.fn().mockResolvedValue([
|
|
252
|
-
{ date: 2019, value: 30 },
|
|
253
|
-
{ date: 2020, value: 60 },
|
|
254
|
-
{ date: 2021, value: 90 }
|
|
255
|
-
])
|
|
256
|
-
})
|
|
257
|
-
|
|
258
|
-
beforeEach(async () => {
|
|
259
|
-
const propsData = { data: 'http://localhost/data.json', noXAxis: true }
|
|
260
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
261
|
-
wrapper.vm.$el.style.width = '500px'
|
|
262
|
-
await wrapper.vm.$nextTick()
|
|
263
|
-
})
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
it('creates no x-axis but a y-axis', () => {
|
|
267
|
-
expect(wrapper.find('.column-chart__axis--x').exists()).toBeFalsy()
|
|
268
|
-
expect(wrapper.find('.column-chart__axis--y').exists()).toBeTruthy()
|
|
269
|
-
})
|
|
270
|
-
|
|
271
|
-
it('should have a max value to 100 set with a property', async () => {
|
|
272
|
-
const propsData = { data: 'http://localhost/data.json', maxValue: 100 }
|
|
273
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
274
|
-
wrapper.vm.$el.style.width = '500px'
|
|
275
|
-
await new Promise((resolve) => setTimeout(resolve))
|
|
276
|
-
await wrapper.vm.$nextTick()
|
|
277
|
-
|
|
278
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
|
|
279
|
-
const height = parseFloat(column.attributes('height'))
|
|
280
|
-
expect(height).toBe(wrapper.vm.padded.height * 0.9)
|
|
281
|
-
})
|
|
282
|
-
|
|
283
|
-
it('should have a max value to 180 set with a property', async () => {
|
|
284
|
-
const propsData = { data: 'http://localhost/data.json', maxValue: 180 }
|
|
285
|
-
wrapper = mount(ColumnChart, { propsData })
|
|
286
|
-
wrapper.vm.$el.style.width = '500px'
|
|
287
|
-
await new Promise((resolve) => setTimeout(resolve))
|
|
288
|
-
await wrapper.vm.$nextTick()
|
|
289
|
-
|
|
290
|
-
const column = wrapper.findAll('.column-chart__columns__item__bar').at(2)
|
|
291
|
-
const height = parseFloat(column.attributes('height'))
|
|
292
|
-
expect(height).toBe(wrapper.vm.padded.height / 2)
|
|
293
|
-
})
|
|
294
|
-
|
|
295
|
-
it('should have 3 tooltips, none visible', () => {
|
|
296
|
-
const tooltips = wrapper.findAll('.column-chart__tooltips__item')
|
|
297
|
-
expect(tooltips).toHaveLength(3)
|
|
298
|
-
const visibleTooltips = wrapper.findAll('.column-chart__tooltips__item__wrapper')
|
|
299
|
-
expect(visibleTooltips).toHaveLength(0)
|
|
300
|
-
})
|
|
301
|
-
|
|
302
|
-
it('should have one tooltip visible after the mouse overs a column', async () => {
|
|
303
|
-
await wrapper.findAll('.column-chart__columns__item').at(0).trigger('mouseover') // TODO fix me
|
|
304
|
-
await wrapper.vm.$nextTick()
|
|
305
|
-
const visibleTooltips = wrapper.findAll('.column-chart__tooltips__item__wrapper')
|
|
306
|
-
expect(visibleTooltips).toHaveLength(1)
|
|
307
|
-
})
|
|
308
|
-
|
|
309
|
-
it('should hide the tooltip after the mouse leaves a column', async () => {
|
|
310
|
-
const firstColumn = wrapper.findAll('.column-chart__columns__item').at(0)
|
|
311
|
-
|
|
312
|
-
await firstColumn.trigger('mouseover')
|
|
313
|
-
await wrapper.vm.$nextTick()
|
|
314
|
-
expect(wrapper.findAll('.column-chart__tooltips__item__wrapper')).toHaveLength(1)
|
|
315
|
-
|
|
316
|
-
await firstColumn.trigger('mouseleave')
|
|
317
|
-
await wrapper.vm.$nextTick()
|
|
318
|
-
expect(wrapper.findAll('.column-chart__tooltips__item__wrapper')).toHaveLength(0)
|
|
319
|
-
})
|
|
320
|
-
|
|
321
|
-
it('should position the first tooltip next to the first bar', () => {
|
|
322
|
-
const { element: firstTooltip } = wrapper.findAll('.column-chart__tooltips__item').at(0)
|
|
323
|
-
const x = wrapper.vm.bars[0].x + wrapper.vm.bars[0].width / 2 + wrapper.vm.margin.left
|
|
324
|
-
const y = wrapper.vm.bars[0].y + wrapper.vm.margin.top
|
|
325
|
-
expect(firstTooltip.style.left).toBe(`${x}px`)
|
|
326
|
-
expect(firstTooltip.style.top).toBe(`${y}px`)
|
|
327
|
-
})
|
|
328
|
-
|
|
329
|
-
it('should position the third tooltip before to the third bar', () => {
|
|
330
|
-
const { element: thirdTooltip } = wrapper.findAll('.column-chart__tooltips__item').at(2)
|
|
331
|
-
const x = wrapper.vm.bars[2].x + wrapper.vm.bars[2].width / 2 + wrapper.vm.margin.left
|
|
332
|
-
const y = wrapper.vm.bars[2].y + wrapper.vm.margin.top
|
|
333
|
-
expect(thirdTooltip.style.left).toBe(`${x}px`)
|
|
334
|
-
expect(thirdTooltip.style.top).toBe(`${y}px`)
|
|
335
|
-
})
|
|
336
|
-
|
|
337
|
-
it('should emit a "select" event when clicking on an item', async () => {
|
|
338
|
-
await wrapper.findAll('.column-chart__columns__item__bar').at(0).trigger('click')
|
|
339
|
-
|
|
340
|
-
expect(wrapper.emitted().select).toBeTruthy()
|
|
341
|
-
expect(wrapper.emitted().select[0][0]).toBe(wrapper.vm.bars[0].datum)
|
|
342
|
-
})
|
|
343
|
-
})
|
|
344
|
-
})
|