commit
124e221999
5 changed files with 232 additions and 77 deletions
@ -0,0 +1,138 @@ |
|||||||
|
import { h, render } from 'preact'; |
||||||
|
import Completion from 'console/components/console/completion' |
||||||
|
|
||||||
|
describe("console/components/console/completion", () => { |
||||||
|
let completions = [{ |
||||||
|
name: "Fruit", |
||||||
|
items: [{ caption: "apple" }, { caption: "banana" }, { caption: "cherry" }], |
||||||
|
}, { |
||||||
|
name: "Element", |
||||||
|
items: [{ caption: "argon" }, { caption: "boron" }, { caption: "carbon" }], |
||||||
|
}]; |
||||||
|
|
||||||
|
beforeEach(() => { |
||||||
|
document.body.innerHTML = ''; |
||||||
|
}); |
||||||
|
|
||||||
|
it('renders Completion component', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={30} |
||||||
|
/>, document.body); |
||||||
|
|
||||||
|
expect(ul.children).to.have.lengthOf(8); |
||||||
|
expect(ul.children[0].textContent).to.equal('Fruit'); |
||||||
|
expect(ul.children[1].textContent).to.equal('apple'); |
||||||
|
expect(ul.children[2].textContent).to.equal('banana'); |
||||||
|
expect(ul.children[3].textContent).to.equal('cherry'); |
||||||
|
expect(ul.children[4].textContent).to.equal('Element'); |
||||||
|
expect(ul.children[5].textContent).to.equal('argon'); |
||||||
|
expect(ul.children[6].textContent).to.equal('boron'); |
||||||
|
expect(ul.children[7].textContent).to.equal('carbon'); |
||||||
|
}); |
||||||
|
|
||||||
|
it('highlight current item', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={30} |
||||||
|
select={3} |
||||||
|
/>, document.body); |
||||||
|
expect(ul.children[5].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
}); |
||||||
|
|
||||||
|
it('does not highlight any items', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={30} |
||||||
|
select={-1} |
||||||
|
/>, document.body); |
||||||
|
for (let li of ul.children) { |
||||||
|
expect(li.className.split(' ')).not.to.include('vimvixen-completion-selected'); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
it('limits completion items', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={-1} |
||||||
|
/>, document.body); |
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['Fruit', 'apple', 'banana']); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} select={0} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['Fruit', 'apple', 'banana']); |
||||||
|
expect(ul.children[1].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
}) |
||||||
|
|
||||||
|
it('scrolls up to down with select', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={1} |
||||||
|
/>, document.body); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['Fruit', 'apple', 'banana']); |
||||||
|
expect(ul.children[2].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={2} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['apple', 'banana', 'cherry']); |
||||||
|
expect(ul.children[2].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={3} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['cherry', 'Element', 'argon']); |
||||||
|
expect(ul.children[2].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
}); |
||||||
|
|
||||||
|
it('scrolls up to down with select', () => { |
||||||
|
let ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={5} |
||||||
|
/>, document.body); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['argon', 'boron', 'carbon']); |
||||||
|
expect(ul.children[2].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={4} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['argon', 'boron', 'carbon']); |
||||||
|
expect(ul.children[1].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={3} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['argon', 'boron', 'carbon']); |
||||||
|
expect(ul.children[0].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
|
||||||
|
ul = render(<Completion |
||||||
|
completions={completions} |
||||||
|
size={3} |
||||||
|
select={2} |
||||||
|
/>, document.body, ul); |
||||||
|
|
||||||
|
expect(Array.from(ul.children).map(e => e.textContent)).to.deep.equal(['cherry', 'Element', 'argon']); |
||||||
|
expect(ul.children[0].className.split(' ')).to.include('vimvixen-completion-selected'); |
||||||
|
}); |
||||||
|
}); |
Reference in new issue