summaryrefslogtreecommitdiff
path: root/spec/features/snippets/user_edits_snippet_spec.rb
blob: 9fa7807bbd80b31e8d99f5187ae39a014daa9d6f (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
require 'rails_helper'

feature 'User edits snippet', :js, feature: true do
  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
    sign_in(user)

    visit edit_snippet_path(snippet)
    wait_for_requests
  end

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

    click_button('Save changes')
    wait_for_requests

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

    click_button('Save changes')
    wait_for_requests

    link = find('a.no-attachment-icon img[alt="banana_sample"]')['src']
    expect(link).to match(%r{/uploads/-/system/personal_snippet/#{snippet.id}/\h{32}/banana_sample\.gif\z})
  end

  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
end