aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src/components/Markdown.cy.ts
blob: ccdf43c26df87ee6e9cb7d8b33384d2eb93f3537 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*!
 * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

import Markdown from './Markdown.vue'

describe('Markdown component', () => {
	it('renders links', () => {
		cy.mount(Markdown, {
			propsData: {
				text: 'This is [a link](http://example.com)!',
			},
		})

		cy.contains('This is')
			.find('a')
			.should('exist')
			.and('have.attr', 'href', 'http://example.com')
			.and('contain.text', 'a link')
	})

	it('renders headings', () => {
		cy.mount(Markdown, {
			propsData: {
				text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
			},
		})

		for (let level = 1; level <= 6; level++) {
			cy.contains(`h${level}`, `level ${level}`)
				.should('be.visible')
		}
	})

	it('can limit headings', () => {
		cy.mount(Markdown, {
			propsData: {
				text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
				minHeading: 4,
			},
		})

		cy.get('h1').should('not.exist')
		cy.get('h2').should('not.exist')
		cy.get('h3').should('not.exist')
		cy.get('h4')
			.should('exist')
			.and('contain.text', 'level 1')
		cy.get('h5')
			.should('exist')
			.and('contain.text', 'level 2')
		cy.contains('h6', 'level 3').should('exist')
		cy.contains('h6', 'level 4').should('exist')
		cy.contains('h6', 'level 5').should('exist')
		cy.contains('h6', 'level 6').should('exist')
	})
})