summaryrefslogtreecommitdiff
path: root/home-config/zsh/zsh-autosuggestions/spec/integrations/wrapped_widget_spec.rb
blob: 61dfc2dc0d18db23beb50f9ac9bd24bba7c5c143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
describe 'a wrapped widget' do
  let(:widget) { 'backward-delete-char' }

  context 'initialized before sourcing the plugin' do
    let(:before_sourcing) do
      -> do
        session.
          run_command("_orig_#{widget}() { zle .#{widget} }").
          run_command("zle -N orig-#{widget} _orig_#{widget}").
          run_command("#{widget}-magic() { zle orig-#{widget}; BUFFER+=b }").
          run_command("zle -N #{widget} #{widget}-magic")
      end
    end

    it 'executes the custom behavior and the built-in behavior' do
      with_history('foobar', 'foodar') do
        session.send_string('food').send_keys('C-h')
        wait_for { session.content }.to eq('foobar')
      end
    end
  end

  context 'initialized after sourcing the plugin' do
    before do
      session.
        run_command("zle -N orig-#{widget} ${widgets[#{widget}]#*:}").
        run_command("#{widget}-magic() { zle orig-#{widget}; BUFFER+=b }").
        run_command("zle -N #{widget} #{widget}-magic").
        clear_screen
    end

    it 'executes the custom behavior and the built-in behavior' do
      with_history('foobar', 'foodar') do
        session.send_string('food').send_keys('C-h')
        wait_for { session.content }.to eq('foobar')
      end
    end
  end
end