From 4eee1eca54c6d8aa032a7120a3831bc15cbb3e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 16 Apr 2021 22:53:48 +0200 Subject: [PATCH] test: add tests for Extension.extend() --- .../integration/core/extendExtensions.spec.ts | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 tests/cypress/integration/core/extendExtensions.spec.ts diff --git a/tests/cypress/integration/core/extendExtensions.spec.ts b/tests/cypress/integration/core/extendExtensions.spec.ts new file mode 100644 index 00000000..b172fe6e --- /dev/null +++ b/tests/cypress/integration/core/extendExtensions.spec.ts @@ -0,0 +1,134 @@ +/// + +import { Extension } from '@tiptap/core/src/Extension' +import getExtensionField from '@tiptap/core/src/helpers/getExtensionField' + +describe('extend extensions', () => { + it('should define a config', () => { + const extension = Extension.create({ + addAttributes() { + return { + foo: {}, + } + }, + }) + + const attributes = getExtensionField(extension, 'addAttributes')() + + expect(attributes).to.deep.eq({ + foo: {}, + }) + }) + + it('should overwrite a config', () => { + const extension = Extension + .create({ + addAttributes() { + return { + foo: {}, + } + }, + }) + .extend({ + addAttributes() { + return { + bar: {}, + } + }, + }) + + const attributes = getExtensionField(extension, 'addAttributes')() + + expect(attributes).to.deep.eq({ + bar: {}, + }) + }) + + it('should merge configs', () => { + const extension = Extension + .create({ + addAttributes() { + return { + foo: {}, + } + }, + }) + .extend({ + addAttributes() { + return { + ...this.parent?.(), + bar: {}, + } + }, + }) + + const attributes = getExtensionField(extension, 'addAttributes')() + + expect(attributes).to.deep.eq({ + foo: {}, + bar: {}, + }) + }) + + it('should merge configs multiple times', () => { + const extension = Extension + .create({ + addAttributes() { + return { + foo: {}, + } + }, + }) + .extend({ + addAttributes() { + return { + ...this.parent?.(), + bar: {}, + } + }, + }) + .extend({ + addAttributes() { + return { + ...this.parent?.(), + baz: {}, + } + }, + }) + + const attributes = getExtensionField(extension, 'addAttributes')() + + expect(attributes).to.deep.eq({ + foo: {}, + bar: {}, + baz: {}, + }) + }) + + it('should merge configs without direct parent configuration', () => { + const extension = Extension + .create({ + addAttributes() { + return { + foo: {}, + } + }, + }) + .extend() + .extend({ + addAttributes() { + return { + ...this.parent?.(), + bar: {}, + } + }, + }) + + const attributes = getExtensionField(extension, 'addAttributes')() + + expect(attributes).to.deep.eq({ + foo: {}, + bar: {}, + }) + }) +})