Real Vim ninjas count every keystroke - do you?

Pick a challenge, fire up Vim, and show us what you got.

Changelog, Rules & FAQ, updates: @vimgolf, RSS.

Your VimGolf key: please sign in

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put 5aa7e13aa19abd00c800000b

Splits long lines in more readable ones

Those tests have too long lines. We have to split the to have more readable ones. This is based on a real project with Ruby and RSpec.

Start file
require 'spec_helper'

describe ContentsController, type: :controller do
  before :each do
    set_request_on_domain :domain_test
    sign_in users(:admin)
  end

  describe '#update_categories' do
    let(:content) { contents(:adsl_cancel_question).set(intervention: nil) }

    it 'is success' do
      put :update_categories, id: content.id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:adsl_cancel).id
      expect(response).to be_success
      expect(response.body).to be_blank
    end

    it 'is success if mandatory categories are not specified' do
      expect {
        put :update_categories, id: content.id, category_ids: [], thread_id: content_threads(:adsl_cancel).id
      }.to_not change { content }
      expect(response).to be_success
    end

    it 'updates categories' do
      expect {
        put :update_categories, id: content.id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:adsl_cancel).id
      }.to change { content.reload.categories.to_a.sort }.from(array_including([categories(:internet), categories(:sales)])).to(array_including([categories(:technical), categories(:mobile)]))
    end

    it 'sets categories' do
      expect {
        put :update_categories, id: contents(:new_smartphone).id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:new_smartphone).id
      }.to change { contents(:new_smartphone).reload.categories.to_a.sort }.from([]).to([categories(:technical), categories(:mobile)])
    end
  end
end
End file
require 'spec_helper'

describe ContentsController, type: :controller do
  before :each do
    set_request_on_domain :domain_test
    sign_in users(:admin)
  end

  describe '#update_categories' do
    let(:content) { contents(:adsl_cancel_question).set(intervention: nil) }

    it 'is success' do
      put :update_categories,
        id: content.id,
        category_ids: [categories(:mobile).id, categories(:technical).id],
        thread_id: content_threads(:adsl_cancel).id
      expect(response).to be_success
      expect(response.body).to be_blank
    end

    it 'is success if mandatory categories are not specified' do
      expect {
        put :update_categories,
          id: content.id,
          category_ids: [],
          thread_id: content_threads(:adsl_cancel).id
      }.to_not change { content }
      expect(response).to be_success
    end

    it 'updates categories' do
      expect {
        put :update_categories,
          id: content.id,
          category_ids: [categories(:mobile).id, categories(:technical).id],
          thread_id: content_threads(:adsl_cancel).id
      }.to change { content.reload.categories.to_a.sort }
        .from(array_including([categories(:internet), categories(:sales)]))
        .to(array_including([categories(:technical), categories(:mobile)]))
    end

    it 'sets categories' do
      expect {
        put :update_categories,
          id: contents(:new_smartphone).id,
          category_ids: [categories(:mobile).id, categories(:technical).id],
          thread_id: content_threads(:new_smartphone).id
      }.to change { contents(:new_smartphone).reload.categories.to_a.sort }
        .from([])
        .to([categories(:technical), categories(:mobile)])
    end
  end
end

View Diff

13c13,16
<       put :update_categories, id: content.id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:adsl_cancel).id
---
>       put :update_categories,
>         id: content.id,
>         category_ids: [categories(:mobile).id, categories(:technical).id],
>         thread_id: content_threads(:adsl_cancel).id
20c23,26
<         put :update_categories, id: content.id, category_ids: [], thread_id: content_threads(:adsl_cancel).id
---
>         put :update_categories,
>           id: content.id,
>           category_ids: [],
>           thread_id: content_threads(:adsl_cancel).id
27,28c33,39
<         put :update_categories, id: content.id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:adsl_cancel).id
<       }.to change { content.reload.categories.to_a.sort }.from(array_including([categories(:internet), categories(:sales)])).to(array_including([categories(:technical), categories(:mobile)]))
---
>         put :update_categories,
>           id: content.id,
>           category_ids: [categories(:mobile).id, categories(:technical).id],
>           thread_id: content_threads(:adsl_cancel).id
>       }.to change { content.reload.categories.to_a.sort }
>         .from(array_including([categories(:internet), categories(:sales)]))
>         .to(array_including([categories(:technical), categories(:mobile)]))
33,34c44,50
<         put :update_categories, id: contents(:new_smartphone).id, category_ids: [categories(:mobile).id, categories(:technical).id], thread_id: content_threads(:new_smartphone).id
<       }.to change { contents(:new_smartphone).reload.categories.to_a.sort }.from([]).to([categories(:technical), categories(:mobile)])
---
>         put :update_categories,
>           id: contents(:new_smartphone).id,
>           category_ids: [categories(:mobile).id, categories(:technical).id],
>           thread_id: content_threads(:new_smartphone).id
>       }.to change { contents(:new_smartphone).reload.categories.to_a.sort }
>         .from([])
>         .to([categories(:technical), categories(:mobile)])

Solutions by @Sakigw:

Unlock 1 remaining solutions by signing in and submitting your own entry
Created by: @GuirecCorbel

6 active golfers, 13 entries

Solutions by @Sakigw:
74
#4 - Saki Gw / @Sakigw

05/02/2018 at 09:45AM