user_edits_snippet_spec.rb 1.5 KB
Newer Older
1 2
require 'rails_helper'

3
describe 'User edits snippet', :js do
4 5 6 7 8 9 10 11 12
  include DropzoneHelper

  let(:file_name) { 'test.rb' }
  let(:content) { 'puts "test"' }

  let(:user) { create(:user) }
  let(:snippet) { create(:personal_snippet, :public, file_name: file_name, content: content, author: user) }

  before do
13
    sign_in(user)
14 15

    visit edit_snippet_path(snippet)
16
    wait_for_requests
17 18 19 20 21 22
  end

  it 'updates the snippet' do
    fill_in 'personal_snippet_title', with: 'New Snippet Title'

    click_button('Save changes')
23
    wait_for_requests
24 25 26 27 28 29

    expect(page).to have_content('New Snippet Title')
  end

  it 'updates the snippet with files attached' do
    dropzone_file Rails.root.join('spec', 'fixtures', 'banana_sample.gif')
30
    expect(page.find_field('personal_snippet_description').value).to have_content('banana_sample')
31 32

    click_button('Save changes')
33
    wait_for_requests
34 35

    link = find('a.no-attachment-icon img[alt="banana_sample"]')['src']
36
    expect(link).to match(%r{/uploads/-/system/personal_snippet/#{snippet.id}/\h{32}/banana_sample\.gif\z})
37
  end
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

  it 'updates the snippet to make it internal' do
    choose 'Internal'

    click_button 'Save changes'
    wait_for_requests

    expect(page).to have_no_xpath("//i[@class='fa fa-lock']")
    expect(page).to have_xpath("//i[@class='fa fa-shield']")
  end

  it 'updates the snippet to make it public' do
    choose 'Public'

    click_button 'Save changes'
    wait_for_requests

    expect(page).to have_no_xpath("//i[@class='fa fa-lock']")
    expect(page).to have_xpath("//i[@class='fa fa-globe']")
  end
58
end