user_edits_snippet_spec.rb 1.6 KB
Newer Older
1 2
# frozen_string_literal: true

3 4
require 'rails_helper'

5
describe 'User edits snippet', :js do
6 7 8 9 10 11 12 13 14
  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
15
    sign_in(user)
16 17

    visit edit_snippet_path(snippet)
18
    wait_for_requests
19 20 21 22 23 24
  end

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

    click_button('Save changes')
25
    wait_for_requests
26 27 28 29 30 31

    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')
32
    expect(page.find_field('personal_snippet_description').value).to have_content('banana_sample')
33 34

    click_button('Save changes')
35
    wait_for_requests
36

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

  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
60
end