enju_biblio 0.3.9 → 0.3.10.rc.1

Sign up to get free protection for your applications and to get access to all the features.
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'