Skip to content

Commit

Permalink
test: enable flexible extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
ifiokjr committed Feb 16, 2020
1 parent a4fd99e commit 667d153
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 110 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const create = (params: CodeBlockExtensionOptions = Object.create(null)) =>
renderEditor({
plainNodes: [],
attrNodes: [new CodeBlockExtension({ ...params, supportedLanguages })],
others: [new BaseKeymapExtension()],
others: [{ priority: 10, extension: new BaseKeymapExtension() }],
});

describe('plugin', () => {
Expand Down Expand Up @@ -134,7 +134,7 @@ describe('plugin', () => {
expect(state.doc).toEqualRemirrorDocument(doc(p('abc'), tsBlock('content')));
});

it("doesn't step into the previous node when the selection isn't empty", () => {
it('avoids stepping into the previous node with non empty selection', () => {
const { state } = add(doc(p('abc'), tsBlock('<start>code<end>content'))).press('Backspace');
expect(state.doc).toEqualRemirrorDocument(doc(p('abc'), tsBlock('content')));
});
Expand Down
23 changes: 12 additions & 11 deletions packages/jest-remirror/src/jest-remirror-editor.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import {
Attrs,
Cast,
convertToPrioritizedExtension,
Extension,
ExtensionManager,
FlexibleExtension,
isMarkExtension,
isNodeExtension,
MarkExtension,
NodeExtension,
pick,
} from '@remirror/core';
import { baseExtensions } from '@remirror/core-extensions';
import { InjectedRemirrorProps, Remirror, RemirrorProps } from '@remirror/react';
import { render } from '@testing-library/react/pure';
import {
Expand Down Expand Up @@ -47,11 +48,11 @@ import { jsdomSelectionPatch } from './jsdom-patch';
* Render the editor with the params passed in. Useful for testing.
*/
export const renderEditor = <
GPlainMarks extends Array<MarkExtension<any>>,
GPlainNodes extends Array<NodeExtension<any>>,
GAttrMarks extends Array<MarkExtension<any>>,
GAttrNodes extends Array<NodeExtension<any>>,
GOthers extends Array<Extension<any>>,
GPlainMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GPlainNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GAttrMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GAttrNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GOthers extends Array<FlexibleExtension<Extension<any>>>,
GReturn extends CreateTestEditorReturn<GPlainMarks, GPlainNodes, GAttrMarks, GAttrNodes, GOthers>,
GExtension extends GenericExtension<GPlainMarks, GPlainNodes, GAttrMarks, GAttrNodes, GOthers>,
GPlainMarkNames extends GetNames<GPlainMarks>,
Expand All @@ -70,18 +71,18 @@ export const renderEditor = <
> = Object.create(null),
props: Partial<Omit<RemirrorProps<GExtension>, 'manager'>> = Object.create(null),
): GReturn => {
const innerNodeExtensions = nodeExtensions.filter(({ name }) => !plainNodes.some(ext => ext.name === name));
const innerNodeExtensions = nodeExtensions.filter(
({ name }) => !plainNodes.some(ext => convertToPrioritizedExtension(ext).extension.name === name),
);

const extensions = [
...innerNodeExtensions,
...others,
...plainMarks,
...plainNodes,
...attrMarks,
...attrNodes,
].map(extension => ({
extension,
priority: baseExtensions.filter(base => base.extension.name === extension.name)[0]?.priority || 2,
}));
].map(convertToPrioritizedExtension);
const manager = ExtensionManager.create(extensions);
let returnedParams!: InjectedRemirrorProps<GExtension>;

Expand Down
46 changes: 25 additions & 21 deletions packages/jest-remirror/src/jest-remirror-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
EditorStateParams,
EditorViewParams,
Extension,
FlexibleExtension,
HelpersFromExtensions,
MarkExtension,
NodeExtension,
Expand Down Expand Up @@ -273,11 +274,11 @@ export type NodeWithoutAttrs<GNames extends string> = {
};

export type CreateTestEditorReturn<
GPlainMarks extends Array<MarkExtension<any>>,
GPlainNodes extends Array<NodeExtension<any>>,
GAttrMarks extends Array<MarkExtension<any>>,
GAttrNodes extends Array<NodeExtension<any>>,
GOthers extends Array<Extension<any>>,
GPlainMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GPlainNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GAttrMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GAttrNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GOthers extends Array<FlexibleExtension<Extension<any>>>,
GExtension extends GenericExtension<
GPlainMarks,
GPlainNodes,
Expand All @@ -299,28 +300,31 @@ export type CreateTestEditorReturn<
doc: (...content: TaggedContentWithText[]) => TaggedProsemirrorNode;
};

export type GetNames<GExtensions extends AnyExtension[]> = GExtensions[number]['name'];
export type GetNames<GExtensions extends FlexibleExtension[]> = Extract<
GExtensions[number],
AnyExtension
>['name'];

export type GenericExtension<
GPlainMarks extends Array<MarkExtension<any>>,
GPlainNodes extends Array<NodeExtension<any>>,
GAttrMarks extends Array<MarkExtension<any>>,
GAttrNodes extends Array<NodeExtension<any>>,
GOthers extends Array<Extension<any>>
GPlainMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GPlainNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GAttrMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GAttrNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GOthers extends Array<FlexibleExtension<Extension<any>>>
> =
| BaseExtensionNodes
| GPlainMarks[number]
| GPlainNodes[number]
| GAttrMarks[number]
| GAttrNodes[number]
| GOthers[number];
| Extract<GPlainMarks[number], AnyExtension>
| Extract<GPlainNodes[number], AnyExtension>
| Extract<GAttrMarks[number], AnyExtension>
| Extract<GAttrNodes[number], AnyExtension>
| Extract<GOthers[number], AnyExtension>;

export interface CreateTestEditorExtensions<
GPlainMarks extends Array<MarkExtension<any>>,
GPlainNodes extends Array<NodeExtension<any>>,
GAttrMarks extends Array<MarkExtension<any>>,
GAttrNodes extends Array<NodeExtension<any>>,
GOthers extends Array<Extension<any>>
GPlainMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GPlainNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GAttrMarks extends Array<FlexibleExtension<MarkExtension<any>>>,
GAttrNodes extends Array<FlexibleExtension<NodeExtension<any>>>,
GOthers extends Array<FlexibleExtension<Extension<any>>>
> {
/**
* Create marks which don't need any attributes
Expand Down
83 changes: 7 additions & 76 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8236,7 +8236,7 @@ detect-indent@^6.0.0:
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd"
integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==

detect-libc@^1.0.2, detect-libc@^1.0.3:
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
Expand Down Expand Up @@ -12368,7 +12368,7 @@ hyphenate-style-name@^1.0.2:
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48"
integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==

iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
Expand Down Expand Up @@ -12414,13 +12414,6 @@ ignore-loader@0.1.2:
resolved "https://registry.yarnpkg.com/ignore-loader/-/ignore-loader-0.1.2.tgz#d81f240376d0ba4f0d778972c3ad25874117a463"
integrity sha1-2B8kA3bQuk8Nd4lyw60lh0EXpGM=

ignore-walk@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
dependencies:
minimatch "^3.0.4"

ignore@^3.3.5:
version "3.3.10"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
Expand Down Expand Up @@ -16072,15 +16065,6 @@ nearley@^2.7.10:
randexp "0.4.6"
semver "^5.4.1"

needle@^2.2.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528"
integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w==
dependencies:
debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"

negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
Expand Down Expand Up @@ -16356,22 +16340,6 @@ node-object-hash@^2.0.0:
resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b"
integrity sha512-VZR0zroAusy1ETZMZiGeLkdu50LGjG5U1KHZqTruqtTyQ2wfWhHG2Ow4nsUbfTFGlaREgNHcCWoM/OzEm6p+NQ==

node-pre-gyp@*:
version "0.14.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
needle "^2.2.1"
nopt "^4.0.1"
npm-packlist "^1.1.6"
npmlog "^4.0.2"
rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^4.4.2"

node-releases@^1.0.0-alpha.11, node-releases@^1.1.29, node-releases@^1.1.44, node-releases@^1.1.47:
version "1.1.48"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.48.tgz#7f647f0c453a0495bcd64cbd4778c26035c2f03a"
Expand Down Expand Up @@ -16402,14 +16370,6 @@ noop-logger@^0.1.1:
resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=

nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
dependencies:
abbrev "1"
osenv "^0.1.4"

nopt@~1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
Expand Down Expand Up @@ -16478,13 +16438,6 @@ normalize-url@^4.1.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==

npm-bundled@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
dependencies:
npm-normalize-package-bin "^1.0.1"

npm-conf@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
Expand All @@ -16493,20 +16446,6 @@ npm-conf@^1.1.0:
config-chain "^1.1.11"
pify "^3.0.0"

npm-normalize-package-bin@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==

npm-packlist@^1.1.6:
version "1.4.8"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
dependencies:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
npm-normalize-package-bin "^1.0.1"

npm-run-all@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
Expand Down Expand Up @@ -16543,7 +16482,7 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"

npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
npmlog@^4.0.1, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
Expand Down Expand Up @@ -16900,7 +16839,7 @@ os-filter-obj@^2.0.0:
dependencies:
arch "^2.1.0"

os-homedir@^1.0.0, os-homedir@^1.0.1:
os-homedir@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
Expand Down Expand Up @@ -16930,19 +16869,11 @@ os-locale@^3.0.0:
lcid "^2.0.0"
mem "^4.0.0"

os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
os-tmpdir@~1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=

osenv@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
dependencies:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"

outdent@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff"
Expand Down Expand Up @@ -21064,7 +20995,7 @@ sass-loader@8.0.2:
schema-utils "^2.6.1"
semver "^6.3.0"

sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
sax@>=0.6.0, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
Expand Down Expand Up @@ -22685,7 +22616,7 @@ tar-stream@^2.0.0:
inherits "^2.0.3"
readable-stream "^3.1.1"

tar@>=4.4.10, tar@^4.4.2, tar@^5.0.5:
tar@>=4.4.10, tar@^5.0.5:
version "6.0.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.1.tgz#7b3bd6c313cb6e0153770108f8d70ac298607efa"
integrity sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q==
Expand Down

0 comments on commit 667d153

Please sign in to comment.