enju_biblio 0.3.9 → 0.3.10.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/content_types_controller.rb +1 -1
  3. data/app/controllers/item_custom_properties_controller.rb +64 -0
  4. data/app/controllers/items_controller.rb +3 -0
  5. data/app/controllers/manifestation_custom_properties_controller.rb +64 -0
  6. data/app/controllers/manifestations_controller.rb +8 -5
  7. data/app/controllers/resource_import_results_controller.rb +6 -2
  8. data/app/models/agent_type.rb +0 -1
  9. data/app/models/carrier_type.rb +0 -1
  10. data/app/models/content_type.rb +0 -1
  11. data/app/models/form_of_work.rb +1 -2
  12. data/app/models/frequency.rb +0 -1
  13. data/app/models/identifier_type.rb +0 -1
  14. data/app/models/item.rb +8 -1
  15. data/app/models/item_custom_property.rb +18 -0
  16. data/app/models/item_custom_value.rb +17 -0
  17. data/app/models/license.rb +0 -1
  18. data/app/models/manifestation.rb +18 -0
  19. data/app/models/manifestation_custom_property.rb +18 -0
  20. data/app/models/manifestation_custom_value.rb +17 -0
  21. data/app/models/medium_of_performance.rb +1 -2
  22. data/app/models/resource_import_file.rb +81 -9
  23. data/app/policies/item_custom_property_policy.rb +21 -0
  24. data/app/policies/manifestation_custom_property_policy.rb +21 -0
  25. data/app/views/item_custom_properties/_form.html.erb +32 -0
  26. data/app/views/item_custom_properties/edit.html.erb +6 -0
  27. data/app/views/item_custom_properties/index.html.erb +36 -0
  28. data/app/views/item_custom_properties/new.html.erb +5 -0
  29. data/app/views/item_custom_properties/show.html.erb +21 -0
  30. data/app/views/items/_form.html.erb +13 -0
  31. data/app/views/items/show.html.erb +6 -0
  32. data/app/views/manifestation_custom_properties/_form.html.erb +32 -0
  33. data/app/views/manifestation_custom_properties/edit.html.erb +6 -0
  34. data/app/views/manifestation_custom_properties/index.html.erb +36 -0
  35. data/app/views/manifestation_custom_properties/new.html.erb +5 -0
  36. data/app/views/manifestation_custom_properties/show.html.erb +21 -0
  37. data/app/views/manifestations/_form.html.erb +13 -0
  38. data/app/views/manifestations/_show_detail_librarian.html.erb +8 -0
  39. data/app/views/picture_files/edit.html.erb +4 -0
  40. data/config/locales/translation_en.yml +20 -8
  41. data/config/locales/translation_ja.yml +20 -8
  42. data/config/routes.rb +2 -0
  43. data/db/migrate/20200425072340_create_manifestation_custom_properties.rb +12 -0
  44. data/db/migrate/20200425072349_create_item_custom_properties.rb +12 -0
  45. data/db/migrate/20200425074758_create_manifestation_custom_values.rb +12 -0
  46. data/db/migrate/20200425074822_create_item_custom_values.rb +12 -0
  47. data/lib/enju_biblio/version.rb +1 -1
  48. data/spec/cassette_library/ResourceImportFile/when_its_mode_is_create_/when_it_is_written_in_utf-8/should_import_custom_values.yml +121 -0
  49. data/spec/cassette_library/resource_import_results/index_txt_ruby/renders_a_list_of_resource_import_results.yml +121 -0
  50. data/spec/controllers/content_types_controller_spec.rb +1 -1
  51. data/spec/controllers/items_controller_spec.rb +22 -0
  52. data/spec/controllers/manifestations_controller_spec.rb +22 -0
  53. data/spec/dummy/db/schema.rb +43 -21
  54. data/spec/factories/item_custom_property.rb +6 -0
  55. data/spec/factories/item_custom_value.rb +6 -0
  56. data/spec/factories/manifestation_custom_property.rb +6 -0
  57. data/spec/factories/manifestation_custom_value.rb +6 -0
  58. data/spec/fixtures/item_custom_properties.yml +24 -0
  59. data/spec/fixtures/library_groups.yml +0 -2
  60. data/spec/fixtures/manifestation_custom_properties.yml +24 -0
  61. data/spec/models/item_custom_property_spec.rb +18 -0
  62. data/spec/models/item_custom_value_spec.rb +17 -0
  63. data/spec/models/manifestation_custom_property_spec.rb +18 -0
  64. data/spec/models/manifestation_custom_value_spec.rb +17 -0
  65. data/spec/models/manifestation_spec.rb +15 -0
  66. data/spec/models/resource_import_file_spec.rb +38 -12
  67. data/spec/requests/item_custom_properties_spec.rb +129 -0
  68. data/spec/requests/manifestation_custom_properties_spec.rb +129 -0
  69. data/spec/routing/item_custom_properties_routing_spec.rb +38 -0
  70. data/spec/routing/manifestation_custom_properties_routing_spec.rb +38 -0
  71. data/spec/system/items_spec.rb +12 -0
  72. data/spec/system/manifestations_spec.rb +12 -0
  73. data/spec/views/item_custom_properties/edit.html.erb_spec.rb +21 -0
  74. data/spec/views/item_custom_properties/index.html.erb_spec.rb +24 -0
  75. data/spec/views/item_custom_properties/new.html.erb_spec.rb +21 -0
  76. data/spec/views/item_custom_properties/show.html.erb_spec.rb +16 -0
  77. data/spec/views/manifestation_custom_properties/edit.html.erb_spec.rb +21 -0
  78. data/spec/views/manifestation_custom_properties/index.html.erb_spec.rb +24 -0
  79. data/spec/views/manifestation_custom_properties/new.html.erb_spec.rb +21 -0
  80. data/spec/views/manifestation_custom_properties/show.html.erb_spec.rb +16 -0
  81. data/spec/views/resource_import_results/index.txt.ruby_spec.rb +4 -4
  82. metadata +569 -497
  83. data/db/migrate/20200322053443_add_default_custom_label_to_library_group.rb +0 -6
  84. data/db/migrate/20200322083313_create_custom_labels.rb +0 -10
  85. data/db/migrate/20200322083458_create_custom_properties.rb +0 -12
@@ -0,0 +1,121 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://iss.ndl.go.jp/api/opensearch?cnt=10&dpid=iss-ndl-opac&idx=1&isbn=9784798002064&mediatype=1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Sun, 19 Apr 2020 10:32:19 GMT
23
+ Etag:
24
+ - '"b89075dfb9211a6e7a4cb5253a1ba52e"'
25
+ X-Ua-Compatible:
26
+ - IE=Edge,chrome=1
27
+ Cache-Control:
28
+ - max-age=0, private, must-revalidate
29
+ X-Runtime:
30
+ - '0.063600'
31
+ Content-Length:
32
+ - '4838'
33
+ Status:
34
+ - '200'
35
+ Content-Type:
36
+ - application/xml; charset=utf-8
37
+ Set-Cookie:
38
+ - HTTP_Z308_KEY_DATA_01=; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970
39
+ 00:00:00 GMT
40
+ - ROUTEID=.ps25; path=/
41
+ - TS0162cc8a=011338590a5921d481b30b51d93e7516be497a46685921d3fdd85f3062c48ca616ddbd46fda09749dc020d5841d8dc7e79f6d75cfb98d5c433dc43ebc3be78e2c55eef63751afd11da82b6399494a3e67133e37f53;
42
+ path=/; domain=.ndl.go.jp
43
+ - TS01f3cfdf=011338590a76aba2f26c44c1693b51877c129086a78aba5ef38bce5abd5921f3f7d9ebb16a2f701b35da4b27163ee5bf6b45c8d55eac5238b0a5b004d9be97fe7118c69718000869d7a56f638de53465787bc49b2baa92f9ea6be11b8ca3ca39df2122cdd5;
44
+ Path=/
45
+ - _front_session_id=4c19d7437b10f4ff999b0878afac0305;Secure; path=/; expires=Sun,
46
+ 19-Apr-2020 11:32:19 GMT; HttpOnly
47
+ - cookieId=;secure; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970 00:00:00
48
+ GMT
49
+ - ndl.go.jp=rd2o00000000000000000000ffff0a024f75o80; path=/
50
+ - serverid=1103; path=/
51
+ - sessionId=; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
52
+ X-Content-Type-Options:
53
+ - nosniff
54
+ X-Frame-Options:
55
+ - SAMEORIGIN
56
+ body:
57
+ encoding: ASCII-8BIT
58
+ string: !binary |-
59
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJzcyB2ZXJzaW9uPSIyLjAiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpkY3Rlcm1zPSJodHRwOi8vcHVybC5vcmcvZGMvdGVybXMvIiB4bWxuczpyZGZzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIiB4bWxuczpkY21pdHlwZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLyIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6ZGNuZGw9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvIiB4bWxuczpvcGVuU2VhcmNoPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNocnNzLzEuMC8iPgogIDxjaGFubmVsPgogICAgPHRpdGxlPjEgOTc4NDc5ODAwMjA2NCBpc3MtbmRsLW9wYWMgLSDlm73nq4vlm73kvJrlm7Pmm7jppKjjgrXjg7zjg4EgT3BlblNlYXJjaDwvdGl0bGU+CiAgICA8bGluaz5odHRwczovL2lzcy5uZGwuZ28uanAvYXBpL29wZW5zZWFyY2g/bWVkaWF0eXBlPTEmYW1wO2lkeD0xJmFtcDtpc2JuPTk3ODQ3OTgwMDIwNjQmYW1wO2RwaWQ9aXNzLW5kbC1vcGFjJmFtcDtjbnQ9MTA8L2xpbms+CiAgICA8ZGVzY3JpcHRpb24+U2VhcmNoIHJlc3VsdHMgZm9yIG1lZGlhdHlwZT0xIGlzYm49OTc4NDc5ODAwMjA2NCBjbnQ9MTAgZHBpZD1pc3MtbmRsLW9wYWMgPC9kZXNjcmlwdGlvbj4KICAgIDxsYW5ndWFnZT5qYTwvbGFuZ3VhZ2U+CiAgICA8b3BlblNlYXJjaDp0b3RhbFJlc3VsdHM+MTwvb3BlblNlYXJjaDp0b3RhbFJlc3VsdHM+CiAgICA8b3BlblNlYXJjaDpzdGFydEluZGV4PjE8L29wZW5TZWFyY2g6c3RhcnRJbmRleD4KICAgIDxvcGVuU2VhcmNoOml0ZW1zUGVyUGFnZT4xMDwvb3BlblNlYXJjaDppdGVtc1BlclBhZ2U+CiAgICA8aXRlbT4KICAgICAgPHRpdGxlPuOCiOOBj+OCj+OBi+OCi+acgOaWsFdlYuOCteODvOODk+OCueaKgOihk+OBruWfuuacrOOBqOS7lee1hOOBvyA6IOaomea6lldlYuOCt+OCueODhuODoOaKgOihk+OBqGXjgrPjg57jg7zjgrnln7rnm6TmioDooZPlhaXploA8L3RpdGxlPgogICAgICA8bGluaz5odHRwczovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMi1JMDAwMDAzMDQ2NTQ2LTAwPC9saW5rPgo8ZGVzY3JpcHRpb24+CjwhW0NEQVRBWzxwPuengOWSjOOCt+OCueODhuODoCw0Nzk4MDAyMDYyPC9wPgo8dWw+PGxpPuOCv+OCpOODiOODq++8miDjgojjgY/jgo/jgYvjgovmnIDmlrBXZWLjgrXjg7zjg5PjgrnmioDooZPjga7ln7rmnKzjgajku5XntYTjgb8gOiDmqJnmupZXZWLjgrfjgrnjg4bjg6DmioDooZPjgahl44Kz44Oe44O844K55Z+655uk5oqA6KGT5YWl6ZaAPC9saT4KPGxpPuOCv+OCpOODiOODq++8iOiqreOBv++8ie+8miDjg6jjgq8g44Ov44Kr44OrIOOCteOCpOOCt+ODsyBXZWIg44K144O844OT44K5IOOCruOCuOODpeODhCDjg44g44Kt44Ob44OzIOODiCDjgrfjgq/jg58gOiDjg5Ljg6fjgqbjgrjjg6Xjg7MgV2ViIOOCt+OCueODhuODoCDjgq7jgrjjg6Xjg4Qg44OIIGXjgrPjg57jg7zjgrkg44Kt44OQ44OzIOOCruOCuOODpeODhCDjg4vjg6Xjgqbjg6Ljg7M8L2xpPgo8bGk+6LKs5Lu76KGo56S677yaIOWwj+agl+S4gOWkqywg5pep5bed6IGW5Y+4IOWFseiRlyw8L2xpPgo8bGk+44K344Oq44O844K65ZCN77yaIOWbs+ino+WFpemWgDwvbGk+CjxsaT7jgrfjg6rjg7zjgrrlkI3vvIjoqq3jgb/vvInvvJog44K644Kr44KkIOODi+ODpeOCpuODouODszwvbGk+CjxsaT5OREMoOSnvvJogNTQ3LjQ4MzwvbGk+CjwvdWw+XV0+CjwvZGVzY3JpcHRpb24+CiAgICAgIDxhdXRob3I+5bCP5qCX5LiA5aSrLCDml6nlt53ogZblj7gg5YWx6JGXLOWwj+aglywg5LiA5aSrLCAxOTUwLSzml6nlt50sIOiBluWPuCwgMTk2NS0sPC9hdXRob3I+CiAgICAgIDxjYXRlZ29yeT7mnKw8L2NhdGVnb3J5PgogICAgICA8Z3VpZCBpc1Blcm1hTGluaz0idHJ1ZSI+aHR0cHM6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDItSTAwMDAwMzA0NjU0Ni0wMDwvZ3VpZD4KICAgICAgPHB1YkRhdGU+RnJpLCAxMCBTZXAgMjAwNCAwOTowMDowMCArMDkwMDwvcHViRGF0ZT4KICAgICAgPGRjOnRpdGxlPuOCiOOBj+OCj+OBi+OCi+acgOaWsFdlYuOCteODvOODk+OCueaKgOihk+OBruWfuuacrOOBqOS7lee1hOOBvyA6IOaomea6lldlYuOCt+OCueODhuODoOaKgOihk+OBqGXjgrPjg57jg7zjgrnln7rnm6TmioDooZPlhaXploA8L2RjOnRpdGxlPgogICAgICA8ZGNuZGw6dGl0bGVUcmFuc2NyaXB0aW9uPuODqOOCryDjg6/jgqvjg6sg44K144Kk44K344OzIFdlYiDjgrXjg7zjg5Pjgrkg44Ku44K444Ol44OEIOODjiDjgq3jg5vjg7Mg44OIIOOCt+OCr+ODnyA6IOODkuODp+OCpuOCuOODpeODsyBXZWIg44K344K544OG44OgIOOCruOCuOODpeODhCDjg4ggZeOCs+ODnuODvOOCuSDjgq3jg5Djg7Mg44Ku44K444Ol44OEIOODi+ODpeOCpuODouODszwvZGNuZGw6dGl0bGVUcmFuc2NyaXB0aW9uPgogICAgICA8ZGM6Y3JlYXRvcj7lsI/moJcsIOS4gOWkqywgMTk1MC08L2RjOmNyZWF0b3I+CiAgICAgIDxkYzpjcmVhdG9yPuaXqeW3nSwg6IGW5Y+4LCAxOTY1LTwvZGM6Y3JlYXRvcj4KICAgICAgPGRjbmRsOmNyZWF0b3JUcmFuc2NyaXB0aW9uPuOCquOCsOODqiwg44Kr44K644KqPC9kY25kbDpjcmVhdG9yVHJhbnNjcmlwdGlvbj4KICAgICAgPGRjbmRsOmNyZWF0b3JUcmFuc2NyaXB0aW9uPuODj+ODpOOCq+ODrywg44K744Kk44K4PC9kY25kbDpjcmVhdG9yVHJhbnNjcmlwdGlvbj4KICAgICAgPGRjbmRsOnNlcmllc1RpdGxlPuWbs+ino+WFpemWgDwvZGNuZGw6c2VyaWVzVGl0bGU+CiAgICAgIDxkY25kbDpzZXJpZXNUaXRsZVRyYW5zY3JpcHRpb24+44K644Kr44KkIOODi+ODpeOCpuODouODszwvZGNuZGw6c2VyaWVzVGl0bGVUcmFuc2NyaXB0aW9uPgogICAgICA8ZGM6cHVibGlzaGVyPuengOWSjOOCt+OCueODhuODoDwvZGM6cHVibGlzaGVyPgogICAgICA8ZGN0ZXJtczppc3N1ZWQgeHNpOnR5cGU9ImRjdGVybXM6VzNDRFRGIj4yMDAxPC9kY3Rlcm1zOmlzc3VlZD4KICAgICAgPGRjbmRsOnByaWNlPjE4MDDlhoY8L2RjbmRsOnByaWNlPgogICAgICA8ZGM6ZXh0ZW50PjI0N3AgOyAyMWNtPC9kYzpleHRlbnQ+CiAgICAgIDxkYzppZGVudGlmaWVyIHhzaTp0eXBlPSJkY25kbDpJU0JOIj40Nzk4MDAyMDYyPC9kYzppZGVudGlmaWVyPgogICAgICA8ZGM6aWRlbnRpZmllciB4c2k6dHlwZT0iZGNuZGw6TkRMQmliSUQiPjAwMDAwMzA0NjU0NjwvZGM6aWRlbnRpZmllcj4KICAgICAgPGRjOmlkZW50aWZpZXIgeHNpOnR5cGU9ImRjbmRsOkpQTk8iPjIwMjIyODE4PC9kYzppZGVudGlmaWVyPgogICAgICA8ZGM6c3ViamVjdD7jgqTjg7Pjgr/jg7zjg43jg4Pjg4g8L2RjOnN1YmplY3Q+CiAgICAgIDxkYzpzdWJqZWN0IHhzaTp0eXBlPSJkY25kbDpORExDIj5ORDYzMzwvZGM6c3ViamVjdD4KICAgICAgPGRjOnN1YmplY3QgeHNpOnR5cGU9ImRjbmRsOk5EQzkiPjU0Ny40ODM8L2RjOnN1YmplY3Q+CiAgICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwOi8vaWQubmRsLmdvLmpwL2JpYi8wMDAwMDMwNDY1NDYiLz4KICAgICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHA6Ly93ZWIub21sLmNpdHkub3Nha2EubGcuanAvd2Vib3BhY19pX2phLzAwMTAxOTY3NzkiLz4KICAgICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHBzOi8vd3d3LmxpYnJhcnkucHJlZi5vc2FrYS5qcC9saWNzeHAtb3BhYy9XT3BhY01zZ05ld0xpc3RUb1RpZlRpbERldGFpbEFjdGlvbi5kbz90aWxjb2Q9MTAwMDAwMDE3NzY3NTEiLz4KICAgICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHA6Ly93ZWJzdi5haWNoaS1wcmVmLWxpYnJhcnkuanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTE2MDI0NTg1NSIvPgogICAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cDovL29wYWMxLmxpYnJhcnkucHJlZi5taWUubGcuanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTEwMTg3MDkxMyIvPgogICAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cDovL3d3dy5saWJyYXJ5LnByZWYuZ2lmdS5sZy5qcC93aW5qL29wYWMvc3dpdGNoLWRldGFpbC1pY2NhcC5kbz9iaWJpZD0xMTAwMDM3MTk5Ii8+CiAgICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwczovL2NhdGFsb2cubGlicmFyeS5tZXRyby50b2t5by5qcC93aW5qL29wYWMvc3dpdGNoLWRldGFpbC1pY2NhcC5kbz9iaWJpZD0xMTA1NDkzOTE1Ii8+CiAgICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwczovL3d3dy5saWItc2FrYWkuanAvbGljc3hwLW9wYWMvV09wYWNNc2dOZXdMaXN0VG9UaWZUaWxEZXRhaWxBY3Rpb24uZG8/dGlsY29kPTEwMDAwMDE0NDczNjkiLz4KICAgICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHBzOi8vYWxpc2xpYm9wYWMudG9rdXNoaW1hLWVjLmVkLmpwL3dpbmovb3BhYy9zd2l0Y2gtZGV0YWlsLWljY2FwLmRvP2JpYmlkPTExMDExMjMxNjciLz4KICAgICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHBzOi8vd3d3Mi50b3Nob2thbi5jaXR5LnNoaXp1b2thLmpwL3dpbmovb3BhYy9zd2l0Y2gtZGV0YWlsLWljY2FwLmRvP2JpYmlkPTExMDAxNzA1ODgiLz4KICAgIDwvaXRlbT4KICA8L2NoYW5uZWw+CjwvcnNzPgo=
60
+ http_version: null
61
+ recorded_at: Sun, 19 Apr 2020 10:32:19 GMT
62
+ - request:
63
+ method: get
64
+ uri: https://iss.ndl.go.jp/books/R100000002-I000003046546-00.rdf
65
+ body:
66
+ encoding: US-ASCII
67
+ string: ''
68
+ headers:
69
+ User-Agent:
70
+ - Faraday v1.0.1
71
+ Accept-Encoding:
72
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
73
+ Accept:
74
+ - "*/*"
75
+ response:
76
+ status:
77
+ code: 200
78
+ message: OK
79
+ headers:
80
+ Date:
81
+ - Sun, 19 Apr 2020 10:32:19 GMT
82
+ Etag:
83
+ - '"00fa364fc2cde52aa9faeaef2d714432"'
84
+ X-Runtime:
85
+ - '0.330368'
86
+ X-Ua-Compatible:
87
+ - IE=Edge,chrome=1
88
+ Cache-Control:
89
+ - max-age=0, private, must-revalidate
90
+ Content-Length:
91
+ - '14593'
92
+ Status:
93
+ - '200'
94
+ Content-Type:
95
+ - application/rdf+xml; charset=utf-8
96
+ Set-Cookie:
97
+ - HTTP_Z308_KEY_DATA_01=; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970
98
+ 00:00:00 GMT
99
+ - ROUTEID=.ps22; path=/
100
+ - TS0162cc8a=011338590a293b91206bc0790b3e4d5ff31ba446fb66273ea7bdbb6c712817c80065e4ac37751030723a973fc2295ddb523dae60c41b8c247b6c76e0a7cb3f7963a5c8e87b41692bfea1d3f86cafbe7f1ee6526f08;
101
+ path=/; domain=.ndl.go.jp
102
+ - TS01f3cfdf=011338590a5f24508108c5cdd5217f439f806e073f9e7d0b27d892a0e64265f53acd9492ec1686d58bc396850fb984f9ff6977aeb279f758582ce45123af235f5254ba9970120acd9bb3a7531f68e16843548645c68d3f6b3dfea94a4279e71663029f37d5;
103
+ Path=/
104
+ - _front_session_id=e910a3ecad4e9819c49a65a54fc9b631;Secure; path=/; expires=Sun,
105
+ 19-Apr-2020 11:32:19 GMT; HttpOnly
106
+ - cookieId=;secure; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970 00:00:00
107
+ GMT
108
+ - ndl.go.jp=rd2o00000000000000000000ffff0a024f76o80; path=/
109
+ - serverid=1103; path=/
110
+ - sessionId=; domain=.ndl.go.jp; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
111
+ X-Content-Type-Options:
112
+ - nosniff
113
+ X-Frame-Options:
114
+ - SAMEORIGIN
115
+ body:
116
+ encoding: ASCII-8BIT
117
+ string: !binary |-
118
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJkZjpSREYgeG1sbnM6ZGNuZGw9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOm93bD0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNy9vd2wjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjdGVybXM9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8iIHhtbG5zOmZvYWY9Imh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvIj4KICA8ZGNuZGw6QmliQWRtaW5SZXNvdXJjZSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDItSTAwMDAwMzA0NjU0Ni0wMCI+CiAgICA8ZGNuZGw6Y2F0YWxvZ2luZ1N0YXR1cz5DNzwvZGNuZGw6Y2F0YWxvZ2luZ1N0YXR1cz4KICAgIDxkY25kbDpiaWJSZWNvcmRDYXRlZ29yeT5SMTAwMDAwMDAyPC9kY25kbDpiaWJSZWNvcmRDYXRlZ29yeT4KICAgIDxkY25kbDpyZWNvcmQgcmRmOnJlc291cmNlPSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAyLUkwMDAwMDMwNDY1NDYtMDAjbWF0ZXJpYWwiLz4KICA8L2RjbmRsOkJpYkFkbWluUmVzb3VyY2U+CiAgPGRjbmRsOkJpYlJlc291cmNlIHJkZjphYm91dD0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMi1JMDAwMDAzMDQ2NTQ2LTAwI21hdGVyaWFsIj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL0pQTk8iPjIwMjIyODE4PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9JU0JOIj40LTc5ODAtMDIwNi0yPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lkLm5kbC5nby5qcC9qcG5vLzIwMjIyODE4Ii8+CiAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lzcy5uZGwuZ28uanAvaXNibi80Nzk4MDAyMDYyIi8+CiAgICA8ZGN0ZXJtczp0aXRsZT7jgojjgY/jgo/jgYvjgovmnIDmlrBXZWLjgrXjg7zjg5PjgrnmioDooZPjga7ln7rmnKzjgajku5XntYTjgb8gOiDmqJnmupZXZWLjgrfjgrnjg4bjg6DmioDooZPjgahl44Kz44Oe44O844K55Z+655uk5oqA6KGT5YWl6ZaAPC9kY3Rlcm1zOnRpdGxlPgogICAgPGRjOnRpdGxlPgogICAgICA8cmRmOkRlc2NyaXB0aW9uPgogICAgICAgIDxyZGY6dmFsdWU+44KI44GP44KP44GL44KL5pyA5pawV2Vi44K144O844OT44K55oqA6KGT44Gu5Z+65pys44Go5LuV57WE44G/IDog5qiZ5rqWV2Vi44K344K544OG44Og5oqA6KGT44GoZeOCs+ODnuODvOOCueWfuuebpOaKgOihk+WFpemWgDwvcmRmOnZhbHVlPgogICAgICAgIDxkY25kbDp0cmFuc2NyaXB0aW9uPuODqOOCryDjg6/jgqvjg6sg44K144Kk44K344OzIFdlYiDjgrXjg7zjg5Pjgrkg44Ku44K444Ol44OEIOODjiDjgq3jg5vjg7Mg44OIIOOCt+OCr+ODnyA6IOODkuODp+OCpuOCuOODpeODsyBXZWIg44K344K544OG44OgIOOCruOCuOODpeODhCDjg4ggZeOCs+ODnuODvOOCuSDjgq3jg5Djg7Mg44Ku44K444Ol44OEIOODi+ODpeOCpuODouODszwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICA8L2RjOnRpdGxlPgogICAgPGRjbmRsOnNlcmllc1RpdGxlPgogICAgICA8cmRmOkRlc2NyaXB0aW9uPgogICAgICAgIDxyZGY6dmFsdWU+5Zuz6Kej5YWl6ZaAPC9yZGY6dmFsdWU+CiAgICAgICAgPGRjbmRsOnRyYW5zY3JpcHRpb24+44K644Kr44KkIOODi+ODpeOCpuODouODszwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICA8L2RjbmRsOnNlcmllc1RpdGxlPgogICAgPGRjdGVybXM6Y3JlYXRvcj4KICAgICAgPGZvYWY6QWdlbnQgcmRmOmFib3V0PSJodHRwOi8vaWQubmRsLmdvLmpwL2F1dGgvZW50aXR5LzAwNzMzNTM4Ij4KICAgICAgICA8Zm9hZjpuYW1lPuWwj+aglywg5LiA5aSrLCAxOTUwLTwvZm9hZjpuYW1lPgogICAgICAgIDxkY25kbDp0cmFuc2NyaXB0aW9uPuOCquOCsOODqiwg44Kr44K644KqPC9kY25kbDp0cmFuc2NyaXB0aW9uPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjdGVybXM6Y3JlYXRvcj4KICAgIDxkY3Rlcm1zOmNyZWF0b3I+CiAgICAgIDxmb2FmOkFnZW50IHJkZjphYm91dD0iaHR0cDovL2lkLm5kbC5nby5qcC9hdXRoL2VudGl0eS8wMDUzODIwNCI+CiAgICAgICAgPGZvYWY6bmFtZT7ml6nlt50sIOiBluWPuCwgMTk2NS08L2ZvYWY6bmFtZT4KICAgICAgICA8ZGNuZGw6dHJhbnNjcmlwdGlvbj7jg4/jg6Tjgqvjg68sIOOCu+OCpOOCuDwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgPC9mb2FmOkFnZW50PgogICAgPC9kY3Rlcm1zOmNyZWF0b3I+CiAgICA8ZGM6Y3JlYXRvcj7lsI/moJfkuIDlpKssIOaXqeW3neiBluWPuCDlhbHokZc8L2RjOmNyZWF0b3I+CiAgICA8ZGN0ZXJtczpwdWJsaXNoZXI+CiAgICAgIDxmb2FmOkFnZW50PgogICAgICAgIDxmb2FmOm5hbWU+56eA5ZKM44K344K544OG44OgPC9mb2FmOm5hbWU+CiAgICAgICAgPGRjbmRsOmxvY2F0aW9uPuadseS6rDwvZGNuZGw6bG9jYXRpb24+CiAgICAgIDwvZm9hZjpBZ2VudD4KICAgIDwvZGN0ZXJtczpwdWJsaXNoZXI+CiAgICA8ZGNuZGw6cHVibGljYXRpb25QbGFjZSByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy9JU08zMTY2Ij5KUDwvZGNuZGw6cHVibGljYXRpb25QbGFjZT4KICAgIDxkY3Rlcm1zOmRhdGU+MjAwMS4xMjwvZGN0ZXJtczpkYXRlPgogICAgPGRjdGVybXM6aXNzdWVkIHJkZjpkYXRhdHlwZT0iaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zL1czQ0RURiI+MjAwMTwvZGN0ZXJtczppc3N1ZWQ+CiAgICA8ZGN0ZXJtczpzdWJqZWN0PgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iaHR0cDovL2lkLm5kbC5nby5qcC9hdXRoL25kbHNoLzAwODQxMDI0Ij4KICAgICAgICA8cmRmOnZhbHVlPuOCpOODs+OCv+ODvOODjeODg+ODiDwvcmRmOnZhbHVlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgIDwvZGN0ZXJtczpzdWJqZWN0PgogICAgPGRjdGVybXM6c3ViamVjdCByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pZC5uZGwuZ28uanAvY2xhc3MvbmRsYy9ORDYzMyIvPgogICAgPGRjdGVybXM6c3ViamVjdCByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pZC5uZGwuZ28uanAvY2xhc3MvbmRjOS81NDcuNDgzIi8+CiAgICA8ZGN0ZXJtczpsYW5ndWFnZSByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy9JU082MzktMiI+anBuPC9kY3Rlcm1zOmxhbmd1YWdlPgogICAgPGRjdGVybXM6ZXh0ZW50PjI0N3AgOyAyMWNtPC9kY3Rlcm1zOmV4dGVudD4KICAgIDxkY25kbDpwcmljZT4xODAw5YaGPC9kY25kbDpwcmljZT4KICAgIDxkY3Rlcm1zOmF1ZGllbmNlPuS4gOiIrDwvZGN0ZXJtczphdWRpZW5jZT4KICAgIDxkY25kbDptYXRlcmlhbFR5cGUgcmRmczpsYWJlbD0i5Zuz5pu4IiByZGY6cmVzb3VyY2U9Imh0dHA6Ly9uZGwuZ28uanAvbmRsdHlwZS9Cb29rIi8+CiAgICA8ZGN0ZXJtczphY2Nlc3NSaWdodHM+UzAxUDk5VTk5PC9kY3Rlcm1zOmFjY2Vzc1JpZ2h0cz4KICA8L2RjbmRsOkJpYlJlc291cmNlPgogIDxkY25kbDpCaWJSZXNvdXJjZSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDItSTAwMDAwMzA0NjU0Ni0wMCNtYXRlcmlhbCI+CiAgICA8ZGNuZGw6cmVjb3JkIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMi1JMDAwMDAzMDQ2NTQ2LTAwI2l0ZW0iLz4KICAgIDxkY25kbDpyZWNvcmQgcmRmOnJlc291cmNlPSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNTI4OTM5ODQtMDAjaXRlbSIvPgogICAgPGRjbmRsOnJlY29yZCByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA1NjQzMTA0NC0wMCNpdGVtIi8+CiAgICA8ZGNuZGw6cmVjb3JkIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDU5NjIwOTUyLTAwI2l0ZW0iLz4KICAgIDxkY25kbDpyZWNvcmQgcmRmOnJlc291cmNlPSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNTk4Mjc2OTYtMDAjaXRlbSIvPgogICAgPGRjbmRsOnJlY29yZCByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA2NDYxMzQ3NC0wMCNpdGVtIi8+CiAgICA8ZGNuZGw6cmVjb3JkIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDcxMjM1NTI3LTAwI2l0ZW0iLz4KICAgIDxkY25kbDpyZWNvcmQgcmRmOnJlc291cmNlPSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNzg2MzU0OTMtMDAjaXRlbSIvPgogICAgPGRjbmRsOnJlY29yZCByZGY6cmVzb3VyY2U9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA4NDY3ODYwNy0wMCNpdGVtIi8+CiAgICA8ZGNuZGw6cmVjb3JkIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDkwMzcxMzIxLTAwI2l0ZW0iLz4KICAgIDxkY25kbDpyZWNvcmQgcmRmOnJlc291cmNlPSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwOTMwNjk0NjEtMDAjaXRlbSIvPgogIDwvZGNuZGw6QmliUmVzb3VyY2U+CiAgPGRjbmRsOkl0ZW0gcmRmOmFib3V0PSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAyLUkwMDAwMDMwNDY1NDYtMDAjaXRlbSI+CiAgICA8ZGNuZGw6aG9sZGluZ0FnZW50PgogICAgICA8Zm9hZjpBZ2VudD4KICAgICAgICA8Zm9hZjpuYW1lPuWbveeri+WbveS8muWbs+abuOmkqDwvZm9hZjpuYW1lPgogICAgICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL05ETExpYkNvZGUiPjAwMDA8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgICAgPC9mb2FmOkFnZW50PgogICAgPC9kY25kbDpob2xkaW5nQWdlbnQ+CiAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cDovL2lkLm5kbC5nby5qcC9iaWIvMDAwMDAzMDQ2NTQ2Ii8+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9ORExCaWJJRCI+MDAwMDAzMDQ2NTQ2PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj5ORDYzMy1HMjMxMjwvZGNuZGw6Y2FsbE51bWJlcj4KICA8L2RjbmRsOkl0ZW0+CiAgPGRjbmRsOkl0ZW0gcmRmOmFib3V0PSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNTI4OTM5ODQtMDAjaXRlbSI+CiAgICA8ZGNuZGw6aG9sZGluZ0FnZW50PgogICAgICA8Zm9hZjpBZ2VudD4KICAgICAgICA8Zm9hZjpuYW1lPuWkp+mYquW4gueri+Wbs+abuOmkqDwvZm9hZjpuYW1lPgogICAgICAgIDxkY25kbDp0cmFuc2NyaXB0aW9uPuOCquOCquOCteOCq+OCt+ODquODhOODiOOCt+ODp+OCq+ODszwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9ORExMaWJDb2RlIj4yNzIxPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICAgIDwvZm9hZjpBZ2VudD4KICAgIDwvZGNuZGw6aG9sZGluZ0FnZW50PgogICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHA6Ly93ZWIub21sLmNpdHkub3Nha2EubGcuanAvd2Vib3BhY19pX2phLzAwMTAxOTY3NzkiLz4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdUJpYklEIj4wMDEwMTk2Nzc5PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VTdWJJRCI+MDAxMDE5Njc3OTwvZGN0ZXJtczppZGVudGlmaWVyPgogIDwvZGNuZGw6SXRlbT4KICA8ZGNuZGw6SXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA1NjQzMTA0NC0wMCNpdGVtIj4KICAgIDxkY25kbDpob2xkaW5nQWdlbnQ+CiAgICAgIDxmb2FmOkFnZW50PgogICAgICAgIDxmb2FmOm5hbWU+5aSn6Ziq5bqc56uL5Lit5aSu5Zuz5pu46aSoPC9mb2FmOm5hbWU+CiAgICAgICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvTkRMTGliQ29kZSI+MjcxMTwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjbmRsOmhvbGRpbmdBZ2VudD4KICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwczovL3d3dy5saWJyYXJ5LnByZWYub3Nha2EuanAvbGljc3hwLW9wYWMvV09wYWNNc2dOZXdMaXN0VG9UaWZUaWxEZXRhaWxBY3Rpb24uZG8/dGlsY29kPTEwMDAwMDAxNzc2NzUxIi8+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VCaWJJRCI+MTAwMDAwMDE3NzY3NTE8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdVN1YklEIj4xMTE0Mzc4MTM0PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNC85ODJOLzwvZGNuZGw6Y2FsbE51bWJlcj4KICA8L2RjbmRsOkl0ZW0+CiAgPGRjbmRsOkl0ZW0gcmRmOmFib3V0PSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNTk2MjA5NTItMDAjaXRlbSI+CiAgICA8ZGNuZGw6aG9sZGluZ0FnZW50PgogICAgICA8Zm9hZjpBZ2VudD4KICAgICAgICA8Zm9hZjpuYW1lPuaEm+efpeecjOWbs+abuOmkqDwvZm9hZjpuYW1lPgogICAgICAgIDxkY25kbDp0cmFuc2NyaXB0aW9uPuOBguOBhOOBoeOBkeOCk+OBqOOBl+OCh+OBi+OCkzwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9ORExMaWJDb2RlIj4yMzExPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICAgIDwvZm9hZjpBZ2VudD4KICAgIDwvZGNuZGw6aG9sZGluZ0FnZW50PgogICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHA6Ly93ZWJzdi5haWNoaS1wcmVmLWxpYnJhcnkuanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTE2MDI0NTg1NSIvPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1QmliSUQiPjExNjAyNDU4NTU8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdVN1YklEIj4xMTA4MDY3NjI4PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNDgt77217724LTgwNjc2MjwvZGNuZGw6Y2FsbE51bWJlcj4KICAgIDxkY25kbDphdmFpbGFiaWxpdHk+6Zay5Y+v6LK45Y+v5Y2U5Y+vPC9kY25kbDphdmFpbGFiaWxpdHk+CiAgICA8ZGN0ZXJtczpkZXNjcmlwdGlvbj7miYDolLXloLTmiYAgOiDmm7jluqvvvK3vvKLvvJI8L2RjdGVybXM6ZGVzY3JpcHRpb24+CiAgPC9kY25kbDpJdGVtPgogIDxkY25kbDpJdGVtIHJkZjphYm91dD0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDU5ODI3Njk2LTAwI2l0ZW0iPgogICAgPGRjbmRsOmhvbGRpbmdBZ2VudD4KICAgICAgPGZvYWY6QWdlbnQ+CiAgICAgICAgPGZvYWY6bmFtZT7kuInph43nnIznq4vlm7Pmm7jppKg8L2ZvYWY6bmFtZT4KICAgICAgICA8ZGNuZGw6dHJhbnNjcmlwdGlvbj7jgb/jgYjjgZHjgpPjgorjgaTjgajjgZfjgofjgYvjgpM8L2RjbmRsOnRyYW5zY3JpcHRpb24+CiAgICAgICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvTkRMTGliQ29kZSI+MjQxMTwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjbmRsOmhvbGRpbmdBZ2VudD4KICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwOi8vb3BhYzEubGlicmFyeS5wcmVmLm1pZS5sZy5qcC93aW5qL29wYWMvc3dpdGNoLWRldGFpbC1pY2NhcC5kbz9iaWJpZD0xMTAxODcwOTEzIi8+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VCaWJJRCI+MTEwMTg3MDkxMzwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1U3ViSUQiPjExNTA1MzQyMzwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgPGRjbmRsOmNhbGxOdW1iZXI+NTQ3LjQt7721PC9kY25kbDpjYWxsTnVtYmVyPgogICAgPGRjbmRsOmF2YWlsYWJpbGl0eT7mjIHlh7rlj6/og708L2RjbmRsOmF2YWlsYWJpbGl0eT4KICAgIDxkY3Rlcm1zOmRlc2NyaXB0aW9uPuaJgOiUteWgtOaJgCA6IOmWieaetu+8iOS4gOiIrO+8iTwvZGN0ZXJtczpkZXNjcmlwdGlvbj4KICA8L2RjbmRsOkl0ZW0+CiAgPGRjbmRsOkl0ZW0gcmRmOmFib3V0PSJodHRwOi8vaXNzLm5kbC5nby5qcC9ib29rcy9SMTAwMDAwMDAxLUkwNjQ2MTM0NzQtMDAjaXRlbSI+CiAgICA8ZGNuZGw6aG9sZGluZ0FnZW50PgogICAgICA8Zm9hZjpBZ2VudD4KICAgICAgICA8Zm9hZjpuYW1lPuWykOmYnOecjOWbs+abuOmkqDwvZm9hZjpuYW1lPgogICAgICAgIDxkY25kbDp0cmFuc2NyaXB0aW9uPuOBjuOBteOBkeOCk+OBqOOBl+OCh+OBi+OCkzwvZGNuZGw6dHJhbnNjcmlwdGlvbj4KICAgICAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9ORExMaWJDb2RlIj4yMTExPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICAgIDwvZm9hZjpBZ2VudD4KICAgIDwvZGNuZGw6aG9sZGluZ0FnZW50PgogICAgPHJkZnM6c2VlQWxzbyByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cubGlicmFyeS5wcmVmLmdpZnUubGcuanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTEwMDAzNzE5OSIvPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1QmliSUQiPjExMDAwMzcxOTk8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdVN1YklEIj44MTMyMDE0ODcyPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNC3jgqo8L2RjbmRsOmNhbGxOdW1iZXI+CiAgICA8ZGNuZGw6YXZhaWxhYmlsaXR5PuaMgeWHuuWPr+iDvTwvZGNuZGw6YXZhaWxhYmlsaXR5PgogICAgPGRjdGVybXM6ZGVzY3JpcHRpb24+5omA6JS15aC05omAIDog77yZ54mI6ZaJ5p62PC9kY3Rlcm1zOmRlc2NyaXB0aW9uPgogIDwvZGNuZGw6SXRlbT4KICA8ZGNuZGw6SXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA3MTIzNTUyNy0wMCNpdGVtIj4KICAgIDxkY25kbDpob2xkaW5nQWdlbnQ+CiAgICAgIDxmb2FmOkFnZW50PgogICAgICAgIDxmb2FmOm5hbWU+5L2Q6LOA55yM56uL5Zuz5pu46aSoPC9mb2FmOm5hbWU+CiAgICAgICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvTkRMTGliQ29kZSI+NDExMTwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjbmRsOmhvbGRpbmdBZ2VudD4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdUJpYklEIj4xMTAwNDY1MDE0PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VTdWJJRCI+MTEzMzkxODkwPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj7vvJXvvJTvvJfvvI7vvJTvvI/vvK/vvJLvvJY8L2RjbmRsOmNhbGxOdW1iZXI+CiAgICA8ZGNuZGw6YXZhaWxhYmlsaXR5PuWIqeeUqOWPrzwvZGNuZGw6YXZhaWxhYmlsaXR5PgogICAgPGRjdGVybXM6ZGVzY3JpcHRpb24+6YWN572u5aC05omAIDog5paw6aSo5pu45bqr77yS5bGkPC9kY3Rlcm1zOmRlc2NyaXB0aW9uPgogIDwvZGNuZGw6SXRlbT4KICA8ZGNuZGw6SXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA3ODYzNTQ5My0wMCNpdGVtIj4KICAgIDxkY25kbDpob2xkaW5nQWdlbnQ+CiAgICAgIDxmb2FmOkFnZW50PgogICAgICAgIDxmb2FmOm5hbWU+5p2x5Lqs6YO956uL5aSa5pGp5Zuz5pu46aSoPC9mb2FmOm5hbWU+CiAgICAgICAgPGRjbmRsOnRyYW5zY3JpcHRpb24+44Go44GG44GN44KH44GG44Go44KK44Gk44Gf44G+44Go44GX44KH44GL44KTPC9kY25kbDp0cmFuc2NyaXB0aW9uPgogICAgICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL05ETExpYkNvZGUiPjEzMTM8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgICAgPC9mb2FmOkFnZW50PgogICAgPC9kY25kbDpob2xkaW5nQWdlbnQ+CiAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cHM6Ly9jYXRhbG9nLmxpYnJhcnkubWV0cm8udG9reW8uanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTEwNTQ5MzkxNSIvPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1QmliSUQiPjExMDU0OTM5MTU8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdVN1YklEIj41MDAzODMyMDAwPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNC01NDI1LTIwMDE8L2RjbmRsOmNhbGxOdW1iZXI+CiAgICA8ZGNuZGw6YXZhaWxhYmlsaXR5PumWsuWPry/lgIvlkKYv5Y2U5Y+vPC9kY25kbDphdmFpbGFiaWxpdHk+CiAgICA8ZGN0ZXJtczpkZXNjcmlwdGlvbj7miYDolLXloLTmiYAgOiBCMuabuOW6q008L2RjdGVybXM6ZGVzY3JpcHRpb24+CiAgPC9kY25kbDpJdGVtPgogIDxkY25kbDpJdGVtIHJkZjphYm91dD0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDg0Njc4NjA3LTAwI2l0ZW0iPgogICAgPGRjbmRsOmhvbGRpbmdBZ2VudD4KICAgICAgPGZvYWY6QWdlbnQ+CiAgICAgICAgPGZvYWY6bmFtZT7loLrluILnq4vkuK3lpK7lm7Pmm7jppKg8L2ZvYWY6bmFtZT4KICAgICAgICA8ZGNuZGw6dHJhbnNjcmlwdGlvbj7jgrXjgqvjgqTjgrfjg6rjg4Tjg4Hjg6Xjgqbjgqrjgqbjg4jjgrfjg6fjgqvjg7M8L2RjbmRsOnRyYW5zY3JpcHRpb24+CiAgICAgICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvTkRMTGliQ29kZSI+MjcyMjwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjbmRsOmhvbGRpbmdBZ2VudD4KICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwczovL3d3dy5saWItc2FrYWkuanAvbGljc3hwLW9wYWMvV09wYWNNc2dOZXdMaXN0VG9UaWZUaWxEZXRhaWxBY3Rpb24uZG8/dGlsY29kPTEwMDAwMDE0NDczNjkiLz4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdUJpYklEIj4xMDAwMDAxNDQ3MzY5PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VTdWJJRCI+MTEyNzM1Mjk1PC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNDgv7721Lzg8L2RjbmRsOmNhbGxOdW1iZXI+CiAgPC9kY25kbDpJdGVtPgogIDxkY25kbDpJdGVtIHJkZjphYm91dD0iaHR0cDovL2lzcy5uZGwuZ28uanAvYm9va3MvUjEwMDAwMDAwMS1JMDkwMzcxMzIxLTAwI2l0ZW0iPgogICAgPGRjbmRsOmhvbGRpbmdBZ2VudD4KICAgICAgPGZvYWY6QWdlbnQ+CiAgICAgICAgPGZvYWY6bmFtZT7lvrPls7bnnIznq4vlm7Pmm7jppKg8L2ZvYWY6bmFtZT4KICAgICAgICA8ZGNuZGw6dHJhbnNjcmlwdGlvbj7jgajjgY/jgZfjgb7jgZHjgpPjgorjgaTjgajjgZfjgofjgYvjgpM8L2RjbmRsOnRyYW5zY3JpcHRpb24+CiAgICAgICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvTkRMTGliQ29kZSI+MzYxMTwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgICA8L2ZvYWY6QWdlbnQ+CiAgICA8L2RjbmRsOmhvbGRpbmdBZ2VudD4KICAgIDxyZGZzOnNlZUFsc28gcmRmOnJlc291cmNlPSJodHRwczovL2FsaXNsaWJvcGFjLnRva3VzaGltYS1lYy5lZC5qcC93aW5qL29wYWMvc3dpdGNoLWRldGFpbC1pY2NhcC5kbz9iaWJpZD0xMTAxMTIzMTY3Ii8+CiAgICA8ZGN0ZXJtczppZGVudGlmaWVyIHJkZjpkYXRhdHlwZT0iaHR0cDovL25kbC5nby5qcC9kY25kbC90ZXJtcy9zb21va3VCaWJJRCI+MTEwMTEyMzE2NzwvZGN0ZXJtczppZGVudGlmaWVyPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1U3ViSUQiPjAwMTA3OTQyODUyPC9kY3Rlcm1zOmlkZW50aWZpZXI+CiAgICA8ZGNuZGw6Y2FsbE51bWJlcj41NDcuNC3vvbXvvbg8L2RjbmRsOmNhbGxOdW1iZXI+CiAgICA8ZGNuZGw6YXZhaWxhYmlsaXR5PuiyuOWHuuWPr+iDvTwvZGNuZGw6YXZhaWxhYmlsaXR5PgogICAgPGRjdGVybXM6ZGVzY3JpcHRpb24+5omA6JS15aC05omAIDog5LiA6Iis6LOH5paZ44Kz44O844OK44O8PC9kY3Rlcm1zOmRlc2NyaXB0aW9uPgogIDwvZGNuZGw6SXRlbT4KICA8ZGNuZGw6SXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly9pc3MubmRsLmdvLmpwL2Jvb2tzL1IxMDAwMDAwMDEtSTA5MzA2OTQ2MS0wMCNpdGVtIj4KICAgIDxkY25kbDpob2xkaW5nQWdlbnQ+CiAgICAgIDxmb2FmOkFnZW50PgogICAgICAgIDxmb2FmOm5hbWU+6Z2Z5bKh5biC56uL5Lit5aSu5Zuz5pu46aSoPC9mb2FmOm5hbWU+CiAgICAgICAgPGRjbmRsOnRyYW5zY3JpcHRpb24+44K344K644Kq44Kr44K344Oq44OE44OB44Ol44Km44Kq44Km44OI44K344On44Kr44OzPC9kY25kbDp0cmFuc2NyaXB0aW9uPgogICAgICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL05ETExpYkNvZGUiPjIyMjE8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgICAgPC9mb2FmOkFnZW50PgogICAgPC9kY25kbDpob2xkaW5nQWdlbnQ+CiAgICA8cmRmczpzZWVBbHNvIHJkZjpyZXNvdXJjZT0iaHR0cHM6Ly93d3cyLnRvc2hva2FuLmNpdHkuc2hpenVva2EuanAvd2luai9vcGFjL3N3aXRjaC1kZXRhaWwtaWNjYXAuZG8/YmliaWQ9MTEwMDE3MDU4OCIvPgogICAgPGRjdGVybXM6aWRlbnRpZmllciByZGY6ZGF0YXR5cGU9Imh0dHA6Ly9uZGwuZ28uanAvZGNuZGwvdGVybXMvc29tb2t1QmliSUQiPjExMDAxNzA1ODg8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY3Rlcm1zOmlkZW50aWZpZXIgcmRmOmRhdGF0eXBlPSJodHRwOi8vbmRsLmdvLmpwL2RjbmRsL3Rlcm1zL3NvbW9rdVN1YklEIj4xMjIzOTQwMTE8L2RjdGVybXM6aWRlbnRpZmllcj4KICAgIDxkY25kbDpjYWxsTnVtYmVyPjU0Ny40ODM8L2RjbmRsOmNhbGxOdW1iZXI+CiAgICA8ZGNuZGw6YXZhaWxhYmlsaXR5PuaMgeWHuuWPr+iDvTwvZGNuZGw6YXZhaWxhYmlsaXR5PgogICAgPGRjdGVybXM6ZGVzY3JpcHRpb24+5omA6JS15aC05omAIDog5pu45bqrPC9kY3Rlcm1zOmRlc2NyaXB0aW9uPgogIDwvZGNuZGw6SXRlbT4KPC9yZGY6UkRGPg==
119
+ http_version: null
120
+ recorded_at: Sun, 19 Apr 2020 10:32:19 GMT
121
+ recorded_with: VCR 5.1.0
@@ -33,7 +33,7 @@ describe ContentTypesController do
33
33
  it 'assigns all content_types as @content_types' do
34
34
  content_type = ContentType.create! valid_attributes
35
35
  get :index
36
- expect(assigns(:content_types)).to eq(ContentType.all)
36
+ expect(assigns(:content_types)).to eq(ContentType.order(:position))
37
37
  end
38
38
  end
39
39
 
@@ -307,6 +307,12 @@ describe ItemsController do
307
307
  post :create, params: { item: @attrs }
308
308
  expect(response).to redirect_to(item_url(assigns(:item)))
309
309
  end
310
+
311
+ it 'accepts custom values' do
312
+ post :create, params: { item: @attrs.merge(item_custom_values_attributes: Array.new(3){FactoryBot.attributes_for(:item_custom_value, item_custom_property_id: FactoryBot.create(:item_custom_property).id)}) }
313
+ expect(assigns(:item)).to be_valid
314
+ expect(assigns(:item).item_custom_values.count).to eq 3
315
+ end
310
316
  end
311
317
 
312
318
  describe 'with invalid params' do
@@ -423,6 +429,22 @@ describe ItemsController do
423
429
  expect(assigns(:item)).to eq(@item)
424
430
  expect(response).to redirect_to(@item)
425
431
  end
432
+
433
+ it 'accepts custom values' do
434
+ @item.item_custom_values << FactoryBot.build(:item_custom_value)
435
+ put :update, params: { id: @item.id, item: @attrs.merge(item_custom_values_attributes: [{id: @item.item_custom_values.first.id, value: 'test'}]) }
436
+ expect(assigns(:item)).to be_valid
437
+ expect(assigns(:item).item_custom_values.count).to eq 1
438
+ expect(assigns(:item).item_custom_values.first.value).to eq 'test'
439
+ end
440
+
441
+ it 'accepts custom values when the value is empty' do
442
+ @item.item_custom_values << FactoryBot.build(:item_custom_value)
443
+ put :update, params: { id: @item.id, item: @attrs.merge(item_custom_values_attributes: [{id: @item.item_custom_values.first.id, value: ''}]) }
444
+ expect(assigns(:item)).to be_valid
445
+ expect(assigns(:item).item_custom_values.count).to eq 1
446
+ expect(assigns(:item).item_custom_values.first.value).to eq ''
447
+ end
426
448
  end
427
449
 
428
450
  describe 'with invalid params' do
@@ -575,6 +575,12 @@ describe ManifestationsController do
575
575
  post :create, params: { manifestation: @attrs.merge(attachment: fixture_file_upload('/../../examples/resource_import_file_sample1.tsv', 'text/csv')) }
576
576
  expect(assigns(:manifestation)).to be_valid
577
577
  end
578
+
579
+ it 'accepts custom values' do
580
+ post :create, params: { manifestation: @attrs.merge(manifestation_custom_values_attributes: Array.new(3){FactoryBot.attributes_for(:manifestation_custom_value, manifestation_custom_property_id: FactoryBot.create(:manifestation_custom_property).id)}) }
581
+ expect(assigns(:manifestation)).to be_valid
582
+ expect(assigns(:manifestation).manifestation_custom_values.count).to eq 3
583
+ end
578
584
  end
579
585
 
580
586
  describe 'with invalid params' do
@@ -716,6 +722,22 @@ describe ManifestationsController do
716
722
  }
717
723
  expect(assigns(:manifestation)).to eq @manifestation
718
724
  end
725
+
726
+ it 'accepts custom values' do
727
+ @manifestation.manifestation_custom_values << FactoryBot.build(:manifestation_custom_value)
728
+ put :update, params: { id: @manifestation.id, manifestation: @attrs.merge(manifestation_custom_values_attributes: [{id: @manifestation.manifestation_custom_values.first.id, value: 'test'}]) }
729
+ expect(assigns(:manifestation)).to be_valid
730
+ expect(assigns(:manifestation).manifestation_custom_values.count).to eq 1
731
+ expect(assigns(:manifestation).manifestation_custom_values.first.value).to eq 'test'
732
+ end
733
+
734
+ it 'accepts custom values when the value is empty' do
735
+ @manifestation.manifestation_custom_values << FactoryBot.build(:manifestation_custom_value)
736
+ put :update, params: { id: @manifestation.id, manifestation: @attrs.merge(manifestation_custom_values_attributes: [{id: @manifestation.manifestation_custom_values.first.id, value: ''}]) }
737
+ expect(assigns(:manifestation)).to be_valid
738
+ expect(assigns(:manifestation).manifestation_custom_values.count).to eq 1
739
+ expect(assigns(:manifestation).manifestation_custom_values.first.value).to eq ''
740
+ end
719
741
  end
720
742
 
721
743
  describe 'with invalid params' do
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(version: 2020_03_22_083458) do
13
+ ActiveRecord::Schema.define(version: 2020_04_25_074822) do
14
14
 
15
15
  create_table "accepts", force: :cascade do |t|
16
16
  t.integer "basket_id"
@@ -433,24 +433,6 @@ ActiveRecord::Schema.define(version: 2020_03_22_083458) do
433
433
  t.index ["work_id"], name: "index_creates_on_work_id"
434
434
  end
435
435
 
436
- create_table "custom_labels", force: :cascade do |t|
437
- t.integer "library_group_id", null: false
438
- t.string "label"
439
- t.datetime "created_at", null: false
440
- t.datetime "updated_at", null: false
441
- t.index ["library_group_id"], name: "index_custom_labels_on_library_group_id"
442
- end
443
-
444
- create_table "custom_properties", force: :cascade do |t|
445
- t.integer "resource_id", null: false
446
- t.string "resource_type", null: false
447
- t.integer "custom_label_id", null: false
448
- t.text "value"
449
- t.datetime "created_at", null: false
450
- t.datetime "updated_at", null: false
451
- t.index ["custom_label_id"], name: "index_custom_properties_on_custom_label_id"
452
- end
453
-
454
436
  create_table "demands", force: :cascade do |t|
455
437
  t.integer "user_id"
456
438
  t.integer "item_id"
@@ -662,6 +644,27 @@ ActiveRecord::Schema.define(version: 2020_03_22_083458) do
662
644
  t.index ["user_id"], name: "index_inventory_files_on_user_id"
663
645
  end
664
646
 
647
+ create_table "item_custom_properties", force: :cascade do |t|
648
+ t.string "name", null: false
649
+ t.text "display_name", null: false
650
+ t.text "note"
651
+ t.integer "position", default: 1, null: false
652
+ t.datetime "created_at", null: false
653
+ t.datetime "updated_at", null: false
654
+ t.index ["name"], name: "index_item_custom_properties_on_name", unique: true
655
+ end
656
+
657
+ create_table "item_custom_values", force: :cascade do |t|
658
+ t.integer "item_custom_property_id", null: false
659
+ t.integer "item_id", null: false
660
+ t.text "value"
661
+ t.datetime "created_at", null: false
662
+ t.datetime "updated_at", null: false
663
+ t.index ["item_custom_property_id", "item_id"], name: "index_item_custom_values_on_custom_item_property_and_item_id", unique: true
664
+ t.index ["item_custom_property_id"], name: "index_item_custom_values_on_custom_property_id"
665
+ t.index ["item_id"], name: "index_item_custom_values_on_item_id"
666
+ end
667
+
665
668
  create_table "item_has_use_restrictions", force: :cascade do |t|
666
669
  t.integer "item_id", null: false
667
670
  t.integer "use_restriction_id", null: false
@@ -802,8 +805,6 @@ ActiveRecord::Schema.define(version: 2020_03_22_083458) do
802
805
  t.integer "header_logo_file_size"
803
806
  t.datetime "header_logo_updated_at"
804
807
  t.text "header_logo_meta"
805
- t.text "default_custom_manifestation_label"
806
- t.text "default_custom_item_label"
807
808
  t.index ["short_name"], name: "index_library_groups_on_short_name"
808
809
  t.index ["user_id"], name: "index_library_groups_on_user_id"
809
810
  end
@@ -842,6 +843,27 @@ ActiveRecord::Schema.define(version: 2020_03_22_083458) do
842
843
  t.index ["user_id"], name: "index_manifestation_checkout_stats_on_user_id"
843
844
  end
844
845
 
846
+ create_table "manifestation_custom_properties", force: :cascade do |t|
847
+ t.string "name", null: false
848
+ t.text "display_name", null: false
849
+ t.text "note"
850
+ t.integer "position", default: 1, null: false
851
+ t.datetime "created_at", null: false
852
+ t.datetime "updated_at", null: false
853
+ t.index ["name"], name: "index_manifestation_custom_properties_on_name", unique: true
854
+ end
855
+
856
+ create_table "manifestation_custom_values", force: :cascade do |t|
857
+ t.integer "manifestation_custom_property_id", null: false
858
+ t.integer "manifestation_id", null: false
859
+ t.text "value"
860
+ t.datetime "created_at", null: false
861
+ t.datetime "updated_at", null: false
862
+ t.index ["manifestation_custom_property_id", "manifestation_id"], name: "index_manifestation_custom_values_on_property_manifestation", unique: true
863
+ t.index ["manifestation_custom_property_id"], name: "index_manifestation_custom_values_on_custom_property_id"
864
+ t.index ["manifestation_id"], name: "index_manifestation_custom_values_on_manifestation_id"
865
+ end
866
+
845
867
  create_table "manifestation_relationship_types", force: :cascade do |t|
846
868
  t.string "name", null: false
847
869
  t.text "display_name"
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :item_custom_property do
3
+ sequence(:name){|n| "property_name_#{n}"}
4
+ sequence(:display_name){|n| "プロパティ名_#{n}"}
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :item_custom_value do
3
+ association :item_custom_property
4
+ sequence(:value){|n| "value_#{n}"}
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :manifestation_custom_property do
3
+ sequence(:name){|n| "property_name_#{n}"}
4
+ sequence(:display_name){|n| "プロパティ名_#{n}"}
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :manifestation_custom_value do
3
+ association :manifestation_custom_property
4
+ sequence(:value){|n| "value_#{n}"}
5
+ end
6
+ end
@@ -0,0 +1,24 @@
1
+ one:
2
+ id: 1
3
+ name: custom_1
4
+ display_name: "カスタム項目1"
5
+ position: 1
6
+
7
+ two:
8
+ id: 2
9
+ name: custom_2
10
+ display_name: "カスタム項目1"
11
+ position: 2
12
+
13
+ # == Schema Information
14
+ #
15
+ # Table name: item_custom_properties
16
+ #
17
+ # id :bigint not null, primary key
18
+ # name :string not null
19
+ # display_name :jsonb not null
20
+ # note :text
21
+ # position :integer default(1), not null
22
+ # created_at :datetime not null
23
+ # updated_at :datetime not null
24
+ #
@@ -14,8 +14,6 @@ one:
14
14
  ::/0"
15
15
  user_id: 1
16
16
  pub_year_facet_range_interval: 10
17
- default_custom_manifestation_label: "custom1\r\ncustom2\r\ncustom3"
18
- default_custom_item_label: "custom1\r\ncustom2\r\ncustom3"
19
17
 
20
18
  # == Schema Information
21
19
  #
@@ -0,0 +1,24 @@
1
+ one:
2
+ id: 1
3
+ name: custom_1
4
+ display_name: "カスタム項目1"
5
+ position: 1
6
+
7
+ two:
8
+ id: 2
9
+ name: custom_2
10
+ display_name: "カスタム項目1"
11
+ position: 2
12
+
13
+ # == Schema Information
14
+ #
15
+ # Table name: manifestation_custom_properties
16
+ #
17
+ # id :bigint not null, primary key
18
+ # name :string not null
19
+ # display_name :jsonb not null
20
+ # note :text
21
+ # position :integer default(1), not null
22
+ # created_at :datetime not null
23
+ # updated_at :datetime not null
24
+ #
@@ -0,0 +1,18 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ItemCustomProperty, type: :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: item_custom_properties
10
+ #
11
+ # id :bigint not null, primary key
12
+ # name :string not null
13
+ # display_name_translations :jsonb not null
14
+ # note :text
15
+ # position :integer default(1), not null
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
@@ -0,0 +1,17 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ItemCustomValue, type: :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: item_custom_values
10
+ #
11
+ # id :bigint not null, primary key
12
+ # item_custom_property_id :bigint not null
13
+ # item_id :bigint not null
14
+ # value :text
15
+ # created_at :datetime not null
16
+ # updated_at :datetime not null
17
+ #
@@ -0,0 +1,18 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ManifestationCustomProperty, type: :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: manifestation_custom_properties
10
+ #
11
+ # id :bigint not null, primary key
12
+ # name :string not null
13
+ # display_name_translations :jsonb not null
14
+ # note :text
15
+ # position :integer default(1), not null
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
@@ -0,0 +1,17 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ManifestationCustomValue, type: :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
6
+
7
+ # == Schema Information
8
+ #
9
+ # Table name: manifestation_custom_values
10
+ #
11
+ # id :bigint not null, primary key
12
+ # manifestation_custom_property_id :bigint not null
13
+ # manifestation_id :bigint not null
14
+ # value :text
15
+ # created_at :datetime not null
16
+ # updated_at :datetime not null
17
+ #
@@ -292,6 +292,21 @@ describe Manifestation, solr: true do
292
292
  expect(m["note"]).to eq "test\ntest"
293
293
  expect(m["item_note"]).to eq "test\ntest"
294
294
  end
295
+
296
+ it 'should export custom properties"' do
297
+ item = FactoryBot.create(:item)
298
+ item.item_custom_values << FactoryBot.build(:item_custom_value)
299
+ item.manifestation.manifestation_custom_values << FactoryBot.build(:manifestation_custom_value)
300
+ lines = Manifestation.export(role: 'Librarian')
301
+ csv = CSV.parse(lines, headers: true, col_sep: "\t")
302
+ m = csv.find{|row| row["manifestation_id"].to_i == item.manifestation.id }
303
+ item.item_custom_values.each do |custom_value|
304
+ expect(m["item:#{custom_value.item_custom_property.name}"]).to eq custom_value.value
305
+ end
306
+ item.manifestation.manifestation_custom_values.each do |custom_value|
307
+ expect(m["manifestation:#{custom_value.manifestation_custom_property.name}"]).to eq custom_value.value
308
+ end
309
+ end
295
310
  end
296
311
  end
297
312
 
@@ -9,7 +9,8 @@ describe ResourceImportFile do
9
9
  @file = ResourceImportFile.create(
10
10
  resource_import: File.new("#{Rails.root}/../../examples/resource_import_file_sample1.tsv"),
11
11
  default_shelf_id: 3,
12
- user: users(:admin)
12
+ user: users(:admin),
13
+ edit_mode: 'create'
13
14
  )
14
15
  end
15
16
 
@@ -29,7 +30,7 @@ describe ResourceImportFile do
29
30
  Manifestation.count.should eq old_manifestations_count + 10
30
31
  Item.count.should eq old_items_count + 10
31
32
  Agent.count.should eq old_agents_count + 9
32
- @file.resource_import_results.order(:id).first.body.split("\t").first.should eq 'manifestation_identifier'
33
+ @file.resource_import_results.order(:id).first.body.split("\t").first.should eq 'imported_manifestation_id'
33
34
  ResourceImportResult.count.should eq old_import_results_count + 23
34
35
 
35
36
  manifestation_101 = Manifestation.find_by(manifestation_identifier: '101')
@@ -156,6 +157,16 @@ describe ResourceImportFile do
156
157
  expect(manifestation.identifier_contents(:isbn)).to include("9784840239219")
157
158
  expect(manifestation.identifier_contents(:isbn)).to include("9784043898039")
158
159
  end
160
+
161
+ it "should import custom values", vcr: true do
162
+ @file.import_start
163
+ item_10102 = Item.find_by(item_identifier: '10102')
164
+ expect(item_10102.manifestation.manifestation_custom_values.pluck(:value)).to eq ['カスタム項目テスト1', 'カスタム項目テスト2']
165
+ expect(item_10102.item_custom_values.pluck(:value)).to eq []
166
+ item_10103 = Item.find_by(item_identifier: '10103')
167
+ expect(item_10103.manifestation.manifestation_custom_values.pluck(:value)).to eq ["カスタム項目テスト1", "カスタム項目テスト2"]
168
+ expect(item_10103.item_custom_values.pluck(:value)).to eq ['カスタム項目テスト3', 'カスタム項目テスト4']
169
+ end
159
170
  end
160
171
 
161
172
  describe "ISBN import" do
@@ -216,15 +227,15 @@ describe ResourceImportFile do
216
227
  old_items_count = Item.count
217
228
  old_agents_count = Agent.count
218
229
  old_import_results_count = ResourceImportResult.count
219
- @file.import_start.should eq({manifestation_imported: 9, item_imported: 8, manifestation_found: 5, item_found: 3, failed: 7})
230
+ @file.import_start.should eq({manifestation_imported: 10, item_imported: 10, manifestation_found: 6, item_found: 3, failed: 7})
220
231
  manifestation = Item.find_by(item_identifier: '11111').manifestation
221
232
  manifestation.publishers.first.full_name.should eq 'test4'
222
233
  manifestation.publishers.first.full_name_transcription.should eq 'てすと4'
223
234
  manifestation.publishers.second.full_name_transcription.should eq 'てすと5'
224
- Manifestation.count.should eq old_manifestations_count + 9
225
- Item.count.should eq old_items_count + 8
235
+ Manifestation.count.should eq old_manifestations_count + 10
236
+ Item.count.should eq old_items_count + 10
226
237
  Agent.count.should eq old_agents_count + 9
227
- ResourceImportResult.count.should eq old_import_results_count + 21
238
+ ResourceImportResult.count.should eq old_import_results_count + 23
228
239
  Item.find_by(item_identifier: '10101').manifestation.creators.size.should eq 2
229
240
  Item.find_by(item_identifier: '10101').manifestation.date_of_publication.should eq Time.zone.parse('2001-01-01')
230
241
  Item.find_by(item_identifier: '10102').manifestation.date_of_publication.should eq Time.zone.parse('2001-01-01')
@@ -335,20 +346,28 @@ resource_import_file_test_description test\\ntest test\\ntest test_description t
335
346
  expect(manifestation.items.first.note).to eq "test\ntest"
336
347
  end
337
348
  end
349
+
350
+ describe "when it contains custom properties" do
351
+ xit "should be imported" do
352
+ end
353
+ end
338
354
  end
339
355
 
340
356
  describe "when its mode is 'update'" do
341
- it "should update items", vcr: true do
342
- file = ResourceImportFile.create!(
357
+ before(:each) do
358
+ @file = ResourceImportFile.create!(
343
359
  resource_import: File.new("#{Rails.root}/../../examples/item_update_file.tsv"),
344
360
  user: users(:admin),
345
361
  edit_mode: 'update'
346
362
  )
347
- file.modify
348
- expect(file.resource_import_results.first).to be_truthy
349
- expect(file.resource_import_results.first.body).to match /item_identifier/
363
+ end
364
+
365
+ it "should update items", vcr: true do
366
+ @file.modify
367
+ expect(@file.resource_import_results.first).to be_truthy
368
+ expect(@file.resource_import_results.first.body).to match /item_identifier/
350
369
  item_00001 = Item.find_by(item_identifier: '00001')
351
- item_00001.manifestation.creators.order('agents.id').collect(&:full_name).should eq ['たなべ', 'こうすけ']
370
+ item_00001.manifestation.creators.order('agents.id').pluck(:full_name).should eq ['たなべ', 'こうすけ']
352
371
  item_00001.binding_item_identifier.should eq '900001'
353
372
  item_00001.binding_call_number.should eq '336|A'
354
373
  item_00001.binded_at.should eq Time.zone.parse('2014-08-16')
@@ -364,6 +383,13 @@ resource_import_file_test_description test\\ntest test\\ntest test_description t
364
383
  Item.find_by(item_identifier: '00025').call_number.should eq "547|ヤ"
365
384
  end
366
385
 
386
+ it "should update custom values", vcr: true do
387
+ @file.import_start
388
+ item_00001 = Item.find_by(item_identifier: '00001')
389
+ expect(item_00001.manifestation.manifestation_custom_values.pluck(:manifestation_custom_property_id, :value)).to eq [[2, "カスタム項目5"]]
390
+ expect(item_00001.item_custom_values.order(:item_custom_property_id).first.value).to eq "カスタム項目6"
391
+ end
392
+
367
393
  # it "should update series_statement", vcr: true do
368
394
  # manifestation = Manifestation.find(10)
369
395
  # file = ResourceImportFile.create resource_import: File.new("#{Rails.root.to_s}/../../examples/update_series_statement.tsv"), edit_mode: 'update'