umlaut 3.0.0alpha1

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 (293) hide show
  1. data/LICENSE +7 -0
  2. data/README.md +49 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/images/error.gif +0 -0
  5. data/app/assets/images/export_bg_bot.gif +0 -0
  6. data/app/assets/images/export_bg_mid.gif +0 -0
  7. data/app/assets/images/export_bg_top.gif +0 -0
  8. data/app/assets/images/famfamfam/book_open.png +0 -0
  9. data/app/assets/images/famfamfam/cross.png +0 -0
  10. data/app/assets/images/famfamfam/page_sound.gif +0 -0
  11. data/app/assets/images/famfamfam/page_text.gif +0 -0
  12. data/app/assets/images/famfamfam/page_up.gif +0 -0
  13. data/app/assets/images/famfamfam/page_white.png +0 -0
  14. data/app/assets/images/famfamfam/readme.html +1495 -0
  15. data/app/assets/images/famfamfam/tiny_cross.png +0 -0
  16. data/app/assets/images/frame_remove.gif +0 -0
  17. data/app/assets/images/ico_go.gif +0 -0
  18. data/app/assets/images/jhu_findit.gif +0 -0
  19. data/app/assets/images/list_closed.png +0 -0
  20. data/app/assets/images/list_open.png +0 -0
  21. data/app/assets/images/more_info.gif +0 -0
  22. data/app/assets/images/rails.png +0 -0
  23. data/app/assets/images/request.gif +0 -0
  24. data/app/assets/images/spinner.gif +0 -0
  25. data/app/assets/javascripts/umlaut/ajax_windows.js +35 -0
  26. data/app/assets/javascripts/umlaut/ensure_window_size.js.erb +34 -0
  27. data/app/assets/javascripts/umlaut/expand_contract_toggle.js +25 -0
  28. data/app/assets/javascripts/umlaut/search_autocomplete.js +46 -0
  29. data/app/assets/javascripts/umlaut/simple_visible_toggle.js +8 -0
  30. data/app/assets/javascripts/umlaut/update_html.js +152 -0
  31. data/app/assets/javascripts/umlaut.js +17 -0
  32. data/app/assets/stylesheets/umlaut.css +857 -0
  33. data/app/controllers/application_controller.rb +14 -0
  34. data/app/controllers/export_email_controller.rb +123 -0
  35. data/app/controllers/js_helper_controller.rb +10 -0
  36. data/app/controllers/link_router_controller.rb +87 -0
  37. data/app/controllers/open_search_controller.rb +9 -0
  38. data/app/controllers/resolve_controller.rb +288 -0
  39. data/app/controllers/resource_controller.rb +83 -0
  40. data/app/controllers/search_controller.rb +328 -0
  41. data/app/controllers/search_methods/sfx3.rb +148 -0
  42. data/app/controllers/search_methods/sfx4.rb +257 -0
  43. data/app/controllers/search_methods/sfx_api.rb +47 -0
  44. data/app/controllers/store_controller.rb +64 -0
  45. data/app/controllers/umlaut/controller_behavior.rb +20 -0
  46. data/app/controllers/umlaut/controller_logic.rb +96 -0
  47. data/app/controllers/umlaut/error_handling.rb +48 -0
  48. data/app/controllers/umlaut_controller.rb +112 -0
  49. data/app/helpers/application_helper.rb +4 -0
  50. data/app/helpers/emailer_helper.rb +43 -0
  51. data/app/helpers/export_email_helper.rb +34 -0
  52. data/app/helpers/open_search_helper.rb +7 -0
  53. data/app/helpers/resolve_helper.rb +225 -0
  54. data/app/helpers/search_helper.rb +50 -0
  55. data/app/helpers/umlaut/footer_helper.rb +64 -0
  56. data/app/helpers/umlaut/helper.rb +62 -0
  57. data/app/helpers/umlaut/html_head_helper.rb +37 -0
  58. data/app/helpers/umlaut/url_generation.rb +77 -0
  59. data/app/mailers/emailer.rb +48 -0
  60. data/app/models/clickthrough.rb +2 -0
  61. data/app/models/collection.rb +259 -0
  62. data/app/models/crossref_lookup.rb +2 -0
  63. data/app/models/dispatched_service.rb +58 -0
  64. data/app/models/permalink.rb +29 -0
  65. data/app/models/referent.rb +473 -0
  66. data/app/models/referent_value.rb +14 -0
  67. data/app/models/request.rb +449 -0
  68. data/app/models/service_response.rb +179 -0
  69. data/app/models/service_store.rb +59 -0
  70. data/app/models/service_type_value.rb +58 -0
  71. data/app/models/service_wave.rb +150 -0
  72. data/app/models/sfx_db/az_additional_title.rb +11 -0
  73. data/app/models/sfx_db/az_letter_group.rb +11 -0
  74. data/app/models/sfx_db/az_title.rb +38 -0
  75. data/app/models/sfx_db/az_title_v2.rb +34 -0
  76. data/app/models/sfx_db/isbn.rb +12 -0
  77. data/app/models/sfx_db/issn.rb +12 -0
  78. data/app/models/sfx_db/object.rb +35 -0
  79. data/app/models/sfx_db/object_portfolio.rb +6 -0
  80. data/app/models/sfx_db/publisher.rb +10 -0
  81. data/app/models/sfx_db/sfx_db_base.rb +54 -0
  82. data/app/models/sfx_db/target.rb +9 -0
  83. data/app/models/sfx_db/target_service.rb +10 -0
  84. data/app/models/sfx_db/title.rb +10 -0
  85. data/app/models/sfx_db.rb +10 -0
  86. data/app/models/sfx_url.rb +35 -0
  87. data/app/views/emailer/citation.text.erb +28 -0
  88. data/app/views/emailer/short_citation.text.erb +8 -0
  89. data/app/views/export_email/_email.html.erb +25 -0
  90. data/app/views/export_email/_send_email.html.erb +3 -0
  91. data/app/views/export_email/_send_txt.html.erb +3 -0
  92. data/app/views/export_email/_txt.html.erb +62 -0
  93. data/app/views/export_email/email.html.erb +3 -0
  94. data/app/views/export_email/send_email.html.erb +1 -0
  95. data/app/views/export_email/send_txt.html.erb +1 -0
  96. data/app/views/export_email/txt.html.erb +3 -0
  97. data/app/views/js_helper/loader.erb.js +13 -0
  98. data/app/views/layouts/umlaut.html.erb +52 -0
  99. data/app/views/open_search/index.html.erb +9 -0
  100. data/app/views/resolve/_api_in_progress.xml.erb +21 -0
  101. data/app/views/resolve/_background_progress.html.erb +51 -0
  102. data/app/views/resolve/_background_updater.html.erb +38 -0
  103. data/app/views/resolve/_citation.html.erb +87 -0
  104. data/app/views/resolve/_coins.html.erb +1 -0
  105. data/app/views/resolve/_compact_citation.html.erb +33 -0
  106. data/app/views/resolve/_cover_image.html.erb +35 -0
  107. data/app/views/resolve/_fulltext.html.erb +55 -0
  108. data/app/views/resolve/_help.html.erb +17 -0
  109. data/app/views/resolve/_holding.html.erb +91 -0
  110. data/app/views/resolve/_related_items.html.erb +35 -0
  111. data/app/views/resolve/_search_inside.html.erb +62 -0
  112. data/app/views/resolve/_section_display.html.erb +49 -0
  113. data/app/views/resolve/_service_errors.html.erb +29 -0
  114. data/app/views/resolve/_standard_response_item.html.erb +89 -0
  115. data/app/views/resolve/api.xml.builder +72 -0
  116. data/app/views/resolve/background_status.html.erb +26 -0
  117. data/app/views/resolve/index.html.erb +73 -0
  118. data/app/views/resolve/partial_html_sections.xml.erb +30 -0
  119. data/app/views/search/_a_to_z.html.erb +6 -0
  120. data/app/views/search/_citation.html.erb +94 -0
  121. data/app/views/search/_pager.html.erb +60 -0
  122. data/app/views/search/books.html.erb +103 -0
  123. data/app/views/search/journal_search.html.erb +90 -0
  124. data/app/views/search/journals.html.erb +167 -0
  125. data/app/views/search/opensearch_description.rxml +10 -0
  126. data/app/views/testing/index.html.erb +1 -0
  127. data/app/views/umlaut/README +5 -0
  128. data/app/views/umlaut/error.html.erb +45 -0
  129. data/db/migrate/01_umlaut_init.rb +113 -0
  130. data/db/orig_fixed_data/service_type_values.yml +120 -0
  131. data/db/seeds.rb +7 -0
  132. data/lib/CronTab.rb +192 -0
  133. data/lib/aws_product_sign.rb +146 -0
  134. data/lib/exlibris/aleph/patron.rb +64 -0
  135. data/lib/exlibris/aleph/record.rb +54 -0
  136. data/lib/exlibris/aleph/rest_api.rb +29 -0
  137. data/lib/exlibris/primo/holding.rb +192 -0
  138. data/lib/exlibris/primo/rsrc.rb +17 -0
  139. data/lib/exlibris/primo/searcher.rb +276 -0
  140. data/lib/exlibris/primo/source/aleph.rb +46 -0
  141. data/lib/exlibris/primo/source/distribution/nyu_aleph.rb +323 -0
  142. data/lib/exlibris/primo/toc.rb +17 -0
  143. data/lib/exlibris/primo_ws.rb +140 -0
  144. data/lib/generators/templates/umlaut_services.yml +237 -0
  145. data/lib/generators/umlaut/asset_hooks_generator.rb +44 -0
  146. data/lib/generators/umlaut/install_generator.rb +110 -0
  147. data/lib/hip3/bib.rb +291 -0
  148. data/lib/hip3/bib_searcher.rb +302 -0
  149. data/lib/hip3/custom_field_lookup.rb +44 -0
  150. data/lib/hip3/holding.rb +50 -0
  151. data/lib/hip3/item.rb +65 -0
  152. data/lib/hip3/receipt.rb +7 -0
  153. data/lib/hip3/serial_copy.rb +82 -0
  154. data/lib/holding.rb +32 -0
  155. data/lib/marc_helper.rb +254 -0
  156. data/lib/metadata_helper.rb +312 -0
  157. data/lib/opensearch_feed.rb +398 -0
  158. data/lib/opensearch_query.rb +98 -0
  159. data/lib/referent_filter.rb +16 -0
  160. data/lib/referent_filters/dissertation_catch.rb +45 -0
  161. data/lib/section_renderer.rb +503 -0
  162. data/lib/service.rb +336 -0
  163. data/lib/service_adaptors/ajax_export.rb +37 -0
  164. data/lib/service_adaptors/amazon.rb +412 -0
  165. data/lib/service_adaptors/blacklight.rb +327 -0
  166. data/lib/service_adaptors/book_finder.rb +40 -0
  167. data/lib/service_adaptors/bx.rb +51 -0
  168. data/lib/service_adaptors/cover_thing.rb +73 -0
  169. data/lib/service_adaptors/elsevier_cover.rb +57 -0
  170. data/lib/service_adaptors/email_export.rb +10 -0
  171. data/lib/service_adaptors/ezproxy.rb +171 -0
  172. data/lib/service_adaptors/google_book_search.rb +442 -0
  173. data/lib/service_adaptors/gpo.rb +124 -0
  174. data/lib/service_adaptors/hathi_trust.rb +308 -0
  175. data/lib/service_adaptors/hip3_service.rb +150 -0
  176. data/lib/service_adaptors/hip_holding_search.rb +237 -0
  177. data/lib/service_adaptors/internet_archive.rb +488 -0
  178. data/lib/service_adaptors/isbn_db.rb +86 -0
  179. data/lib/service_adaptors/isi.rb +258 -0
  180. data/lib/service_adaptors/jcr.rb +146 -0
  181. data/lib/service_adaptors/opac.rb +351 -0
  182. data/lib/service_adaptors/open_library.rb +316 -0
  183. data/lib/service_adaptors/open_library_cover.rb +73 -0
  184. data/lib/service_adaptors/primo_service.rb +392 -0
  185. data/lib/service_adaptors/primo_source.rb +78 -0
  186. data/lib/service_adaptors/pubmed.rb +133 -0
  187. data/lib/service_adaptors/request_to_fixture.rb +68 -0
  188. data/lib/service_adaptors/scopus.rb +295 -0
  189. data/lib/service_adaptors/sfx-new.rb +557 -0
  190. data/lib/service_adaptors/sfx.rb +566 -0
  191. data/lib/service_adaptors/sfx_backchannel_record.rb +69 -0
  192. data/lib/service_adaptors/txt_holding_export.rb +32 -0
  193. data/lib/service_adaptors/ulrichs_cover.rb +57 -0
  194. data/lib/service_adaptors/ulrichs_link.rb +47 -0
  195. data/lib/service_adaptors/worldcat.rb +116 -0
  196. data/lib/service_adaptors/worldcat_identities.rb +591 -0
  197. data/lib/tasks/umlaut.rake +134 -0
  198. data/lib/umlaut/default_configuration.rb +5 -0
  199. data/lib/umlaut/routes.rb +136 -0
  200. data/lib/umlaut/version.rb +3 -0
  201. data/lib/umlaut.rb +37 -0
  202. data/lib/umlaut_configurable.rb +343 -0
  203. data/lib/umlaut_http.rb +100 -0
  204. data/lib/xml_schema_helper.rb +109 -0
  205. data/test/dummy/Rakefile +7 -0
  206. data/test/dummy/app/assets/javascripts/application.js +13 -0
  207. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  208. data/test/dummy/app/controllers/application_controller.rb +3 -0
  209. data/test/dummy/app/controllers/umlaut_controller.rb +112 -0
  210. data/test/dummy/app/helpers/application_helper.rb +2 -0
  211. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  212. data/test/dummy/config/application.rb +45 -0
  213. data/test/dummy/config/boot.rb +10 -0
  214. data/test/dummy/config/database-jhu.yml +44 -0
  215. data/test/dummy/config/database.yml +25 -0
  216. data/test/dummy/config/environment.rb +5 -0
  217. data/test/dummy/config/environments/development.rb +34 -0
  218. data/test/dummy/config/environments/production.rb +60 -0
  219. data/test/dummy/config/environments/test.rb +39 -0
  220. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  221. data/test/dummy/config/initializers/inflections.rb +10 -0
  222. data/test/dummy/config/initializers/mime_types.rb +5 -0
  223. data/test/dummy/config/initializers/secret_token.rb +7 -0
  224. data/test/dummy/config/initializers/session_store.rb +8 -0
  225. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  226. data/test/dummy/config/locales/en.yml +5 -0
  227. data/test/dummy/config/routes.rb +61 -0
  228. data/test/dummy/config/umlaut_services.yml +237 -0
  229. data/test/dummy/config.ru +4 -0
  230. data/test/dummy/db/migrate/20111228211210_umlaut_init.rb +113 -0
  231. data/test/dummy/db/schema.rb +124 -0
  232. data/test/dummy/log/development.log +12981 -0
  233. data/test/dummy/log/production.log +0 -0
  234. data/test/dummy/public/404.html +26 -0
  235. data/test/dummy/public/422.html +26 -0
  236. data/test/dummy/public/500.html +26 -0
  237. data/test/dummy/public/favicon.ico +0 -0
  238. data/test/dummy/script/rails +6 -0
  239. data/test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7 +0 -0
  240. data/test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80 +0 -0
  241. data/test/dummy/tmp/cache/assets/C73/920/sprockets%2Fd371318f22900492fd180f17c5e2a504 +9268 -0
  242. data/test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
  243. data/test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe47e28558116fb5f8038754e60d1961d +11769 -0
  244. data/test/dummy/tmp/cache/assets/CAA/EB0/sprockets%2F1d179210e8b76f1ea63c802688a015e4 +9271 -0
  245. data/test/dummy/tmp/cache/assets/CBB/9C0/sprockets%2F706f28923fb754cad04b9107c89986a1 +0 -0
  246. data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
  247. data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
  248. data/test/dummy/tmp/cache/assets/CF6/F20/sprockets%2F5b2ffa1103079dfd555197838f87a99f +0 -0
  249. data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +862 -0
  250. data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
  251. data/test/dummy/tmp/cache/assets/D22/060/sprockets%2F9aec77b768e91a802d284271c58e2f7e +21357 -0
  252. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  253. data/test/dummy/tmp/cache/assets/D33/6D0/sprockets%2F500129c57f1146e556ec3aacd6cd38c1 +0 -0
  254. data/test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf +0 -0
  255. data/test/dummy/tmp/cache/assets/D42/C20/sprockets%2Fbcf14e437b1582bf93b77670acf8e090 +21353 -0
  256. data/test/dummy/tmp/cache/assets/D50/A30/sprockets%2F7d8b294ac433db5d056538f8cf7c66b9 +0 -0
  257. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +872 -0
  258. data/test/dummy/tmp/cache/assets/D65/590/sprockets%2Fc1bb92fc3406a126b7dd302edc96d629 +0 -0
  259. data/test/dummy/tmp/cache/assets/D71/6B0/sprockets%2Fde558b71b494cf09b1bf055c8dff0353 +0 -0
  260. data/test/dummy/tmp/cache/assets/D72/610/sprockets%2Fa8c708eeb30ef93de34d755d4f45d023 +859 -0
  261. data/test/dummy/tmp/cache/assets/D76/AD0/sprockets%2Fe2158cde93188cf5ab6457bc6d6602ec +0 -0
  262. data/test/dummy/tmp/cache/assets/D7A/E40/sprockets%2F9622ffcc499a57627cd1bb18fe31b8e4 +11772 -0
  263. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  264. data/test/dummy/tmp/cache/assets/D9B/770/sprockets%2F8aacf02eb7dbb0949704b28f27b87e0b +0 -0
  265. data/test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1 +0 -0
  266. data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
  267. data/test/dummy/tmp/cache/assets/DF7/F30/sprockets%2F7bc16c4109b17fabe29f8ddbbf732d1c +374 -0
  268. data/test/dummy/tmp/cache/assets/E03/570/sprockets%2F493bdc0ac14cd4f57fdfe4253f992bde +0 -0
  269. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  270. data/test/dummy/tmp/cache/assets/E0B/4B0/sprockets%2F7988df51a61c81ce6ede4a2d4c8cce4f +377 -0
  271. data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
  272. data/test/fixtures/dispatched_services.yml +5 -0
  273. data/test/fixtures/permalinks.yml +5 -0
  274. data/test/fixtures/referent_values.yml +1734 -0
  275. data/test/fixtures/referents.yml +156 -0
  276. data/test/fixtures/requests.yml +284 -0
  277. data/test/fixtures/service_responses.yml +5 -0
  278. data/test/fixtures/sfx_urls.yml +4 -0
  279. data/test/performance/browsing_test.rb +9 -0
  280. data/test/test_helper.rb +10 -0
  281. data/test/umlaut_test.rb +7 -0
  282. data/test/unit/aleph_patron_test.rb +39 -0
  283. data/test/unit/aleph_record_benchmarks.rb +28 -0
  284. data/test/unit/aleph_record_test.rb +30 -0
  285. data/test/unit/aws_product_sign_test.rb +93 -0
  286. data/test/unit/collection_test.rb +76 -0
  287. data/test/unit/google_book_search_test.rb +101 -0
  288. data/test/unit/primo_searcher_test.rb +403 -0
  289. data/test/unit/primo_service_test.rb +939 -0
  290. data/test/unit/primo_ws_test.rb +131 -0
  291. data/test/unit/service_response_test.rb +9 -0
  292. data/test/unit/service_test.rb +33 -0
  293. metadata +580 -0
@@ -0,0 +1,131 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PrimoWSTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ @primo_definition = YAML.load( %{
7
+ type: PrimoService
8
+ priority: 2 # After SFX, to get SFX metadata enhancement
9
+ status: active
10
+ base_url: http://bobcatdev.library.nyu.edu
11
+ vid: NYU
12
+ institution: NYU
13
+ holding_search_institution: NYU
14
+ holding_search_text: Search for this title in BobCat.
15
+ suppress_holdings: [ !ruby/regexp '/\$\$LBWEB/', !ruby/regexp '/\$\$LNWEB/', !ruby/regexp '/\$\$LTWEB/', !ruby/regexp '/\$\$LWEB/', !ruby/regexp '/\$\$1Restricted Internet Resources/' ]
16
+ ez_proxy: !ruby/regexp '/https\:\/\/ezproxy\.library\.nyu\.edu\/login\?url=/'
17
+ service_types:
18
+ - primo_source
19
+ - holding_search
20
+ - fulltext
21
+ - table_of_contents
22
+ - referent_enhance
23
+ - cover_image
24
+ })
25
+
26
+ @base_url = @primo_definition["base_url"]
27
+ @bogus_404_url = "http://library.nyu.edu/bogus"
28
+ @bogus_200_url = "http://library.nyu.edu"
29
+ @primo_test_doc_id = "nyu_aleph000062856"
30
+ @primo_invalid_doc_id = "thisIsNotAValidDocId"
31
+ @primo_test_problem_doc_id = "nyu_aleph000509288"
32
+ @isbn_search_params = {:isbn => "0143039008"}
33
+ @issn_search_params = {:issn => "0090-5720"}
34
+ @title_search_params = {:title => "Travels with My Aunt"}
35
+ @author_search_params = {:author => "Graham Greene"}
36
+ @title_author_genre_search_params = {:title => "Travels with My Aunt", :author => "Graham Greene", :genre => "Book"}
37
+ end
38
+
39
+ def test_primo_ws_benchmarks
40
+ Benchmark.bmbm do |results|
41
+ results.report("PrimoWS::Get Record:") {
42
+ (1..10).each {
43
+ get_record = Exlibris::PrimoWS::GetRecord.new(@primo_test_doc_id, @base_url)
44
+ }
45
+ }
46
+ results.report("PrimoWS::SearchBrief by ISBN:") {
47
+ (1..10).each {
48
+ get_record = Exlibris::PrimoWS::SearchBrief.new(@isbn_search_params, @base_url)
49
+ }
50
+ }
51
+ results.report("PrimoWS::SearchBrief by title:") {
52
+ (1..10).each {
53
+ get_record = Exlibris::PrimoWS::SearchBrief.new(@title_search_params, @base_url)
54
+ }
55
+ }
56
+ end
57
+ end
58
+ def test_bogus_response
59
+ assert_raise(SOAP::HTTPStreamError) {
60
+ ws = Exlibris::PrimoWS::GetRecord.new(@primo_test_doc_id, @bogus_404_url)
61
+ }
62
+ assert_raise(SOAP::HTTPStreamError) {
63
+ ws = Exlibris::PrimoWS::GetRecord.new(@primo_test_doc_id, @bogus_200_url)
64
+ }
65
+ end
66
+
67
+ # Test GetRecord for a single Primo document.
68
+ def test_get_record
69
+ ws = Exlibris::PrimoWS::GetRecord.new(@primo_test_doc_id, @base_url)
70
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
71
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
72
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
73
+ assert_equal(@primo_test_doc_id, ws.response.at("//control/recordid").inner_text, "#{ws.class} returned an unexpected record: #{ws.response.to_original_html}")
74
+ end
75
+
76
+ def test_get_genre_discrepancy
77
+ ws = Exlibris::PrimoWS::GetRecord.new(@primo_test_problem_doc_id, @base_url)
78
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
79
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
80
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
81
+ assert_equal(@primo_test_problem_doc_id, ws.response.at("//control/recordid").inner_text, "#{ws.class} returned an unexpected record: #{ws.response.to_original_html}")
82
+ assert_not_nil(ws.response.at("//display/availlibrary").inner_text, "#{ws.class} returned an unexpected record: #{ws.response.to_original_html}")
83
+ end
84
+
85
+ # Test GetRecord with invalid Primo doc id.
86
+ def test_get_bogus_record
87
+ assert_raise(RuntimeError) {
88
+ ws = Exlibris::PrimoWS::GetRecord.new(@primo_invalid_doc_id, @base_url)
89
+ }
90
+ end
91
+
92
+ # Test SearchBrief by isbn.
93
+ def test_isbn_search
94
+ ws = Exlibris::PrimoWS::SearchBrief.new(@isbn_search_params, @base_url)
95
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
96
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
97
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
98
+ end
99
+
100
+ # Test SearchBrief by issn.
101
+ def test_issn_search
102
+ ws = Exlibris::PrimoWS::SearchBrief.new(@issn_search_params, @base_url)
103
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
104
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
105
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
106
+ end
107
+
108
+ # Test SearchBrief by title.
109
+ def test_title_search
110
+ ws = Exlibris::PrimoWS::SearchBrief.new(@title_search_params, @base_url)
111
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
112
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
113
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
114
+ end
115
+
116
+ # Test SearchBrief by author.
117
+ def test_author_search
118
+ ws = Exlibris::PrimoWS::SearchBrief.new(@author_search_params, @base_url)
119
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
120
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
121
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
122
+ end
123
+
124
+ # Test SearchBrief by title/author/genre.
125
+ def test_title_author_genre_search
126
+ ws = Exlibris::PrimoWS::SearchBrief.new(@title_author_genre_search_params, @base_url)
127
+ assert_not_nil(ws, "#{ws.class} returned nil when instantiated.")
128
+ assert_instance_of( Hpricot::Doc, ws.response, "#{ws.class} response is an unexpected object: #{ws.response.class}")
129
+ assert_equal([], ws.error, "#{ws.class} encountered errors: #{ws.error}")
130
+ end
131
+ end
@@ -0,0 +1,9 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ServiceResponseTest < Test::Unit::TestCase
4
+
5
+ # Replace this with your real tests.
6
+ def test_truth
7
+ assert true
8
+ end
9
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ServiceTest < Test::Unit::TestCase
4
+
5
+ # A service that does nothing!
6
+ class DummyService < Service
7
+ def handle(request)
8
+ return request.dispatched(self, true)
9
+ end
10
+ end
11
+
12
+ def setup
13
+ @dummy_config = {"priority" => 1}
14
+ @umlaut_request = requests(:simple_request)
15
+ end
16
+
17
+ def test_write_to_session
18
+
19
+
20
+ writer = DummyService.new( @dummy_config )
21
+ writer.request = @umlaut_request
22
+ writer.update_session( { :one => "first", :two => "second" })
23
+
24
+ reader = DummyService.new( @dummy_config )
25
+ reader.request = @umlaut_request
26
+ session = reader.session()
27
+
28
+ assert_equal "first", session[:one]
29
+ assert_equal "second", session[:two]
30
+
31
+ end
32
+
33
+ end
metadata ADDED
@@ -0,0 +1,580 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: umlaut
3
+ version: !ruby/object:Gem::Version
4
+ hash: -3702664386
5
+ prerelease: 5
6
+ segments:
7
+ - 3
8
+ - 0
9
+ - 0
10
+ - alpha
11
+ - 1
12
+ version: 3.0.0alpha1
13
+ platform: ruby
14
+ authors:
15
+ - Jonathan Rochkind, et al
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2011-12-28 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 5
29
+ segments:
30
+ - 3
31
+ - 1
32
+ - 3
33
+ version: 3.1.3
34
+ version_requirements: *id001
35
+ prerelease: false
36
+ name: rails
37
+ type: :runtime
38
+ - !ruby/object:Gem::Dependency
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ version_requirements: *id002
49
+ prerelease: false
50
+ name: jquery-rails
51
+ type: :runtime
52
+ - !ruby/object:Gem::Dependency
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ version_requirements: *id003
63
+ prerelease: false
64
+ name: nokogiri
65
+ type: :runtime
66
+ - !ruby/object:Gem::Dependency
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 23
73
+ segments:
74
+ - 0
75
+ - 2
76
+ - 0
77
+ version: 0.2.0
78
+ version_requirements: *id004
79
+ prerelease: false
80
+ name: openurl
81
+ type: :runtime
82
+ - !ruby/object:Gem::Dependency
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ hash: 9
89
+ segments:
90
+ - 0
91
+ - 4
92
+ - 3
93
+ version: 0.4.3
94
+ version_requirements: *id005
95
+ prerelease: false
96
+ name: marc
97
+ type: :runtime
98
+ - !ruby/object:Gem::Dependency
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ version_requirements: *id006
109
+ prerelease: false
110
+ name: isbn
111
+ type: :runtime
112
+ - !ruby/object:Gem::Dependency
113
+ requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ version_requirements: *id007
123
+ prerelease: false
124
+ name: htmlentities
125
+ type: :runtime
126
+ - !ruby/object:Gem::Dependency
127
+ requirement: &id008 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ hash: 3
133
+ segments:
134
+ - 0
135
+ version: "0"
136
+ version_requirements: *id008
137
+ prerelease: false
138
+ name: multi_json
139
+ type: :runtime
140
+ - !ruby/object:Gem::Dependency
141
+ requirement: &id009 !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ hash: 15
147
+ segments:
148
+ - 0
149
+ - 2
150
+ version: "0.2"
151
+ version_requirements: *id009
152
+ prerelease: false
153
+ name: confstruct
154
+ type: :runtime
155
+ description:
156
+ email:
157
+ - umlaut-general@rubyforge.org
158
+ executables: []
159
+
160
+ extensions: []
161
+
162
+ extra_rdoc_files: []
163
+
164
+ files:
165
+ - app/mailers/emailer.rb
166
+ - app/controllers/search_methods/sfx4.rb
167
+ - app/controllers/search_methods/sfx3.rb
168
+ - app/controllers/search_methods/sfx_api.rb
169
+ - app/controllers/open_search_controller.rb
170
+ - app/controllers/store_controller.rb
171
+ - app/controllers/js_helper_controller.rb
172
+ - app/controllers/link_router_controller.rb
173
+ - app/controllers/export_email_controller.rb
174
+ - app/controllers/umlaut/error_handling.rb
175
+ - app/controllers/umlaut/controller_logic.rb
176
+ - app/controllers/umlaut/controller_behavior.rb
177
+ - app/controllers/resource_controller.rb
178
+ - app/controllers/resolve_controller.rb
179
+ - app/controllers/application_controller.rb
180
+ - app/controllers/umlaut_controller.rb
181
+ - app/controllers/search_controller.rb
182
+ - app/assets/images/jhu_findit.gif
183
+ - app/assets/images/export_bg_top.gif
184
+ - app/assets/images/export_bg_mid.gif
185
+ - app/assets/images/list_closed.png
186
+ - app/assets/images/export_bg_bot.gif
187
+ - app/assets/images/spinner.gif
188
+ - app/assets/images/ico_go.gif
189
+ - app/assets/images/rails.png
190
+ - app/assets/images/request.gif
191
+ - app/assets/images/famfamfam/book_open.png
192
+ - app/assets/images/famfamfam/page_up.gif
193
+ - app/assets/images/famfamfam/page_white.png
194
+ - app/assets/images/famfamfam/cross.png
195
+ - app/assets/images/famfamfam/readme.html
196
+ - app/assets/images/famfamfam/page_text.gif
197
+ - app/assets/images/famfamfam/page_sound.gif
198
+ - app/assets/images/famfamfam/tiny_cross.png
199
+ - app/assets/images/frame_remove.gif
200
+ - app/assets/images/list_open.png
201
+ - app/assets/images/more_info.gif
202
+ - app/assets/images/error.gif
203
+ - app/assets/javascripts/umlaut.js
204
+ - app/assets/javascripts/umlaut/update_html.js
205
+ - app/assets/javascripts/umlaut/ajax_windows.js
206
+ - app/assets/javascripts/umlaut/simple_visible_toggle.js
207
+ - app/assets/javascripts/umlaut/ensure_window_size.js.erb
208
+ - app/assets/javascripts/umlaut/expand_contract_toggle.js
209
+ - app/assets/javascripts/umlaut/search_autocomplete.js
210
+ - app/assets/stylesheets/umlaut.css
211
+ - app/models/sfx_url.rb
212
+ - app/models/crossref_lookup.rb
213
+ - app/models/service_wave.rb
214
+ - app/models/request.rb
215
+ - app/models/clickthrough.rb
216
+ - app/models/permalink.rb
217
+ - app/models/service_response.rb
218
+ - app/models/sfx_db/title.rb
219
+ - app/models/sfx_db/az_additional_title.rb
220
+ - app/models/sfx_db/sfx_db_base.rb
221
+ - app/models/sfx_db/isbn.rb
222
+ - app/models/sfx_db/target_service.rb
223
+ - app/models/sfx_db/target.rb
224
+ - app/models/sfx_db/az_title.rb
225
+ - app/models/sfx_db/object.rb
226
+ - app/models/sfx_db/az_letter_group.rb
227
+ - app/models/sfx_db/publisher.rb
228
+ - app/models/sfx_db/object_portfolio.rb
229
+ - app/models/sfx_db/issn.rb
230
+ - app/models/sfx_db/az_title_v2.rb
231
+ - app/models/referent_value.rb
232
+ - app/models/service_type_value.rb
233
+ - app/models/service_store.rb
234
+ - app/models/sfx_db.rb
235
+ - app/models/collection.rb
236
+ - app/models/dispatched_service.rb
237
+ - app/models/referent.rb
238
+ - app/views/emailer/short_citation.text.erb
239
+ - app/views/emailer/citation.text.erb
240
+ - app/views/js_helper/loader.erb.js
241
+ - app/views/search/_a_to_z.html.erb
242
+ - app/views/search/_pager.html.erb
243
+ - app/views/search/books.html.erb
244
+ - app/views/search/journal_search.html.erb
245
+ - app/views/search/journals.html.erb
246
+ - app/views/search/_citation.html.erb
247
+ - app/views/search/opensearch_description.rxml
248
+ - app/views/export_email/_email.html.erb
249
+ - app/views/export_email/send_email.html.erb
250
+ - app/views/export_email/_txt.html.erb
251
+ - app/views/export_email/email.html.erb
252
+ - app/views/export_email/_send_txt.html.erb
253
+ - app/views/export_email/txt.html.erb
254
+ - app/views/export_email/send_txt.html.erb
255
+ - app/views/export_email/_send_email.html.erb
256
+ - app/views/open_search/index.html.erb
257
+ - app/views/resolve/_background_updater.html.erb
258
+ - app/views/resolve/_help.html.erb
259
+ - app/views/resolve/_background_progress.html.erb
260
+ - app/views/resolve/_standard_response_item.html.erb
261
+ - app/views/resolve/_fulltext.html.erb
262
+ - app/views/resolve/index.html.erb
263
+ - app/views/resolve/_compact_citation.html.erb
264
+ - app/views/resolve/_related_items.html.erb
265
+ - app/views/resolve/api.xml.builder
266
+ - app/views/resolve/background_status.html.erb
267
+ - app/views/resolve/partial_html_sections.xml.erb
268
+ - app/views/resolve/_search_inside.html.erb
269
+ - app/views/resolve/_cover_image.html.erb
270
+ - app/views/resolve/_section_display.html.erb
271
+ - app/views/resolve/_holding.html.erb
272
+ - app/views/resolve/_service_errors.html.erb
273
+ - app/views/resolve/_citation.html.erb
274
+ - app/views/resolve/_coins.html.erb
275
+ - app/views/resolve/_api_in_progress.xml.erb
276
+ - app/views/testing/index.html.erb
277
+ - app/views/umlaut/error.html.erb
278
+ - app/views/umlaut/README
279
+ - app/views/layouts/umlaut.html.erb
280
+ - app/helpers/emailer_helper.rb
281
+ - app/helpers/application_helper.rb
282
+ - app/helpers/export_email_helper.rb
283
+ - app/helpers/umlaut/html_head_helper.rb
284
+ - app/helpers/umlaut/footer_helper.rb
285
+ - app/helpers/umlaut/url_generation.rb
286
+ - app/helpers/umlaut/helper.rb
287
+ - app/helpers/open_search_helper.rb
288
+ - app/helpers/resolve_helper.rb
289
+ - app/helpers/search_helper.rb
290
+ - db/seeds.rb
291
+ - db/migrate/01_umlaut_init.rb
292
+ - db/orig_fixed_data/service_type_values.yml
293
+ - lib/opensearch_query.rb
294
+ - lib/referent_filters/dissertation_catch.rb
295
+ - lib/referent_filter.rb
296
+ - lib/section_renderer.rb
297
+ - lib/hip3/receipt.rb
298
+ - lib/hip3/custom_field_lookup.rb
299
+ - lib/hip3/serial_copy.rb
300
+ - lib/hip3/bib_searcher.rb
301
+ - lib/hip3/holding.rb
302
+ - lib/hip3/item.rb
303
+ - lib/hip3/bib.rb
304
+ - lib/CronTab.rb
305
+ - lib/marc_helper.rb
306
+ - lib/opensearch_feed.rb
307
+ - lib/exlibris/primo_ws.rb
308
+ - lib/exlibris/primo/source/aleph.rb
309
+ - lib/exlibris/primo/source/distribution/nyu_aleph.rb
310
+ - lib/exlibris/primo/toc.rb
311
+ - lib/exlibris/primo/holding.rb
312
+ - lib/exlibris/primo/searcher.rb
313
+ - lib/exlibris/primo/rsrc.rb
314
+ - lib/exlibris/aleph/record.rb
315
+ - lib/exlibris/aleph/rest_api.rb
316
+ - lib/exlibris/aleph/patron.rb
317
+ - lib/holding.rb
318
+ - lib/umlaut_configurable.rb
319
+ - lib/umlaut/routes.rb
320
+ - lib/umlaut/version.rb
321
+ - lib/umlaut/default_configuration.rb
322
+ - lib/umlaut.rb
323
+ - lib/service.rb
324
+ - lib/service_adaptors/jcr.rb
325
+ - lib/service_adaptors/email_export.rb
326
+ - lib/service_adaptors/request_to_fixture.rb
327
+ - lib/service_adaptors/isi.rb
328
+ - lib/service_adaptors/primo_service.rb
329
+ - lib/service_adaptors/open_library.rb
330
+ - lib/service_adaptors/elsevier_cover.rb
331
+ - lib/service_adaptors/ulrichs_link.rb
332
+ - lib/service_adaptors/ulrichs_cover.rb
333
+ - lib/service_adaptors/scopus.rb
334
+ - lib/service_adaptors/sfx-new.rb
335
+ - lib/service_adaptors/hip3_service.rb
336
+ - lib/service_adaptors/amazon.rb
337
+ - lib/service_adaptors/worldcat_identities.rb
338
+ - lib/service_adaptors/primo_source.rb
339
+ - lib/service_adaptors/internet_archive.rb
340
+ - lib/service_adaptors/ezproxy.rb
341
+ - lib/service_adaptors/sfx.rb
342
+ - lib/service_adaptors/pubmed.rb
343
+ - lib/service_adaptors/ajax_export.rb
344
+ - lib/service_adaptors/blacklight.rb
345
+ - lib/service_adaptors/sfx_backchannel_record.rb
346
+ - lib/service_adaptors/bx.rb
347
+ - lib/service_adaptors/open_library_cover.rb
348
+ - lib/service_adaptors/worldcat.rb
349
+ - lib/service_adaptors/cover_thing.rb
350
+ - lib/service_adaptors/isbn_db.rb
351
+ - lib/service_adaptors/txt_holding_export.rb
352
+ - lib/service_adaptors/google_book_search.rb
353
+ - lib/service_adaptors/hip_holding_search.rb
354
+ - lib/service_adaptors/gpo.rb
355
+ - lib/service_adaptors/book_finder.rb
356
+ - lib/service_adaptors/hathi_trust.rb
357
+ - lib/service_adaptors/opac.rb
358
+ - lib/xml_schema_helper.rb
359
+ - lib/metadata_helper.rb
360
+ - lib/generators/templates/umlaut_services.yml
361
+ - lib/generators/umlaut/install_generator.rb
362
+ - lib/generators/umlaut/asset_hooks_generator.rb
363
+ - lib/umlaut_http.rb
364
+ - lib/aws_product_sign.rb
365
+ - lib/tasks/umlaut.rake
366
+ - LICENSE
367
+ - Rakefile
368
+ - README.md
369
+ - test/dummy/tmp/cache/assets/E0B/4B0/sprockets%2F7988df51a61c81ce6ede4a2d4c8cce4f
370
+ - test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe47e28558116fb5f8038754e60d1961d
371
+ - test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1
372
+ - test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
373
+ - test/dummy/tmp/cache/assets/D9B/770/sprockets%2F8aacf02eb7dbb0949704b28f27b87e0b
374
+ - test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
375
+ - test/dummy/tmp/cache/assets/D50/A30/sprockets%2F7d8b294ac433db5d056538f8cf7c66b9
376
+ - test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
377
+ - test/dummy/tmp/cache/assets/E03/570/sprockets%2F493bdc0ac14cd4f57fdfe4253f992bde
378
+ - test/dummy/tmp/cache/assets/D42/C20/sprockets%2Fbcf14e437b1582bf93b77670acf8e090
379
+ - test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
380
+ - test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
381
+ - test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
382
+ - test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384
383
+ - test/dummy/tmp/cache/assets/D7A/E40/sprockets%2F9622ffcc499a57627cd1bb18fe31b8e4
384
+ - test/dummy/tmp/cache/assets/CBB/9C0/sprockets%2F706f28923fb754cad04b9107c89986a1
385
+ - test/dummy/tmp/cache/assets/D71/6B0/sprockets%2Fde558b71b494cf09b1bf055c8dff0353
386
+ - test/dummy/tmp/cache/assets/DF7/F30/sprockets%2F7bc16c4109b17fabe29f8ddbbf732d1c
387
+ - test/dummy/tmp/cache/assets/CAA/EB0/sprockets%2F1d179210e8b76f1ea63c802688a015e4
388
+ - test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4
389
+ - test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
390
+ - test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
391
+ - test/dummy/tmp/cache/assets/D22/060/sprockets%2F9aec77b768e91a802d284271c58e2f7e
392
+ - test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
393
+ - test/dummy/tmp/cache/assets/D76/AD0/sprockets%2Fe2158cde93188cf5ab6457bc6d6602ec
394
+ - test/dummy/tmp/cache/assets/D72/610/sprockets%2Fa8c708eeb30ef93de34d755d4f45d023
395
+ - test/dummy/tmp/cache/assets/CF6/F20/sprockets%2F5b2ffa1103079dfd555197838f87a99f
396
+ - test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7
397
+ - test/dummy/tmp/cache/assets/C73/920/sprockets%2Fd371318f22900492fd180f17c5e2a504
398
+ - test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf
399
+ - test/dummy/tmp/cache/assets/D33/6D0/sprockets%2F500129c57f1146e556ec3aacd6cd38c1
400
+ - test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
401
+ - test/dummy/tmp/cache/assets/D65/590/sprockets%2Fc1bb92fc3406a126b7dd302edc96d629
402
+ - test/dummy/app/controllers/application_controller.rb
403
+ - test/dummy/app/controllers/umlaut_controller.rb
404
+ - test/dummy/app/assets/javascripts/application.js
405
+ - test/dummy/app/assets/stylesheets/application.css
406
+ - test/dummy/app/views/layouts/application.html.erb
407
+ - test/dummy/app/helpers/application_helper.rb
408
+ - test/dummy/public/404.html
409
+ - test/dummy/public/422.html
410
+ - test/dummy/public/favicon.ico
411
+ - test/dummy/public/500.html
412
+ - test/dummy/config/environments/development.rb
413
+ - test/dummy/config/environments/production.rb
414
+ - test/dummy/config/environments/test.rb
415
+ - test/dummy/config/application.rb
416
+ - test/dummy/config/environment.rb
417
+ - test/dummy/config/database.yml
418
+ - test/dummy/config/umlaut_services.yml
419
+ - test/dummy/config/routes.rb
420
+ - test/dummy/config/locales/en.yml
421
+ - test/dummy/config/boot.rb
422
+ - test/dummy/config/initializers/inflections.rb
423
+ - test/dummy/config/initializers/backtrace_silencers.rb
424
+ - test/dummy/config/initializers/wrap_parameters.rb
425
+ - test/dummy/config/initializers/mime_types.rb
426
+ - test/dummy/config/initializers/session_store.rb
427
+ - test/dummy/config/initializers/secret_token.rb
428
+ - test/dummy/config/database-jhu.yml
429
+ - test/dummy/Rakefile
430
+ - test/dummy/script/rails
431
+ - test/dummy/config.ru
432
+ - test/dummy/db/schema.rb
433
+ - test/dummy/db/migrate/20111228211210_umlaut_init.rb
434
+ - test/dummy/log/production.log
435
+ - test/dummy/log/development.log
436
+ - test/performance/browsing_test.rb
437
+ - test/unit/aleph_record_benchmarks.rb
438
+ - test/unit/aws_product_sign_test.rb
439
+ - test/unit/service_test.rb
440
+ - test/unit/aleph_patron_test.rb
441
+ - test/unit/primo_ws_test.rb
442
+ - test/unit/primo_searcher_test.rb
443
+ - test/unit/aleph_record_test.rb
444
+ - test/unit/collection_test.rb
445
+ - test/unit/service_response_test.rb
446
+ - test/unit/google_book_search_test.rb
447
+ - test/unit/primo_service_test.rb
448
+ - test/umlaut_test.rb
449
+ - test/test_helper.rb
450
+ - test/fixtures/requests.yml
451
+ - test/fixtures/dispatched_services.yml
452
+ - test/fixtures/permalinks.yml
453
+ - test/fixtures/referents.yml
454
+ - test/fixtures/service_responses.yml
455
+ - test/fixtures/referent_values.yml
456
+ - test/fixtures/sfx_urls.yml
457
+ homepage: https://github.com/team-umlaut/umlaut
458
+ licenses: []
459
+
460
+ post_install_message:
461
+ rdoc_options: []
462
+
463
+ require_paths:
464
+ - lib
465
+ required_ruby_version: !ruby/object:Gem::Requirement
466
+ none: false
467
+ requirements:
468
+ - - ">="
469
+ - !ruby/object:Gem::Version
470
+ hash: 3
471
+ segments:
472
+ - 0
473
+ version: "0"
474
+ required_rubygems_version: !ruby/object:Gem::Requirement
475
+ none: false
476
+ requirements:
477
+ - - ">"
478
+ - !ruby/object:Gem::Version
479
+ hash: 25
480
+ segments:
481
+ - 1
482
+ - 3
483
+ - 1
484
+ version: 1.3.1
485
+ requirements: []
486
+
487
+ rubyforge_project:
488
+ rubygems_version: 1.8.12
489
+ signing_key:
490
+ specification_version: 3
491
+ summary: For Libraries, a just-in-time last-mile service aggregator, taking OpenURL input
492
+ test_files:
493
+ - test/dummy/tmp/cache/assets/E0B/4B0/sprockets%2F7988df51a61c81ce6ede4a2d4c8cce4f
494
+ - test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe47e28558116fb5f8038754e60d1961d
495
+ - test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1
496
+ - test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
497
+ - test/dummy/tmp/cache/assets/D9B/770/sprockets%2F8aacf02eb7dbb0949704b28f27b87e0b
498
+ - test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
499
+ - test/dummy/tmp/cache/assets/D50/A30/sprockets%2F7d8b294ac433db5d056538f8cf7c66b9
500
+ - test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
501
+ - test/dummy/tmp/cache/assets/E03/570/sprockets%2F493bdc0ac14cd4f57fdfe4253f992bde
502
+ - test/dummy/tmp/cache/assets/D42/C20/sprockets%2Fbcf14e437b1582bf93b77670acf8e090
503
+ - test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
504
+ - test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
505
+ - test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
506
+ - test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384
507
+ - test/dummy/tmp/cache/assets/D7A/E40/sprockets%2F9622ffcc499a57627cd1bb18fe31b8e4
508
+ - test/dummy/tmp/cache/assets/CBB/9C0/sprockets%2F706f28923fb754cad04b9107c89986a1
509
+ - test/dummy/tmp/cache/assets/D71/6B0/sprockets%2Fde558b71b494cf09b1bf055c8dff0353
510
+ - test/dummy/tmp/cache/assets/DF7/F30/sprockets%2F7bc16c4109b17fabe29f8ddbbf732d1c
511
+ - test/dummy/tmp/cache/assets/CAA/EB0/sprockets%2F1d179210e8b76f1ea63c802688a015e4
512
+ - test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4
513
+ - test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
514
+ - test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
515
+ - test/dummy/tmp/cache/assets/D22/060/sprockets%2F9aec77b768e91a802d284271c58e2f7e
516
+ - test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
517
+ - test/dummy/tmp/cache/assets/D76/AD0/sprockets%2Fe2158cde93188cf5ab6457bc6d6602ec
518
+ - test/dummy/tmp/cache/assets/D72/610/sprockets%2Fa8c708eeb30ef93de34d755d4f45d023
519
+ - test/dummy/tmp/cache/assets/CF6/F20/sprockets%2F5b2ffa1103079dfd555197838f87a99f
520
+ - test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7
521
+ - test/dummy/tmp/cache/assets/C73/920/sprockets%2Fd371318f22900492fd180f17c5e2a504
522
+ - test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf
523
+ - test/dummy/tmp/cache/assets/D33/6D0/sprockets%2F500129c57f1146e556ec3aacd6cd38c1
524
+ - test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
525
+ - test/dummy/tmp/cache/assets/D65/590/sprockets%2Fc1bb92fc3406a126b7dd302edc96d629
526
+ - test/dummy/app/controllers/application_controller.rb
527
+ - test/dummy/app/controllers/umlaut_controller.rb
528
+ - test/dummy/app/assets/javascripts/application.js
529
+ - test/dummy/app/assets/stylesheets/application.css
530
+ - test/dummy/app/views/layouts/application.html.erb
531
+ - test/dummy/app/helpers/application_helper.rb
532
+ - test/dummy/public/404.html
533
+ - test/dummy/public/422.html
534
+ - test/dummy/public/favicon.ico
535
+ - test/dummy/public/500.html
536
+ - test/dummy/config/environments/development.rb
537
+ - test/dummy/config/environments/production.rb
538
+ - test/dummy/config/environments/test.rb
539
+ - test/dummy/config/application.rb
540
+ - test/dummy/config/environment.rb
541
+ - test/dummy/config/database.yml
542
+ - test/dummy/config/umlaut_services.yml
543
+ - test/dummy/config/routes.rb
544
+ - test/dummy/config/locales/en.yml
545
+ - test/dummy/config/boot.rb
546
+ - test/dummy/config/initializers/inflections.rb
547
+ - test/dummy/config/initializers/backtrace_silencers.rb
548
+ - test/dummy/config/initializers/wrap_parameters.rb
549
+ - test/dummy/config/initializers/mime_types.rb
550
+ - test/dummy/config/initializers/session_store.rb
551
+ - test/dummy/config/initializers/secret_token.rb
552
+ - test/dummy/config/database-jhu.yml
553
+ - test/dummy/Rakefile
554
+ - test/dummy/script/rails
555
+ - test/dummy/config.ru
556
+ - test/dummy/db/schema.rb
557
+ - test/dummy/db/migrate/20111228211210_umlaut_init.rb
558
+ - test/dummy/log/production.log
559
+ - test/dummy/log/development.log
560
+ - test/performance/browsing_test.rb
561
+ - test/unit/aleph_record_benchmarks.rb
562
+ - test/unit/aws_product_sign_test.rb
563
+ - test/unit/service_test.rb
564
+ - test/unit/aleph_patron_test.rb
565
+ - test/unit/primo_ws_test.rb
566
+ - test/unit/primo_searcher_test.rb
567
+ - test/unit/aleph_record_test.rb
568
+ - test/unit/collection_test.rb
569
+ - test/unit/service_response_test.rb
570
+ - test/unit/google_book_search_test.rb
571
+ - test/unit/primo_service_test.rb
572
+ - test/umlaut_test.rb
573
+ - test/test_helper.rb
574
+ - test/fixtures/requests.yml
575
+ - test/fixtures/dispatched_services.yml
576
+ - test/fixtures/permalinks.yml
577
+ - test/fixtures/referents.yml
578
+ - test/fixtures/service_responses.yml
579
+ - test/fixtures/referent_values.yml
580
+ - test/fixtures/sfx_urls.yml