mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
127 lines
4.5 KiB
JavaScript
127 lines
4.5 KiB
JavaScript
let menuBuilderParameter
|
|
jest.mock('electron', () => {
|
|
return {remote: {require: jest.fn(() => { return {Menu: {buildFromTemplate: jest.fn((param) => { menuBuilderParameter = param })}} })}}
|
|
})
|
|
|
|
const spellcheck = require('browser/lib/spellcheck')
|
|
const buildEditorContextMenu = require('browser/lib/contextMenuBuilder')
|
|
|
|
beforeEach(() => {
|
|
menuBuilderParameter = null
|
|
})
|
|
|
|
it('should make sure that no context menu is build if the passed editor instance was null', function () {
|
|
const event = {
|
|
pageX: 12,
|
|
pageY: 12
|
|
}
|
|
buildEditorContextMenu(null, event)
|
|
expect(menuBuilderParameter).toEqual(null)
|
|
})
|
|
|
|
it('should make sure that word suggestions are only requested if the word contained a typo', function () {
|
|
spellcheck.getSpellingSuggestion = jest.fn()
|
|
const editor = jest.fn()
|
|
editor.coordsChar = jest.fn()
|
|
editor.findWordAt = jest.fn(() => { return {anchor: {}, head: {}} })
|
|
editor.getRange = jest.fn()
|
|
editor.findMarks = jest.fn(() => [])
|
|
const event = {
|
|
pageX: 12,
|
|
pageY: 12
|
|
}
|
|
const expectedMenuParameter = [ { role: 'cut' },
|
|
{ role: 'copy' },
|
|
{ role: 'paste' },
|
|
{ role: 'selectall' } ]
|
|
buildEditorContextMenu(editor, event)
|
|
expect(menuBuilderParameter).toEqual(expectedMenuParameter)
|
|
expect(spellcheck.getSpellingSuggestion).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('should make sure that word suggestions are only requested if the word contained a typo and no other mark', function () {
|
|
spellcheck.getSpellingSuggestion = jest.fn()
|
|
spellcheck.getCSSClassName = jest.fn(() => 'dummyErrorClassName')
|
|
const editor = jest.fn()
|
|
editor.coordsChar = jest.fn()
|
|
editor.findWordAt = jest.fn(() => { return {anchor: {}, head: {}} })
|
|
editor.getRange = jest.fn()
|
|
const dummyMarks = [
|
|
{className: 'someStupidClassName'}
|
|
]
|
|
editor.findMarks = jest.fn(() => dummyMarks)
|
|
const event = {
|
|
pageX: 12,
|
|
pageY: 12
|
|
}
|
|
const expectedMenuParameter = [ { role: 'cut' },
|
|
{ role: 'copy' },
|
|
{ role: 'paste' },
|
|
{ role: 'selectall' } ]
|
|
buildEditorContextMenu(editor, event)
|
|
expect(menuBuilderParameter).toEqual(expectedMenuParameter)
|
|
expect(spellcheck.getSpellingSuggestion).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('should make sure that word suggestions calls the right editor functions', function () {
|
|
spellcheck.getSpellingSuggestion = jest.fn()
|
|
spellcheck.getCSSClassName = jest.fn(() => 'dummyErrorClassName')
|
|
const dummyCursor = {dummy: 'dummy'}
|
|
const dummyRange = {anchor: {test: 'test'}, head: {test2: 'test2'}}
|
|
const editor = jest.fn()
|
|
editor.coordsChar = jest.fn(() => dummyCursor)
|
|
editor.findWordAt = jest.fn(() => dummyRange)
|
|
editor.getRange = jest.fn()
|
|
const dummyMarks = [
|
|
{className: 'someStupidClassName'}
|
|
]
|
|
editor.findMarks = jest.fn(() => dummyMarks)
|
|
const event = {
|
|
pageX: 12,
|
|
pageY: 21
|
|
}
|
|
|
|
const expectedCoordsCharCall = {left: event.pageX, top: event.pageY}
|
|
|
|
buildEditorContextMenu(editor, event)
|
|
|
|
expect(editor.coordsChar).toHaveBeenCalledWith(expectedCoordsCharCall)
|
|
expect(editor.findWordAt).toHaveBeenCalledWith(dummyCursor)
|
|
expect(editor.getRange).toHaveBeenCalledWith(dummyRange.anchor, dummyRange.head)
|
|
})
|
|
|
|
it('should make sure that word suggestions creates a correct menu if there was an error', function () {
|
|
const suggestions = ['test1', 'test2', 'Pustekuchen']
|
|
const errorClassName = 'errorCSS'
|
|
const wordToCorrect = 'pustekuchen'
|
|
const dummyMarks = [
|
|
{className: errorClassName}
|
|
]
|
|
spellcheck.getSpellingSuggestion = jest.fn(() => suggestions)
|
|
spellcheck.getCSSClassName = jest.fn(() => errorClassName)
|
|
const editor = jest.fn()
|
|
editor.coordsChar = jest.fn()
|
|
editor.findWordAt = jest.fn(() => { return {anchor: {}, head: {}} })
|
|
editor.getRange = jest.fn(() => wordToCorrect)
|
|
editor.findMarks = jest.fn(() => [])
|
|
|
|
editor.findMarks = jest.fn(() => dummyMarks)
|
|
const event = {
|
|
pageX: 12,
|
|
pageY: 12
|
|
}
|
|
buildEditorContextMenu(editor, event)
|
|
expect(menuBuilderParameter[0].label).toEqual(suggestions[0])
|
|
expect(menuBuilderParameter[0].click).not.toBeNull()
|
|
expect(menuBuilderParameter[1].label).toEqual(suggestions[1])
|
|
expect(menuBuilderParameter[1].click).not.toBeNull()
|
|
expect(menuBuilderParameter[2].label).toEqual(suggestions[2])
|
|
expect(menuBuilderParameter[2].click).not.toBeNull()
|
|
expect(menuBuilderParameter[3].type).toEqual('separator')
|
|
expect(menuBuilderParameter[4].role).toEqual('cut')
|
|
expect(menuBuilderParameter[5].role).toEqual('copy')
|
|
expect(menuBuilderParameter[6].role).toEqual('paste')
|
|
expect(menuBuilderParameter[7].role).toEqual('selectall')
|
|
expect(spellcheck.getSpellingSuggestion).toHaveBeenCalledWith(wordToCorrect)
|
|
})
|