enju_leaf 1.2.0.beta.2 → 1.2.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/views/layouts/application.html.erb +1 -1
- data/app/views/page/configuration.html.erb +6 -2
- data/app/views/page/import.html.erb +3 -1
- data/lib/enju_leaf.rb +0 -3
- data/lib/enju_leaf/version.rb +1 -1
- data/lib/generators/enju_leaf/quick_install/quick_install_generator.rb +3 -0
- data/lib/generators/enju_leaf/setup/setup_generator.rb +3 -5
- data/lib/tasks/enju_leaf_tasks.rake +3 -6
- data/spec/dummy/app/models/user.rb +1 -3
- data/spec/dummy/config/application.rb +4 -2
- data/spec/dummy/db/migrate/20160813191533_add_book_jacket_source_to_library_group.rb +5 -0
- data/spec/dummy/db/migrate/20160813191647_add_max_number_of_results_to_library_group.rb +5 -0
- data/spec/dummy/db/migrate/20160813191733_add_family_name_first_to_library_group.rb +5 -0
- data/spec/dummy/db/migrate/20160813191820_add_screenshot_generator_to_library_group.rb +5 -0
- data/spec/dummy/db/migrate/20160813192542_add_pub_year_facet_range_interval_to_library_group.rb +5 -0
- data/spec/dummy/db/migrate/20160813203039_add_user_id_to_library_group.rb +5 -0
- data/spec/dummy/db/schema.rb +14 -6
- data/spec/fixtures/library_groups.yml +1 -2
- data/spec/views/page/about.html.erb_spec.rb +2 -3
- data/spec/views/page/advanced_search.html.erb_spec.rb +1 -2
- data/spec/views/page/configuration.html.erb_spec.rb +2 -3
- data/spec/views/page/export.html.erb_spec.rb +2 -3
- data/spec/views/page/import.html.erb_spec.rb +2 -3
- data/spec/views/page/index.html.erb_spec.rb +1 -1
- data/spec/views/page/opensearch.xml.builder_spec.rb +1 -2
- data/spec/views/page/statistics.html.erb_spec.rb +3 -4
- metadata +43 -46
- data/app/models/concerns/calculate_stat.rb +0 -35
- data/app/models/concerns/enju_leaf/enju_user.rb +0 -309
- data/app/models/concerns/export_file.rb +0 -19
- data/app/models/concerns/import_file.rb +0 -89
- data/app/models/concerns/master_model.rb +0 -38
- data/lib/enju_leaf/localized_name.rb +0 -15
- data/lib/enju_leaf/url_validator.rb +0 -12
- data/lib/generators/enju_leaf/setup/templates/config/initializers/enju_leaf.rb +0 -1
- data/lib/generators/enju_leaf/setup/templates/config/initializers/resque.rb +0 -3
- data/spec/dummy/config/initializers/enju_leaf.rb +0 -2
- data/spec/factories/checkout.rb +0 -9
- data/spec/models/user_spec.rb +0 -194
@@ -1,38 +0,0 @@
|
|
1
|
-
module MasterModel
|
2
|
-
extend ActiveSupport::Concern
|
3
|
-
|
4
|
-
included do
|
5
|
-
acts_as_list
|
6
|
-
validates_uniqueness_of :name, case_sensitive: false
|
7
|
-
validates :name, presence: true
|
8
|
-
validate :name do
|
9
|
-
valid_name?
|
10
|
-
end
|
11
|
-
validate :display_name do
|
12
|
-
valid_yaml?
|
13
|
-
end
|
14
|
-
validates :display_name, presence: true
|
15
|
-
before_validation :set_display_name, on: :create
|
16
|
-
strip_attributes only: :name
|
17
|
-
end
|
18
|
-
|
19
|
-
# 表示名を設定します。
|
20
|
-
def set_display_name
|
21
|
-
self.display_name = "#{I18n.locale}: #{name}" if display_name.blank?
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
def valid_name?
|
26
|
-
unless name =~ /\A[a-z][0-9a-z_]*[0-9a-z]\z/
|
27
|
-
errors.add(:name, I18n.t('page.only_lowercase_letters_and_numbers_are_allowed'))
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def valid_yaml?
|
32
|
-
begin
|
33
|
-
YAML.load(display_name)
|
34
|
-
rescue Psych::SyntaxError
|
35
|
-
errors.add(:display_name, I18n.t('page.cannot_parse_yaml_header'))
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module LocalizedName
|
2
|
-
def localize(locale = I18n.locale)
|
3
|
-
string = YAML.load(self)
|
4
|
-
if string.is_a?(Hash) and string[locale.to_s]
|
5
|
-
return string[locale.to_s]
|
6
|
-
end
|
7
|
-
self
|
8
|
-
rescue NoMethodError
|
9
|
-
self
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class String
|
14
|
-
include LocalizedName
|
15
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class UrlValidator < ActiveModel::EachValidator
|
2
|
-
def validate_each(record, attribute, value)
|
3
|
-
if value =~ /\Ahttps?:\/\/[^\n]+\z/i
|
4
|
-
url = ::Addressable::URI.parse(value)
|
5
|
-
unless ['http', 'https'].include?(url.scheme)
|
6
|
-
record.errors.add(attribute.to_sym)
|
7
|
-
end
|
8
|
-
else
|
9
|
-
record.errors.add(attribute.to_sym)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
Item.include(EnjuLibrary::EnjuItem)
|
data/spec/factories/checkout.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :checkout, :class => Checkout do |f|
|
3
|
-
f.due_date Time.zone.now.next_week
|
4
|
-
f.association :item, factory: :item
|
5
|
-
f.association :user, factory: :user
|
6
|
-
f.association :librarian, factory: :librarian
|
7
|
-
f.association :basket, factory: :basket
|
8
|
-
end
|
9
|
-
end
|
data/spec/models/user_spec.rb
DELETED
@@ -1,194 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'rails_helper'
|
3
|
-
|
4
|
-
describe User do
|
5
|
-
#pending "add some examples to (or delete) #{__FILE__}"
|
6
|
-
fixtures :all
|
7
|
-
|
8
|
-
it 'should create an user' do
|
9
|
-
FactoryGirl.create(:user)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should destroy an user' do
|
13
|
-
user = FactoryGirl.create(:user)
|
14
|
-
user.destroy.should be_truthy
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should respond to has_role(Administrator)' do
|
18
|
-
admin = FactoryGirl.create(:admin)
|
19
|
-
admin.has_role?('Administrator').should be_truthy
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should respond to has_role(Librarian)' do
|
23
|
-
librarian = FactoryGirl.create(:librarian)
|
24
|
-
librarian.has_role?('Administrator').should be_falsy
|
25
|
-
librarian.has_role?('Librarian').should be_truthy
|
26
|
-
librarian.has_role?('User').should be_truthy
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should respond to has_role(User)' do
|
30
|
-
user = FactoryGirl.create(:user)
|
31
|
-
user.has_role?('Administrator').should be_falsy
|
32
|
-
user.has_role?('Librarian').should be_falsy
|
33
|
-
user.has_role?('User').should be_truthy
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'should lock an user' do
|
37
|
-
user = FactoryGirl.create(:user)
|
38
|
-
user.locked = '1'
|
39
|
-
user.save
|
40
|
-
user.active_for_authentication?.should be_falsy
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should unlock an user' do
|
44
|
-
user = FactoryGirl.create(:user)
|
45
|
-
user.lock_access!
|
46
|
-
user.locked = '0'
|
47
|
-
user.save
|
48
|
-
user.active_for_authentication?.should be_truthy
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should create user" do
|
52
|
-
user = FactoryGirl.create(:user)
|
53
|
-
assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should require username" do
|
57
|
-
old_count = User.count
|
58
|
-
user = FactoryGirl.build(:user, :username => nil)
|
59
|
-
user.save
|
60
|
-
user.errors[:username].should be_truthy
|
61
|
-
User.count.should eq old_count
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should require password" do
|
65
|
-
user = FactoryGirl.build(:user, :password => nil)
|
66
|
-
user.save
|
67
|
-
user.errors[:password].should be_truthy
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should not require password_confirmation on create" do
|
71
|
-
user = FactoryGirl.build(:user, :password => 'new_password', :password_confirmation => nil)
|
72
|
-
user.save
|
73
|
-
user.errors[:email].should be_empty
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should reset password" do
|
77
|
-
users(:user1).password = 'new password'
|
78
|
-
users(:user1).password_confirmation = 'new password'
|
79
|
-
users(:user1).save
|
80
|
-
users(:user1).valid_password?('new password').should be_truthy
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should set temporary_password" do
|
84
|
-
user = users(:user1)
|
85
|
-
old_password = user.encrypted_password
|
86
|
-
user.set_auto_generated_password
|
87
|
-
user.save
|
88
|
-
old_password.should_not eq user.encrypted_password
|
89
|
-
user.valid_password?('user1password').should be_falsy
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should get highest_role" do
|
93
|
-
users(:admin).role.name.should eq 'Administrator'
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should lock all expired users" do
|
97
|
-
User.lock_expired_users
|
98
|
-
users(:user4).active_for_authentication?.should be_falsy
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should lock_expired users" do
|
102
|
-
user = users(:user1)
|
103
|
-
users(:user1).active_for_authentication?.should be_truthy
|
104
|
-
user.expired_at = 1.day.ago
|
105
|
-
user.save
|
106
|
-
users(:user1).active_for_authentication?.should be_falsy
|
107
|
-
end
|
108
|
-
|
109
|
-
if defined?(EnjuQuestion)
|
110
|
-
it "should reset answer_feed_token" do
|
111
|
-
users(:user1).reset_answer_feed_token
|
112
|
-
users(:user1).answer_feed_token.should be_truthy
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should delete answer_feed_token" do
|
116
|
-
users(:user1).delete_answer_feed_token
|
117
|
-
users(:user1).answer_feed_token.should be_nil
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
if defined?(EnjuCirculation)
|
122
|
-
it "should get checked_item_count" do
|
123
|
-
count = users(:user1).checked_item_count
|
124
|
-
count.should eq({:book=>2, :serial=>1, :cd=>0})
|
125
|
-
end
|
126
|
-
|
127
|
-
it "should get reserves_count" do
|
128
|
-
users(:user1).reserves.waiting.count.should eq 1
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
if defined?(EnjuCirculation)
|
133
|
-
it "should send_message" do
|
134
|
-
assert users(:librarian1).send_message('reservation_expired_for_patron', :manifestations => users(:librarian1).reserves.not_sent_expiration_notice_to_patron.collect(&:manifestation))
|
135
|
-
users(:librarian1).reload
|
136
|
-
users(:librarian1).reserves.not_sent_expiration_notice_to_patron.should be_empty
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
describe ".export" do
|
141
|
-
it "should export all user's information" do
|
142
|
-
lines = User.export
|
143
|
-
CSV.parse(lines, col_sep: "\t")
|
144
|
-
expect(lines).not_to be_empty
|
145
|
-
expect(lines.split(/\n/).size).to eq User.count + 1
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
# == Schema Information
|
151
|
-
#
|
152
|
-
# Table name: users
|
153
|
-
#
|
154
|
-
# id :integer not null, primary key
|
155
|
-
# email :string(255) default(""), not null
|
156
|
-
# encrypted_password :string(255) default(""), not null
|
157
|
-
# reset_password_token :string(255)
|
158
|
-
# reset_password_sent_at :datetime
|
159
|
-
# remember_created_at :datetime
|
160
|
-
# sign_in_count :integer default(0)
|
161
|
-
# current_sign_in_at :datetime
|
162
|
-
# last_sign_in_at :datetime
|
163
|
-
# current_sign_in_ip :string(255)
|
164
|
-
# last_sign_in_ip :string(255)
|
165
|
-
# password_salt :string(255)
|
166
|
-
# confirmation_token :string(255)
|
167
|
-
# confirmed_at :datetime
|
168
|
-
# confirmation_sent_at :datetime
|
169
|
-
# unconfirmed_email :string(255)
|
170
|
-
# failed_attempts :integer default(0)
|
171
|
-
# unlock_token :string(255)
|
172
|
-
# locked_at :datetime
|
173
|
-
# authentication_token :string(255)
|
174
|
-
# created_at :datetime not null
|
175
|
-
# updated_at :datetime not null
|
176
|
-
# deleted_at :datetime
|
177
|
-
# username :string(255) not null
|
178
|
-
# library_id :integer default(1), not null
|
179
|
-
# user_group_id :integer default(1), not null
|
180
|
-
# expired_at :datetime
|
181
|
-
# required_role_id :integer default(1), not null
|
182
|
-
# note :text
|
183
|
-
# keyword_list :text
|
184
|
-
# user_number :string(255)
|
185
|
-
# state :string(255)
|
186
|
-
# locale :string(255)
|
187
|
-
# enju_access_key :string(255)
|
188
|
-
# save_checkout_history :boolean default(FALSE), not null
|
189
|
-
# checkout_icalendar_token :string(255)
|
190
|
-
# share_bookmarks :boolean
|
191
|
-
# save_search_history :boolean default(FALSE), not null
|
192
|
-
# answer_feed_token :string(255)
|
193
|
-
#
|
194
|
-
|