enju_leaf 1.1.0.rc20 → 1.1.0.rc21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/unknown_resource.png +0 -0
- data/app/controllers/my_accounts_controller.rb +0 -11
- data/app/controllers/page_controller.rb +12 -0
- data/app/controllers/profiles_controller.rb +23 -5
- data/app/controllers/user_import_files_controller.rb +1 -0
- data/app/helpers/page_helper.rb +14 -0
- data/app/models/profile.rb +7 -1
- data/app/models/user_export_file.rb +1 -0
- data/app/models/user_import_file.rb +20 -10
- data/app/views/page/_menu.html.erb +40 -51
- data/app/views/page/advanced_search.html.erb +14 -3
- data/app/views/page/configuration.html.erb +3 -0
- data/app/views/page/statistics.html.erb +0 -14
- data/app/views/page/system_information.html.erb +13 -1
- data/app/views/profiles/_edit_profile.html.erb +2 -2
- data/app/views/user_import_files/_results.html.erb +22 -0
- data/app/views/user_import_files/show.html.erb +8 -12
- data/app/views/user_import_results/_list.html.erb +22 -0
- data/app/views/user_import_results/_list_lines.html.erb +24 -0
- data/app/views/user_import_results/index.html.erb +5 -30
- data/app/views/user_import_results/show.html.erb +1 -1
- data/config/locales/devise.ja.yml +3 -3
- data/config/locales/translation_en.yml +5 -1
- data/config/locales/translation_ja.yml +5 -1
- data/lib/enju_leaf/calculate_stat.rb +3 -0
- data/lib/enju_leaf/engine.rb +0 -1
- data/lib/enju_leaf/helper.rb +22 -7
- data/lib/enju_leaf/import_file.rb +4 -0
- data/lib/enju_leaf/master_model.rb +1 -0
- data/lib/enju_leaf/user.rb +52 -20
- data/lib/enju_leaf/version.rb +1 -1
- data/lib/generators/enju_leaf/setup/setup_generator.rb +1 -1
- data/spec/controllers/my_accounts_controller_spec.rb +2 -2
- data/spec/controllers/profiles_controller_spec.rb +19 -5
- data/spec/controllers/user_import_files_controller_spec.rb +8 -1
- data/spec/controllers/user_import_results_controller_spec.rb +21 -1
- data/spec/dummy/app/assets/javascripts/application.js +4 -6
- data/spec/dummy/config/initializers/kaminari_config.rb +10 -0
- data/spec/fixtures/user_import_files.yml +2 -0
- data/spec/models/user_import_file_spec.rb +32 -24
- data/spec/models/user_spec.rb +29 -1
- data/spec/rails_helper.rb +82 -0
- data/spec/spec_helper.rb +86 -51
- data/spec/views/page/configuration.html.erb_spec.rb +1 -1
- data/spec/views/user_import_results/index.html.erb_spec.rb +32 -0
- metadata +20 -11
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require '
|
2
|
+
require 'rails_helper'
|
3
3
|
|
4
4
|
describe ProfilesController do
|
5
5
|
fixtures :all
|
@@ -192,10 +192,10 @@ describe ProfilesController do
|
|
192
192
|
response.should be_forbidden
|
193
193
|
assigns(:profile).should eq admin
|
194
194
|
end
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
195
|
+
|
196
|
+
it "should show icalendar feed" do
|
197
|
+
get :edit, id: profiles(:user1).id, mode: 'feed_token'
|
198
|
+
response.should render_template("profiles/_feed_token")
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
@@ -405,6 +405,13 @@ describe ProfilesController do
|
|
405
405
|
response.should redirect_to profile_url(assigns(:profile))
|
406
406
|
assert_equal assigns(:profile).note, 'test'
|
407
407
|
end
|
408
|
+
|
409
|
+
it "should update other user's locked status" do
|
410
|
+
put :update, id: profiles(:user1).id, profile: {:user_attributes => {:id => 3, :locked => '1', :username => 'user1'}}
|
411
|
+
response.should redirect_to profile_url(assigns(:profile))
|
412
|
+
assigns(:profile).user.locked_at.should be_truthy
|
413
|
+
assigns(:profile).user.access_locked?.should be_truthy
|
414
|
+
end
|
408
415
|
end
|
409
416
|
|
410
417
|
describe "When logged in as User" do
|
@@ -536,6 +543,12 @@ describe ProfilesController do
|
|
536
543
|
delete :destroy, id: profiles(:librarian1).id
|
537
544
|
response.should be_forbidden
|
538
545
|
end
|
546
|
+
|
547
|
+
it "should not be able to delete other librarian user" do
|
548
|
+
librarian = FactoryGirl.create(:librarian_profile)
|
549
|
+
ability = EnjuLeaf::Ability.new(@user, "0.0.0.0")
|
550
|
+
ability.should_not be_able_to( :destroy, librarian )
|
551
|
+
end
|
539
552
|
end
|
540
553
|
|
541
554
|
describe "When logged in as User" do
|
@@ -559,6 +572,7 @@ describe ProfilesController do
|
|
559
572
|
describe "When not logged in" do
|
560
573
|
it "destroys the requested user" do
|
561
574
|
delete :destroy, id: profiles(:user2).id
|
575
|
+
response.should redirect_to(new_user_session_url)
|
562
576
|
end
|
563
577
|
|
564
578
|
it "should be forbidden" do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
describe UserImportFilesController do
|
4
4
|
fixtures :all
|
@@ -50,6 +50,13 @@ describe UserImportFilesController do
|
|
50
50
|
assigns(:user_import_file).should eq(user_import_files(:two))
|
51
51
|
expect(response).to be_success
|
52
52
|
end
|
53
|
+
|
54
|
+
it "assigns user_import_results" do
|
55
|
+
get :show, id: user_import_files(:one).id
|
56
|
+
expect(response).to be_success
|
57
|
+
expect(assigns(:user_import_file)).to eq user_import_files(:one)
|
58
|
+
expect(assigns(:user_import_results)).to include user_import_results(:one)
|
59
|
+
end
|
53
60
|
end
|
54
61
|
|
55
62
|
describe "When logged in as Librarian" do
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require '
|
2
|
+
require 'rails_helper'
|
3
3
|
|
4
4
|
describe UserImportResultsController do
|
5
5
|
fixtures :all
|
@@ -12,6 +12,26 @@ describe UserImportResultsController do
|
|
12
12
|
get :index
|
13
13
|
assigns(:user_import_results).should eq(UserImportResult.page(1))
|
14
14
|
end
|
15
|
+
|
16
|
+
describe "With @user_import_file parameter" do
|
17
|
+
before (:each) do
|
18
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_import_file_sample_long.tsv"), user: users(:admin)
|
19
|
+
@file.default_user_group = UserGroup.find(2)
|
20
|
+
@file.default_library = Library.find(3)
|
21
|
+
@file.save
|
22
|
+
result = @file.import_start
|
23
|
+
end
|
24
|
+
render_views
|
25
|
+
it "should assign all user_import_results for the user_import_file with a page parameter" do
|
26
|
+
get :index, user_import_file_id: @file.id
|
27
|
+
results = assigns(:user_import_results)
|
28
|
+
results.should_not be_empty
|
29
|
+
get :index, user_import_file_id: @file.id, page: 2
|
30
|
+
results2 = assigns(:user_import_results)
|
31
|
+
results2.first.should_not eq results.first
|
32
|
+
response.body.should match /<td>11<\/td>/
|
33
|
+
end
|
34
|
+
end
|
15
35
|
end
|
16
36
|
|
17
37
|
describe "When logged in as Librarian" do
|
@@ -2,14 +2,12 @@
|
|
2
2
|
// listed below.
|
3
3
|
//
|
4
4
|
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
-
// or vendor/assets/javascripts
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
6
|
//
|
7
7
|
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
-
//
|
8
|
+
// compiled file.
|
9
9
|
//
|
10
|
-
//
|
11
|
-
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
12
|
//
|
13
|
-
//= require jquery
|
14
|
-
//= require jquery_ujs
|
15
13
|
//= require_tree .
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
2
2
|
|
3
3
|
one:
|
4
|
+
id: 1
|
4
5
|
user_id: 1
|
5
6
|
note: MyText
|
6
7
|
executed_at: 2014-01-10 21:22:16
|
@@ -13,6 +14,7 @@ one:
|
|
13
14
|
error_message: MyText
|
14
15
|
|
15
16
|
two:
|
17
|
+
id: 2
|
16
18
|
user_id: 1
|
17
19
|
note: MyText
|
18
20
|
executed_at: 2014-01-10 21:22:16
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require '
|
2
|
+
require 'rails_helper'
|
3
3
|
|
4
4
|
describe UserImportFile do
|
5
5
|
fixtures :all
|
6
6
|
|
7
7
|
describe "when its mode is 'create'" do
|
8
8
|
before(:each) do
|
9
|
-
@file = UserImportFile.new :
|
9
|
+
@file = UserImportFile.new user_import: File.new("#{Rails.root}/../../examples/user_import_file_sample.tsv")
|
10
10
|
@file.default_user_group = UserGroup.find(2)
|
11
11
|
@file.default_library = Library.find(3)
|
12
12
|
@file.user = users(:admin)
|
@@ -95,12 +95,15 @@ describe UserImportFile do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
describe "when its mode is 'update'" do
|
98
|
-
|
98
|
+
before(:each) do
|
99
99
|
FactoryGirl.create(:user,
|
100
100
|
username: 'user001',
|
101
101
|
profile: FactoryGirl.create(:profile)
|
102
102
|
)
|
103
|
-
|
103
|
+
end
|
104
|
+
it "should update users" do
|
105
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_update_file.tsv"), user: users(:admin)
|
106
|
+
old_message_count = Message.count
|
104
107
|
result = @file.modify
|
105
108
|
result.should have_key(:user_updated)
|
106
109
|
user001 = User.where(username: 'user001').first
|
@@ -110,21 +113,20 @@ describe UserImportFile do
|
|
110
113
|
user001.profile.user_number.should eq 'user_number_1'
|
111
114
|
user001.profile.note.should eq 'test'
|
112
115
|
user001.profile.keyword_list.should eq 'keyword1 keyword2'
|
116
|
+
Message.count.should eq old_message_count + 1
|
113
117
|
end
|
114
118
|
|
115
119
|
it "should not overwrite with null value" do
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
)
|
127
|
-
@file = UserImportFile.create :user_import => File.new("#{Rails.root}/../../examples/user_update_file2.tsv")
|
120
|
+
user = User.where(username: 'user001').first
|
121
|
+
user.profile = FactoryGirl.create(:profile,
|
122
|
+
user_number: '001',
|
123
|
+
full_name: 'User 001',
|
124
|
+
full_name_transcription: 'User 001',
|
125
|
+
locale: 'ja',
|
126
|
+
note: 'Note',
|
127
|
+
keyword_list: 'keyword1 keyword2',
|
128
|
+
date_of_birth: 10.years.ago)
|
129
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_update_file2.tsv"), user: users(:admin)
|
128
130
|
result = @file.modify
|
129
131
|
result.should have_key(:user_updated)
|
130
132
|
user001 = User.find('user001')
|
@@ -135,20 +137,24 @@ describe UserImportFile do
|
|
135
137
|
user001.profile.keyword_list.should eq 'keyword1 keyword2'
|
136
138
|
end
|
137
139
|
it "should update user_number" do
|
138
|
-
|
139
|
-
username: 'user001',
|
140
|
-
profile: FactoryGirl.create(:profile))
|
141
|
-
@file = UserImportFile.create :user_import => File.new("#{Rails.root}/../../examples/user_update_file3.tsv")
|
140
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_update_file3.tsv"), user: users(:admin)
|
142
141
|
result = @file.modify
|
143
142
|
result.should have_key(:user_updated)
|
144
143
|
user001 = User.where(username: 'user001').first
|
145
144
|
user001.profile.user_number.should eq '0001'
|
146
145
|
end
|
146
|
+
it "should update user's lock status" do
|
147
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_update_file4.tsv"), user: users(:admin)
|
148
|
+
result = @file.modify
|
149
|
+
result.should have_key(:user_updated)
|
150
|
+
user001 = User.where(username: 'user001').first
|
151
|
+
user001.access_locked?.should be_truthy
|
152
|
+
end
|
147
153
|
end
|
148
154
|
|
149
155
|
describe "when its mode is 'destroy'" do
|
150
156
|
before(:each) do
|
151
|
-
@file = UserImportFile.new :
|
157
|
+
@file = UserImportFile.new user_import: File.new("#{Rails.root}/../../examples/user_import_file_sample.tsv"), user: users(:admin)
|
152
158
|
@file.user = users(:admin)
|
153
159
|
@file.default_user_group = UserGroup.find(2)
|
154
160
|
@file.default_library = Library.find(3)
|
@@ -158,24 +164,26 @@ describe UserImportFile do
|
|
158
164
|
|
159
165
|
it "should remove users" do
|
160
166
|
old_count = User.count
|
161
|
-
@file = UserImportFile.create :
|
167
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_delete_file.tsv"), user: users(:admin)
|
162
168
|
@file.user = users(:admin)
|
169
|
+
old_message_count = Message.count
|
163
170
|
@file.remove
|
164
171
|
User.count.should eq old_count - 2
|
172
|
+
Message.count.should eq old_message_count + 1
|
165
173
|
end
|
166
174
|
|
167
175
|
it "should not remove users if there are checkouts" do
|
168
176
|
user001 = User.where(username: 'user001').first
|
169
177
|
checkout = FactoryGirl.create(:checkout, user: user001, item: FactoryGirl.create(:item))
|
170
178
|
old_count = User.count
|
171
|
-
@file = UserImportFile.create :
|
179
|
+
@file = UserImportFile.create user_import: File.new("#{Rails.root}/../../examples/user_delete_file.tsv"), user: users(:admin)
|
172
180
|
@file.remove
|
173
181
|
User.where(username: 'user001').should_not be_blank
|
174
182
|
end
|
175
183
|
end
|
176
184
|
|
177
185
|
it "should import in background" do
|
178
|
-
file = UserImportFile.new :
|
186
|
+
file = UserImportFile.new user_import: File.new("#{Rails.root}/../../examples/user_import_file_sample.tsv"), user: users(:admin)
|
179
187
|
file.user = users(:admin)
|
180
188
|
file.default_user_group = UserGroup.find(2)
|
181
189
|
file.default_library = Library.find(3)
|
data/spec/models/user_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require '
|
2
|
+
require 'rails_helper'
|
3
3
|
|
4
4
|
describe User do
|
5
5
|
#pending "add some examples to (or delete) #{__FILE__}"
|
@@ -136,6 +136,34 @@ describe User do
|
|
136
136
|
users(:librarian1).reserves.not_sent_expiration_notice_to_patron.should be_empty
|
137
137
|
end
|
138
138
|
end
|
139
|
+
|
140
|
+
describe ".export" do
|
141
|
+
it "should export all user's information" do
|
142
|
+
lines = User.export
|
143
|
+
expect(lines).not_to be_empty
|
144
|
+
expect(lines.split(/\r\n/).size).to eq User.all.size + 1
|
145
|
+
end
|
146
|
+
it "should export share_bookmarks and save_search_history" do
|
147
|
+
user = FactoryGirl.create(:user,
|
148
|
+
profile: FactoryGirl.create(:profile,
|
149
|
+
share_bookmarks: true,
|
150
|
+
save_search_history: true))
|
151
|
+
lines = User.export
|
152
|
+
rows = CSV.new(lines, col_sep: "\t", headers: true)
|
153
|
+
rows.each do |row|
|
154
|
+
if row["username"] == user.username
|
155
|
+
expect(row["share_bookmarks"]).to eq "true"
|
156
|
+
expect(row["save_search_history"]).to eq "true"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
it "should work even if EnjuBookmark module is undefined" do
|
161
|
+
Object.send(:remove_const, :EnjuBookmark)
|
162
|
+
lines = User.export
|
163
|
+
expect(lines).not_to be_empty
|
164
|
+
expect(lines.split(/\r\n/).size).to eq User.all.size + 1
|
165
|
+
end
|
166
|
+
end
|
139
167
|
end
|
140
168
|
# == Schema Information
|
141
169
|
#
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
SimpleCov.start 'rails'
|
4
|
+
Coveralls.wear!
|
5
|
+
|
6
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
7
|
+
ENV['RAILS_ENV'] ||= 'test'
|
8
|
+
require File.expand_path('../../spec/dummy/config/environment', __FILE__)
|
9
|
+
# Prevent database truncation if the environment is production
|
10
|
+
abort("The Rails environment is running in production mode!") if Rails.env.production?
|
11
|
+
require 'spec_helper'
|
12
|
+
require 'rspec/rails'
|
13
|
+
# Add additional requires below this line. Rails is not loaded until this point!
|
14
|
+
require 'vcr'
|
15
|
+
require 'factory_girl'
|
16
|
+
require 'sunspot-rails-tester'
|
17
|
+
require 'rspec/active_model/mocks'
|
18
|
+
require 'capybara/rspec'
|
19
|
+
require 'cancan/matchers'
|
20
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
21
|
+
|
22
|
+
# Requires supporting ruby files with custom matchers and macros, etc, in
|
23
|
+
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
|
24
|
+
# run as spec files by default. This means that files in spec/support that end
|
25
|
+
# in _spec.rb will both be required and run as specs, causing the specs to be
|
26
|
+
# run twice. It is recommended that you do not name files matching this glob to
|
27
|
+
# end with _spec.rb. You can configure this pattern with the --pattern
|
28
|
+
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
|
29
|
+
#
|
30
|
+
# The following line is provided for convenience purposes. It has the downside
|
31
|
+
# of increasing the boot-up time by auto-requiring all files in the support
|
32
|
+
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
33
|
+
# require only the support files necessary.
|
34
|
+
#
|
35
|
+
# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
|
36
|
+
|
37
|
+
# Checks for pending migrations before tests are run.
|
38
|
+
# If you are not using ActiveRecord, you can remove this line.
|
39
|
+
ActiveRecord::Migration.maintain_test_schema! if Rails::VERSION::MAJOR >= 4
|
40
|
+
|
41
|
+
RSpec.configure do |config|
|
42
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
43
|
+
config.fixture_path = "#{::Rails.root}/../../spec/fixtures"
|
44
|
+
|
45
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
46
|
+
# examples within a transaction, remove the following line or assign false
|
47
|
+
# instead of true.
|
48
|
+
config.use_transactional_fixtures = true
|
49
|
+
|
50
|
+
# RSpec Rails can automatically mix in different behaviours to your tests
|
51
|
+
# based on their file location, for example enabling you to call `get` and
|
52
|
+
# `post` in specs under `spec/controllers`.
|
53
|
+
#
|
54
|
+
# You can disable this behaviour by removing the line below, and instead
|
55
|
+
# explicitly tag your specs with their type, e.g.:
|
56
|
+
#
|
57
|
+
# RSpec.describe UsersController, :type => :controller do
|
58
|
+
# # ...
|
59
|
+
# end
|
60
|
+
#
|
61
|
+
# The different available types are documented in the features, such as in
|
62
|
+
# https://relishapp.com/rspec/rspec-rails/docs
|
63
|
+
config.infer_spec_type_from_file_location!
|
64
|
+
|
65
|
+
config.extend ControllerMacros, :type => :controller
|
66
|
+
|
67
|
+
$original_sunspot_session = Sunspot.session
|
68
|
+
|
69
|
+
config.before do
|
70
|
+
Sunspot.session = Sunspot::Rails::StubSessionProxy.new($original_sunspot_session)
|
71
|
+
end
|
72
|
+
|
73
|
+
config.before :each, :solr => true do
|
74
|
+
Sunspot::Rails::Tester.start_original_sunspot_session
|
75
|
+
Sunspot.session = $original_sunspot_session
|
76
|
+
Sunspot.remove_all!
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
FactoryGirl.definition_file_paths << "#{::Rails.root}/../../spec/factories"
|
81
|
+
FactoryGirl.find_definitions
|
82
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -1,57 +1,92 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
require
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
# in spec/support/ and its subdirectories.
|
20
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
21
|
-
|
1
|
+
# This file was generated by the `rails generate rspec:install` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
4
|
+
# this file to always be loaded, without a need to explicitly require it in any
|
5
|
+
# files.
|
6
|
+
#
|
7
|
+
# Given that it is always loaded, you are encouraged to keep this file as
|
8
|
+
# light-weight as possible. Requiring heavyweight dependencies from this file
|
9
|
+
# will add to the boot time of your test suite on EVERY test run, even for an
|
10
|
+
# individual file that may not need all of that loaded. Instead, consider making
|
11
|
+
# a separate helper file that requires the additional dependencies and performs
|
12
|
+
# the additional setup, and require it from the spec files that actually need
|
13
|
+
# it.
|
14
|
+
#
|
15
|
+
# The `.rspec` file also contains a few flags that are not defaults but that
|
16
|
+
# users commonly want.
|
17
|
+
#
|
18
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
22
19
|
RSpec.configure do |config|
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
36
|
-
# examples within a transaction, remove the following line or assign false
|
37
|
-
# instead of true.
|
38
|
-
config.use_transactional_fixtures = true
|
39
|
-
config.extend ControllerMacros, :type => :controller
|
40
|
-
|
41
|
-
$original_sunspot_session = Sunspot.session
|
42
|
-
|
43
|
-
config.before do
|
44
|
-
Sunspot.session = Sunspot::Rails::StubSessionProxy.new($original_sunspot_session)
|
20
|
+
# rspec-expectations config goes here. You can use an alternate
|
21
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
22
|
+
# assertions if you prefer.
|
23
|
+
config.expect_with :rspec do |expectations|
|
24
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
25
|
+
# and `failure_message` of custom matchers include text for helper methods
|
26
|
+
# defined using `chain`, e.g.:
|
27
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
28
|
+
# # => "be bigger than 2 and smaller than 4"
|
29
|
+
# ...rather than:
|
30
|
+
# # => "be bigger than 2"
|
31
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
45
32
|
end
|
46
33
|
|
47
|
-
config.
|
48
|
-
|
49
|
-
|
50
|
-
|
34
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
35
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
36
|
+
config.mock_with :rspec do |mocks|
|
37
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
38
|
+
# a real object. This is generally recommended, and will default to
|
39
|
+
# `true` in RSpec 4.
|
40
|
+
mocks.verify_partial_doubles = true
|
51
41
|
end
|
52
42
|
|
53
|
-
|
54
|
-
|
43
|
+
# The settings below are suggested to provide a good initial experience
|
44
|
+
# with RSpec, but feel free to customize to your heart's content.
|
45
|
+
=begin
|
46
|
+
# These two settings work together to allow you to limit a spec run
|
47
|
+
# to individual examples or groups you care about by tagging them with
|
48
|
+
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
49
|
+
# get run.
|
50
|
+
config.filter_run :focus
|
51
|
+
config.run_all_when_everything_filtered = true
|
52
|
+
|
53
|
+
# Allows RSpec to persist some state between runs in order to support
|
54
|
+
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
55
|
+
# you configure your source control system to ignore this file.
|
56
|
+
config.example_status_persistence_file_path = "spec/examples.txt"
|
55
57
|
|
56
|
-
|
57
|
-
|
58
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
59
|
+
# recommended. For more details, see:
|
60
|
+
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
61
|
+
# - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
62
|
+
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
63
|
+
config.disable_monkey_patching!
|
64
|
+
|
65
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
66
|
+
# file, and it's useful to allow more verbose output when running an
|
67
|
+
# individual spec file.
|
68
|
+
if config.files_to_run.one?
|
69
|
+
# Use the documentation formatter for detailed output,
|
70
|
+
# unless a formatter has already been configured
|
71
|
+
# (e.g. via a command-line flag).
|
72
|
+
config.default_formatter = 'doc'
|
73
|
+
end
|
74
|
+
|
75
|
+
# Print the 10 slowest examples and example groups at the
|
76
|
+
# end of the spec run, to help surface which specs are running
|
77
|
+
# particularly slow.
|
78
|
+
config.profile_examples = 10
|
79
|
+
|
80
|
+
# Run specs in random order to surface order dependencies. If you find an
|
81
|
+
# order dependency and want to debug it, you can fix the order by providing
|
82
|
+
# the seed, which is printed after each run.
|
83
|
+
# --seed 1234
|
84
|
+
config.order = :random
|
85
|
+
|
86
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
87
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
88
|
+
# test failures related to randomization by passing the same `--seed` value
|
89
|
+
# as the one that triggered the failure.
|
90
|
+
Kernel.srand config.seed
|
91
|
+
=end
|
92
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe "user_import_results/index" do
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
assign(:user_import_results, UserImportResult.page(1))
|
8
|
+
admin = User.find('enjuadmin')
|
9
|
+
view.stub(:current_user).and_return(admin)
|
10
|
+
@ability = EnjuLeaf::Ability.new(admin, '0.0.0.0')
|
11
|
+
@ability.extend(CanCan::Ability)
|
12
|
+
controller.stub(:current_ability) { @ability }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "renders a list of user_import_results" do
|
16
|
+
render
|
17
|
+
expect(rendered).to match /MyString/
|
18
|
+
end
|
19
|
+
|
20
|
+
context "with @user_import_file" do
|
21
|
+
before(:each) do
|
22
|
+
@user_import_file = UserImportFile.find(1)
|
23
|
+
@user_import_results = UserImportResult.where(user_import_file_id: 1).page(1)
|
24
|
+
end
|
25
|
+
it "renders a list of user_import_results for the user_import_file" do
|
26
|
+
render
|
27
|
+
expect(view).to render_template "user_import_results/_list_lines"
|
28
|
+
expect(rendered).to match /MyString/
|
29
|
+
expect(rendered).to match /<td>1<\/td>/
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|