enju_ndl 0.1.1 → 0.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +3 -3
  3. data/app/controllers/ndl_books_controller.rb +3 -6
  4. data/app/policies/ndl_book_policy.rb +9 -0
  5. data/app/views/ndl_books/index.html.erb +5 -0
  6. data/config/locales/en.yml +1 -0
  7. data/config/locales/ja.yml +1 -0
  8. data/lib/enju_ndl/ndl_search.rb +7 -0
  9. data/lib/enju_ndl/version.rb +1 -1
  10. data/spec/cassette_library/NdlBook/import/should_import_edition.yml +191 -0
  11. data/spec/cassette_library/NdlBook/import/should_import_series_statement_if_the_resource_is_serial.yml +30 -26
  12. data/spec/cassette_library/NdlBook/import/should_import_volume_title.yml +182 -0
  13. data/spec/cassette_library/ndl_books/index/ndl_search_menu/should_reflect_query_params_for_views.yml +422 -0
  14. data/spec/dummy/app/controllers/application_controller.rb +7 -0
  15. data/spec/dummy/app/models/user.rb +1 -2
  16. data/spec/dummy/config/application.rb +7 -26
  17. data/spec/dummy/config/environments/development.rb +25 -14
  18. data/spec/dummy/config/environments/production.rb +50 -31
  19. data/spec/dummy/config/environments/test.rb +23 -18
  20. data/spec/dummy/config/initializers/enju_leaf.rb +1 -0
  21. data/spec/dummy/db/migrate/059_create_libraries.rb +28 -0
  22. data/spec/dummy/db/migrate/069_create_shelves.rb +15 -0
  23. data/spec/dummy/db/migrate/080_create_library_groups.rb +17 -0
  24. data/spec/dummy/db/migrate/120_create_baskets.rb +12 -0
  25. data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
  26. data/spec/dummy/db/migrate/130_create_request_status_types.rb +12 -0
  27. data/spec/dummy/db/migrate/131_create_request_types.rb +12 -0
  28. data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
  29. data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
  30. data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
  31. data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
  32. data/spec/dummy/db/migrate/20100314190054_add_opening_hour_to_library.rb +9 -0
  33. data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
  34. data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +5 -0
  35. data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +12 -0
  36. data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
  37. data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
  38. data/spec/dummy/db/migrate/20130412083556_add_latitude_and_longitude_to_library.rb +6 -0
  39. data/spec/dummy/db/migrate/20140821151023_create_colors.rb +14 -0
  40. data/spec/dummy/db/schema.rb +175 -0
  41. data/spec/fixtures/library_groups.yml +31 -0
  42. data/spec/fixtures/users.yml +1 -1
  43. data/spec/models/ndl_book_spec.rb +20 -1
  44. data/spec/requests/ndl_books_spec.rb +2 -1
  45. data/spec/spec_helper.rb +12 -0
  46. data/spec/support/devise.rb +2 -2
  47. data/spec/views/ndl_books/index.html.erb_spec.rb +17 -0
  48. metadata +117 -26
  49. data/spec/dummy/config/application.yml +0 -38
@@ -13,6 +13,17 @@
13
13
 
14
14
  ActiveRecord::Schema.define(version: 20141014065831) do
15
15
 
16
+ create_table "accepts", force: :cascade do |t|
17
+ t.integer "basket_id"
18
+ t.integer "item_id"
19
+ t.integer "librarian_id"
20
+ t.datetime "created_at"
21
+ t.datetime "updated_at"
22
+ end
23
+
24
+ add_index "accepts", ["basket_id"], name: "index_accepts_on_basket_id"
25
+ add_index "accepts", ["item_id"], name: "index_accepts_on_item_id"
26
+
16
27
  create_table "agent_import_file_transitions", force: :cascade do |t|
17
28
  t.string "to_state"
18
29
  t.text "metadata", default: "{}"
@@ -155,6 +166,39 @@ ActiveRecord::Schema.define(version: 20141014065831) do
155
166
  add_index "agents", ["language_id"], name: "index_agents_on_language_id"
156
167
  add_index "agents", ["required_role_id"], name: "index_agents_on_required_role_id"
157
168
 
169
+ create_table "baskets", force: :cascade do |t|
170
+ t.integer "user_id"
171
+ t.text "note"
172
+ t.integer "lock_version", default: 0, null: false
173
+ t.datetime "created_at"
174
+ t.datetime "updated_at"
175
+ end
176
+
177
+ add_index "baskets", ["user_id"], name: "index_baskets_on_user_id"
178
+
179
+ create_table "bookstores", force: :cascade do |t|
180
+ t.text "name", null: false
181
+ t.string "zip_code"
182
+ t.text "address"
183
+ t.text "note"
184
+ t.string "telephone_number"
185
+ t.string "fax_number"
186
+ t.string "url"
187
+ t.integer "position"
188
+ t.datetime "deleted_at"
189
+ t.datetime "created_at"
190
+ t.datetime "updated_at"
191
+ end
192
+
193
+ create_table "budget_types", force: :cascade do |t|
194
+ t.string "name"
195
+ t.text "display_name"
196
+ t.text "note"
197
+ t.integer "position"
198
+ t.datetime "created_at"
199
+ t.datetime "updated_at"
200
+ end
201
+
158
202
  create_table "carrier_type_has_checkout_types", force: :cascade do |t|
159
203
  t.integer "carrier_type_id", null: false
160
204
  t.integer "checkout_type_id", null: false
@@ -291,6 +335,17 @@ ActiveRecord::Schema.define(version: 20141014065831) do
291
335
  add_index "classifications", ["manifestation_id"], name: "index_classifications_on_manifestation_id"
292
336
  add_index "classifications", ["parent_id"], name: "index_classifications_on_parent_id"
293
337
 
338
+ create_table "colors", force: :cascade do |t|
339
+ t.integer "library_group_id"
340
+ t.string "property"
341
+ t.string "code"
342
+ t.integer "position"
343
+ t.datetime "created_at"
344
+ t.datetime "updated_at"
345
+ end
346
+
347
+ add_index "colors", ["library_group_id"], name: "index_colors_on_library_group_id"
348
+
294
349
  create_table "content_types", force: :cascade do |t|
295
350
  t.string "name", null: false
296
351
  t.text "display_name"
@@ -598,6 +653,53 @@ ActiveRecord::Schema.define(version: 20141014065831) do
598
653
 
599
654
  add_index "lending_policies", ["item_id", "user_group_id"], name: "index_lending_policies_on_item_id_and_user_group_id", unique: true
600
655
 
656
+ create_table "libraries", force: :cascade do |t|
657
+ t.string "name", null: false
658
+ t.text "display_name"
659
+ t.string "short_display_name", null: false
660
+ t.string "zip_code"
661
+ t.text "street"
662
+ t.text "locality"
663
+ t.text "region"
664
+ t.string "telephone_number_1"
665
+ t.string "telephone_number_2"
666
+ t.string "fax_number"
667
+ t.text "note"
668
+ t.integer "call_number_rows", default: 1, null: false
669
+ t.string "call_number_delimiter", default: "|", null: false
670
+ t.integer "library_group_id", default: 1, null: false
671
+ t.integer "users_count", default: 0, null: false
672
+ t.integer "position"
673
+ t.integer "country_id"
674
+ t.datetime "created_at"
675
+ t.datetime "updated_at"
676
+ t.datetime "deleted_at"
677
+ t.text "opening_hour"
678
+ t.string "isil"
679
+ t.float "latitude"
680
+ t.float "longitude"
681
+ end
682
+
683
+ add_index "libraries", ["library_group_id"], name: "index_libraries_on_library_group_id"
684
+ add_index "libraries", ["name"], name: "index_libraries_on_name", unique: true
685
+
686
+ create_table "library_groups", force: :cascade do |t|
687
+ t.string "name", null: false
688
+ t.text "display_name"
689
+ t.string "short_name", null: false
690
+ t.text "my_networks"
691
+ t.text "login_banner"
692
+ t.text "note"
693
+ t.integer "country_id"
694
+ t.integer "position"
695
+ t.datetime "created_at"
696
+ t.datetime "updated_at"
697
+ t.text "admin_networks"
698
+ t.string "url", default: "http://localhost:3000/"
699
+ end
700
+
701
+ add_index "library_groups", ["short_name"], name: "index_library_groups_on_short_name"
702
+
601
703
  create_table "licenses", force: :cascade do |t|
602
704
  t.string "name", null: false
603
705
  t.string "display_name"
@@ -928,6 +1030,24 @@ ActiveRecord::Schema.define(version: 20141014065831) do
928
1030
  add_index "realizes", ["agent_id"], name: "index_realizes_on_agent_id"
929
1031
  add_index "realizes", ["expression_id"], name: "index_realizes_on_expression_id"
930
1032
 
1033
+ create_table "request_status_types", force: :cascade do |t|
1034
+ t.string "name", null: false
1035
+ t.text "display_name"
1036
+ t.text "note"
1037
+ t.integer "position"
1038
+ t.datetime "created_at"
1039
+ t.datetime "updated_at"
1040
+ end
1041
+
1042
+ create_table "request_types", force: :cascade do |t|
1043
+ t.string "name", null: false
1044
+ t.text "display_name"
1045
+ t.text "note"
1046
+ t.integer "position"
1047
+ t.datetime "created_at"
1048
+ t.datetime "updated_at"
1049
+ end
1050
+
931
1051
  create_table "reserve_stat_has_manifestations", force: :cascade do |t|
932
1052
  t.integer "manifestation_reserve_stat_id", null: false
933
1053
  t.integer "manifestation_id", null: false
@@ -1067,6 +1187,20 @@ ActiveRecord::Schema.define(version: 20141014065831) do
1067
1187
  t.integer "position"
1068
1188
  end
1069
1189
 
1190
+ create_table "search_engines", force: :cascade do |t|
1191
+ t.string "name", null: false
1192
+ t.text "display_name"
1193
+ t.string "url", null: false
1194
+ t.text "base_url", null: false
1195
+ t.text "http_method", null: false
1196
+ t.text "query_param", null: false
1197
+ t.text "additional_param"
1198
+ t.text "note"
1199
+ t.integer "position"
1200
+ t.datetime "created_at"
1201
+ t.datetime "updated_at"
1202
+ end
1203
+
1070
1204
  create_table "series_statement_merge_lists", force: :cascade do |t|
1071
1205
  t.string "title"
1072
1206
  t.datetime "created_at"
@@ -1108,6 +1242,21 @@ ActiveRecord::Schema.define(version: 20141014065831) do
1108
1242
  add_index "series_statements", ["root_manifestation_id"], name: "index_series_statements_on_root_manifestation_id"
1109
1243
  add_index "series_statements", ["series_statement_identifier"], name: "index_series_statements_on_series_statement_identifier"
1110
1244
 
1245
+ create_table "shelves", force: :cascade do |t|
1246
+ t.string "name", null: false
1247
+ t.text "display_name"
1248
+ t.text "note"
1249
+ t.integer "library_id", default: 1, null: false
1250
+ t.integer "items_count", default: 0, null: false
1251
+ t.integer "position"
1252
+ t.datetime "created_at"
1253
+ t.datetime "updated_at"
1254
+ t.datetime "deleted_at"
1255
+ t.boolean "closed", default: false, null: false
1256
+ end
1257
+
1258
+ add_index "shelves", ["library_id"], name: "index_shelves_on_library_id"
1259
+
1111
1260
  create_table "subject_heading_types", force: :cascade do |t|
1112
1261
  t.string "name", null: false
1113
1262
  t.text "display_name"
@@ -1151,6 +1300,32 @@ ActiveRecord::Schema.define(version: 20141014065831) do
1151
1300
  add_index "subjects", ["term"], name: "index_subjects_on_term"
1152
1301
  add_index "subjects", ["use_term_id"], name: "index_subjects_on_use_term_id"
1153
1302
 
1303
+ create_table "subscribes", force: :cascade do |t|
1304
+ t.integer "subscription_id", null: false
1305
+ t.integer "work_id", null: false
1306
+ t.datetime "start_at", null: false
1307
+ t.datetime "end_at", null: false
1308
+ t.datetime "created_at"
1309
+ t.datetime "updated_at"
1310
+ end
1311
+
1312
+ add_index "subscribes", ["subscription_id"], name: "index_subscribes_on_subscription_id"
1313
+ add_index "subscribes", ["work_id"], name: "index_subscribes_on_work_id"
1314
+
1315
+ create_table "subscriptions", force: :cascade do |t|
1316
+ t.text "title", null: false
1317
+ t.text "note"
1318
+ t.integer "user_id"
1319
+ t.integer "order_list_id"
1320
+ t.datetime "deleted_at"
1321
+ t.integer "subscribes_count", default: 0, null: false
1322
+ t.datetime "created_at"
1323
+ t.datetime "updated_at"
1324
+ end
1325
+
1326
+ add_index "subscriptions", ["order_list_id"], name: "index_subscriptions_on_order_list_id"
1327
+ add_index "subscriptions", ["user_id"], name: "index_subscriptions_on_user_id"
1328
+
1154
1329
  create_table "use_restrictions", force: :cascade do |t|
1155
1330
  t.string "name", null: false
1156
1331
  t.text "display_name"
@@ -0,0 +1,31 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ name: enju_library
5
+ display_name: "<%= I18n.locale %>: Enju Library"
6
+ short_name: enju
7
+ note:
8
+ my_networks: 0.0.0.0/0
9
+ url: "http://localhost:3000/"
10
+
11
+
12
+ # == Schema Information
13
+ #
14
+ # Table name: library_groups
15
+ #
16
+ # id :integer not null, primary key
17
+ # name :string(255) not null
18
+ # display_name :text
19
+ # short_name :string(255) not null
20
+ # my_networks :text
21
+ # login_banner :text
22
+ # note :text
23
+ # country_id :integer
24
+ # created_at :datetime not null
25
+ # updated_at :datetime not null
26
+ # admin_networks :text
27
+ # allow_bookmark_external_url :boolean default(FALSE), not null
28
+ # position :integer
29
+ # url :string(255) default("http://localhost:3000/")
30
+ #
31
+
@@ -3,7 +3,7 @@ admin:
3
3
  updated_at: 2008-05-31 13:16:30.163731 +09:00
4
4
  encrypted_password: $2a$10$vHohD1WflnTIqAa8zMkF9evwAgIZRw3XuR4d3bi29M.jph/MB/AJi
5
5
  id: 1
6
- username: admin
6
+ username: enjuadmin
7
7
  email: tanabe@kamata.lib.teu.ac.jp
8
8
  created_at: 2007-11-19 16:58:32.111941 +09:00
9
9
  librarian1:
@@ -76,12 +76,20 @@ describe NdlBook do
76
76
  manifestation.series_statements.first.title_transcription.should eq "コウダンシャ ゲンダイ シンショ"
77
77
  end
78
78
 
79
- it "should import series_statement if the resource is serial", :vcr => true do
79
+ it "should import series_statement if the resource is serial", vcr: true, solr: true do
80
80
  manifestation = NdlBook.import_from_sru_response('R100000039-I001413988-00')
81
81
  manifestation.original_title.should eq "週刊新潮"
82
82
  manifestation.series_statements.first.original_title.should eq "週刊新潮"
83
83
  manifestation.series_statements.first.series_master.should be_truthy
84
84
  manifestation.serial.should be_truthy
85
+ manifestation.series_statements.first.root_manifestation.should eq manifestation
86
+ manifestation.root_series_statement.should eq manifestation.series_statements.first
87
+
88
+ search = Manifestation.search
89
+ search.build do
90
+ with(:resource_master).equal_to true
91
+ end
92
+ search.results.first.original_title.should eq "週刊新潮"
85
93
  end
86
94
 
87
95
  it "should import pud_date is nil", :vcr => true do
@@ -174,5 +182,16 @@ describe NdlBook do
174
182
  manifestation.classifications.first.classification_type.name.should eq "ndc8"
175
183
  manifestation.classifications.first.category.should eq "547.48"
176
184
  end
185
+
186
+ it "should import edition", :vcr => true do
187
+ manifestation = NdlBook.import_from_sru_response( "R100000002-I025107686-00" )
188
+ manifestation.edition_string.should eq "改訂第2版"
189
+ end
190
+
191
+ it "should import volume title", :vcr => true do
192
+ manifestation = NdlBook.import_from_sru_response( "R100000002-I000011225479-00" )
193
+ manifestation.original_title.should eq "じゃらん 関東・東北"
194
+ manifestation.title_transcription.should eq "ジャラン カントウ トウホク"
195
+ end
177
196
  end
178
197
  end
@@ -2,8 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe "NdlBooks" do
4
4
  describe "GET /ndl_books" do
5
+
5
6
  it "works! (now write some real specs)" do
6
7
  get ndl_books_path
7
- end
8
+ end
8
9
  end
9
10
  end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,7 @@ ENV["RAILS_ENV"] ||= 'test'
8
8
  require File.expand_path("../dummy/config/environment", __FILE__)
9
9
  require 'rspec/rails'
10
10
  require 'vcr'
11
+ require 'sunspot-rails-tester'
11
12
 
12
13
  # Requires supporting ruby files with custom matchers and macros, etc,
13
14
  # in spec/support/ and its subdirectories.
@@ -37,8 +38,18 @@ RSpec.configure do |config|
37
38
  config.before do
38
39
  Sunspot.session = Sunspot::Rails::StubSessionProxy.new($original_sunspot_session)
39
40
  end
41
+ config.before :each, :solr => true do
42
+ Sunspot::Rails::Tester.start_original_sunspot_session
43
+ Sunspot.session = $original_sunspot_session
44
+ Sunspot.remove_all!
45
+ end
40
46
 
41
47
  config.infer_spec_type_from_file_location!
48
+
49
+ config.include Warden::Test::Helpers
50
+ config.before :suite do
51
+ Warden.test_mode!
52
+ end
42
53
  end
43
54
 
44
55
  VCR.configure do |c|
@@ -46,4 +57,5 @@ VCR.configure do |c|
46
57
  c.hook_into :webmock
47
58
  c.configure_rspec_metadata!
48
59
  c.allow_http_connections_when_no_cassette = true
60
+ c.ignore_localhost = true
49
61
  end
@@ -1,4 +1,4 @@
1
1
  RSpec.configure do |config|
2
- config.include Devise::TestHelpers, :type => :controller
3
- config.include Devise::TestHelpers, :type => :view
2
+ config.include Devise::Test::ControllerHelpers, type: :controller
3
+ config.include Devise::Test::ControllerHelpers, type: :view
4
4
  end
@@ -0,0 +1,17 @@
1
+ require "spec_helper.rb"
2
+
3
+ describe "ndl_books/index" do
4
+ describe "ndl search menu" do
5
+ it "should reflect query params for views", vcr: true do
6
+ params[:query] = "test"
7
+ assign(:query, "test")
8
+ books = NdlBook.search(params[:query])
9
+ assign(:books, Kaminari.paginate_array(books[:items],
10
+ total_count: books[:total_entries],
11
+ ).page(1).per(10))
12
+ render
13
+ expect(rendered).to include "http://iss.ndl.go.jp/books?any=test"
14
+ end
15
+ end
16
+ end
17
+