semester_feedback_test.rb 5.39 KB
Newer Older
Jiri Strojil's avatar
Jiri Strojil committed
1
2
3
4
5
6
require 'application_system_test_case'

class SemesterFeedbackTest < ApplicationSystemTestCase
  setup do
    @volunteer = create :volunteer_with_user
    @subject = create :semester_process
7
    @spv = create(:semester_process_volunteer, :with_mission, volunteer: @volunteer,
Jiri Strojil's avatar
Jiri Strojil committed
8
      semester_process: @subject)
Chrysanthi Lagodimou's avatar
Chrysanthi Lagodimou committed
9
    login_as @volunteer.user
10
    visit review_semester_semester_process_volunteer_path(@spv)
Jiri Strojil's avatar
Jiri Strojil committed
11
12
  end

13
14
15
16
17
18
19
20
21
22
23
24
25
26
  def submit_feedback(semester_process_volunteer)
    visit review_semester_semester_process_volunteer_path(semester_process_volunteer)
    fill_in_required_feedback_fields
    check 'Ich verzichte auf die Auszahlung von Spesen.'
    click_on 'Bestätigen', match: :first
    semester_process_volunteer.reload
  end

  def fill_in_required_feedback_fields
    fill_in 'Was waren die wichtigsten Inhalte (oder Ziele) Ihres Einsatzes in den letzten Monaten?', with: 'being on time'
    fill_in 'Was konnte in den letzten Monaten erreicht werden?', with: 'everything'
    fill_in 'Soll der Einsatz weiterlaufen und wenn ja, mit welchen Inhalten (Zielen)?', with: 'continue'
  end

27
28
29
  test 'volunteer with unsubmitted feedback should see a warning' do
    visit volunteer_path(@volunteer)
    assert page.has_text? 'Sie haben einen ausstehenden Halbjahres-Rapport für dieses Semester.'
30
    assert page.has_link? 'Bitte klicken Sie hier um diesen zu bestätigen'
31
32
    visit root_path
    assert page.has_text? 'Sie haben einen ausstehenden Halbjahres-Rapport für dieses Semester.'
33
    assert page.has_link? 'Bitte klicken Sie hier um diesen zu bestätigen'
Chrysanthi Lagodimou's avatar
Chrysanthi Lagodimou committed
34
    click_link 'Bitte klicken Sie hier um diesen zu bestätigen'
35
36
37
    submit_feedback(@spv)
    visit volunteer_path(@volunteer)
    assert_not page.has_text? 'Sie haben einen ausstehenden Halbjahres-Rapport für dieses Semester.'
38
39
40
41
    visit root_path
    assert_not page.has_text? 'Sie haben einen ausstehenden Halbjahres-Rapport für dieses Semester.'
  end

Jiri Strojil's avatar
Jiri Strojil committed
42
43
44
45
46
  test 'by default, you should have not accepted the data' do
    assert_text 'Ich bestätige, dass ich alle meine Stunden und Halbjahres-Rapporte bis zum heutigen Datum erfasst habe.'
  end

  test 'accepting should remove submit button' do
47
48
    submit_feedback(@spv)
    assert_text "Bestätigt am #{I18n.l(@spv.commited_at.to_date)} durch #{@spv.commited_by.full_name}"
Jiri Strojil's avatar
Jiri Strojil committed
49
50
51
  end

  test 'you should be able to add hours on run' do
52
    fill_in_required_feedback_fields
53
    assert_equal @spv.hours.count, 0
Jiri Strojil's avatar
Jiri Strojil committed
54
    fill_in 'Stunden', with: 10
Jiri Strojil's avatar
Jiri Strojil committed
55
    check 'Ich verzichte auf die Auszahlung von Spesen.'
Jiri Strojil's avatar
Jiri Strojil committed
56
    click_on 'Bestätigen', match: :first
57
58
    @spv.reload
    assert_equal @spv.hours.first.hours, 10
Jiri Strojil's avatar
Jiri Strojil committed
59
60
61
62
63
64
    within '.table.table-striped.hours-table' do
      assert_text "#{I18n.l(Time.zone.now.to_date)} 10.0"
    end
  end

  test 'iban and bank has to be filled' do
65
    fill_in_required_feedback_fields
Jiri Strojil's avatar
Jiri Strojil committed
66
67
68
69
70
71
72
73
74
75
76
77
    uncheck 'Ich verzichte auf die Auszahlung von Spesen.'
    fill_in 'IBAN', with: ''
    fill_in 'Bank', with: ''
    click_on 'Bestätigen', match: :first
    assert_text 'Es sind Fehler aufgetreten. Bitte überprüfen Sie die rot markierten Felder.'
    within '#volunteer-update-waive-and-iban' do
      assert_text 'Name der Bank darf nicht leer sein'
      assert_text 'IBAN darf nicht leer sein'
    end
  end

  test 'it should store the info that user inputs' do
78
    fill_in_required_feedback_fields
Jiri Strojil's avatar
Jiri Strojil committed
79
80
81
82
83
84
85
    fill_in 'Kommentare', with: 'nothing'
    check 'Ich wünsche ein Gespräch mit meiner/meinem Freiwilligenverantwortlichen.'
    fill_in 'Stunden', with: 33
    uncheck 'Ich verzichte auf die Auszahlung von Spesen.'
    fill_in 'IBAN', with: 'CH59 2012 0767 0052 0024 0'
    fill_in 'Name der Bank', with: 'Bank'
    click_on 'Bestätigen'
86
87
    @spv.reload
    assert_equal @spv.volunteer.slice(:iban, :bank, :waive),
Jiri Strojil's avatar
Jiri Strojil committed
88
      { iban: 'CH59 2012 0767 0052 0024 0', bank: 'Bank', waive: false }.stringify_keys
89
    assert_equal @spv.semester_feedbacks.last.slice(:goals, :achievements, :future, :comments, :conversation),
Jiri Strojil's avatar
Jiri Strojil committed
90
      { goals: 'being on time', achievements: 'everything', future: 'continue', comments: 'nothing', conversation: true }.stringify_keys
91
    assert_equal @spv.hours.last.hours, 33
Jiri Strojil's avatar
Jiri Strojil committed
92
  end
93

94
95
96
97
98
99
100
101
  test 'truncate_modal_shows_all_text' do
    goals = FFaker::Lorem.paragraph(20)
    achievements = FFaker::Lorem.paragraph(20)
    future = FFaker::Lorem.paragraph(20)
    comments = FFaker::Lorem.paragraph(20)

    @superadmin = create :user
    login_as @superadmin
102
    visit review_semester_semester_process_volunteer_path(@spv)
103
104
105
106
107
108
109

    fill_in 'Was waren die wichtigsten Inhalte (oder Ziele) Ihres Einsatzes in den letzten Monaten?', with: goals
    fill_in 'Was konnte in den letzten Monaten erreicht werden?', with: achievements
    fill_in 'Soll der Einsatz weiterlaufen und wenn ja, mit welchen Inhalten (Zielen)?', with: future
    fill_in 'Kommentare', with: comments

    # submit feedback without revisiting review form
110
111
    check 'Ich verzichte auf die Auszahlung von Spesen.'
    click_on 'Bestätigen', match: :first
112
    @spv.reload
113
    visit semester_process_volunteers_path
114

115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
    page.find('td', text: goals.truncate(300)).click
    assert page.has_text? goals
    click_button 'Schliessen'

    page.find('td', text: achievements.truncate(300)).click
    assert page.has_text? achievements
    click_button 'Schliessen'

    page.find('td', text: future.truncate(300)).click
    assert page.has_text? future
    click_button 'Schliessen'

    page.find('td', text: comments.truncate(300)).click
    assert page.has_text? comments
    click_button 'Schliessen'
130
  end
Jiri Strojil's avatar
Jiri Strojil committed
131
end