summaryrefslogtreecommitdiff
path: root/spec/features/users/terms_spec.rb
blob: bf6b5fa3d6a8c0fe88786ddc67f3c98e11348df4 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
require 'spec_helper'

describe 'Users > Terms' do
  include TermsHelper

  let(:user) { create(:user) }
  let!(:term) { create(:term, terms: 'By accepting, you promise to be nice!') }

  before do
    stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
    sign_in(user)
  end

  it 'shows the terms' do
    visit terms_path

    expect(page).to have_content('By accepting, you promise to be nice!')
  end

  context 'declining the terms' do
    it 'returns the user to the app' do
      visit terms_path

      click_button 'Decline and sign out'

      expect(page).not_to have_content(term.terms)
      expect(user.reload.terms_accepted?).to be(false)
    end
  end

  context 'accepting the terms' do
    it 'returns the user to the app' do
      visit terms_path

      click_button 'Accept terms'

      expect(page).not_to have_content(term.terms)
      expect(user.reload.terms_accepted?).to be(true)
    end
  end

  context 'terms were enforced while session is active', :js do
    let(:project) { create(:project) }

    before do
      project.add_developer(user)
    end

    it 'redirects to terms and back to where the user was going'  do
      visit project_path(project)

      enforce_terms

      within('.nav-sidebar') do
        click_link 'Issues'
      end

      expect_to_be_on_terms_page

      click_button('Accept terms')

      expect(current_path).to eq(project_issues_path(project))
    end

    it 'redirects back to the page the user was trying to save' do
      visit new_project_issue_path(project)

      fill_in :issue_title, with: 'Hello world, a new issue'
      fill_in :issue_description, with: "We don't want to lose what the user typed"

      enforce_terms

      click_button 'Submit issue'

      expect(current_path).to eq(terms_path)

      click_button('Accept terms')

      expect(current_path).to eq(new_project_issue_path(project))
      expect(find_field('issue_title').value).to eq('Hello world, a new issue')
      expect(find_field('issue_description').value).to eq("We don't want to lose what the user typed")
    end
  end
end