mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2024-11-18 09:51:06 +01:00
Add rspec test around accepting suggestions
This commit is contained in:
parent
4850119887
commit
debbffc79a
1 changed files with 162 additions and 0 deletions
162
spec/widgets/accept_spec.rb
Normal file
162
spec/widgets/accept_spec.rb
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
describe 'accept widget' do
|
||||||
|
let(:session) { TerminalSession.new }
|
||||||
|
|
||||||
|
before do
|
||||||
|
session.run_command('source zsh-autosuggestions.zsh')
|
||||||
|
session.run_command(select_keymap)
|
||||||
|
session.run_command('fc -p')
|
||||||
|
session.run_command('echo hello world')
|
||||||
|
|
||||||
|
session.clear
|
||||||
|
|
||||||
|
session.send_string('echo')
|
||||||
|
wait_for { session.content }.to start_with('echo')
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
session.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'emacs keymap' do
|
||||||
|
let(:select_keymap) { 'bindkey -e' }
|
||||||
|
|
||||||
|
context 'forward-char' do
|
||||||
|
subject { session.send_keys('right') }
|
||||||
|
|
||||||
|
context 'when the cursor is at the end of the buffer' do
|
||||||
|
it 'accepts the suggestion' do
|
||||||
|
expect { subject }.to change { session.content(esc_seqs: true) }.to('echo hello world')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the buffer' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([4, 0]).to([16, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the cursor is not at the end of the buffer' do
|
||||||
|
before { 2.times { session.send_keys('left') } }
|
||||||
|
|
||||||
|
it 'does not accept the suggestion' do
|
||||||
|
expect { subject }.not_to change { session.content(esc_seqs: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor forward one character' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([2, 0]).to([3, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'end-of-line' do
|
||||||
|
subject { session.send_keys('C-e') }
|
||||||
|
|
||||||
|
context 'when the cursor is at the end of the buffer' do
|
||||||
|
it 'accepts the suggestion' do
|
||||||
|
expect { subject }.to change { session.content(esc_seqs: true) }.to('echo hello world')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the buffer' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([4, 0]).to([16, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the cursor is not at the end of the buffer' do
|
||||||
|
before { 2.times { session.send_keys('left') } }
|
||||||
|
|
||||||
|
it 'does not accept the suggestion' do
|
||||||
|
expect { subject }.not_to change { session.content(esc_seqs: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the line' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([2, 0]).to([4, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'vi keymap' do
|
||||||
|
let(:select_keymap) { 'bindkey -v' }
|
||||||
|
|
||||||
|
before { session.send_keys('escape') }
|
||||||
|
|
||||||
|
context 'vi-forward-char' do
|
||||||
|
subject { session.send_keys('l') }
|
||||||
|
|
||||||
|
context 'when the cursor is at the end of the buffer' do
|
||||||
|
it 'accepts the suggestion' do
|
||||||
|
expect { subject }.to change { session.content(esc_seqs: true) }.to('echo hello world')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the buffer' do
|
||||||
|
wait_for { session.cursor }.to eq([3, 0])
|
||||||
|
expect { subject }.to change { session.cursor }.from([3, 0]).to([15, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the cursor is not at the end of the buffer' do
|
||||||
|
before { 2.times { session.send_keys('h') } }
|
||||||
|
|
||||||
|
it 'does not accept the suggestion' do
|
||||||
|
expect { subject }.not_to change { session.content(esc_seqs: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor forward one character' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([1, 0]).to([2, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'vi-end-of-line' do
|
||||||
|
subject { session.send_keys('$') }
|
||||||
|
|
||||||
|
context 'when the cursor is at the end of the buffer' do
|
||||||
|
it 'accepts the suggestion' do
|
||||||
|
expect { subject }.to change { session.content(esc_seqs: true) }.to('echo hello world')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the buffer' do
|
||||||
|
wait_for { session.cursor }.to eq([3, 0])
|
||||||
|
expect { subject }.to change { session.cursor }.from([3, 0]).to([15, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the cursor is not at the end of the buffer' do
|
||||||
|
before { 2.times { session.send_keys('h') } }
|
||||||
|
|
||||||
|
it 'does not accept the suggestion' do
|
||||||
|
expect { subject }.not_to change { session.content(esc_seqs: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the line' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([1, 0]).to([3, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'vi-add-eol' do
|
||||||
|
subject { session.send_keys('A') }
|
||||||
|
|
||||||
|
context 'when the cursor is at the end of the buffer' do
|
||||||
|
it 'accepts the suggestion' do
|
||||||
|
expect { subject }.to change { session.content(esc_seqs: true) }.to('echo hello world')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the buffer' do
|
||||||
|
wait_for { session.cursor }.to eq([3, 0])
|
||||||
|
expect { subject }.to change { session.cursor }.from([3, 0]).to([16, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when the cursor is not at the end of the buffer' do
|
||||||
|
before { 2.times { session.send_keys('h') } }
|
||||||
|
|
||||||
|
it 'does not accept the suggestion' do
|
||||||
|
expect { subject }.not_to change { session.content(esc_seqs: true) }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'moves the cursor to the end of the line' do
|
||||||
|
expect { subject }.to change { session.cursor }.from([1, 0]).to([4, 0])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue