iqvoc 3.2.3
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.
- data/Gemfile +69 -0
- data/Gemfile.lock +134 -0
- data/LICENSE +13 -0
- data/README.md +68 -0
- data/Rakefile +23 -0
- data/app/controllers/application_controller.rb +125 -0
- data/app/controllers/collections/hierarchical_controller.rb +44 -0
- data/app/controllers/collections_controller.rb +124 -0
- data/app/controllers/concepts/alphabetical_controller.rb +39 -0
- data/app/controllers/concepts/hierarchical_controller.rb +74 -0
- data/app/controllers/concepts/untranslated_controller.rb +38 -0
- data/app/controllers/concepts/versions_controller.rb +119 -0
- data/app/controllers/concepts_controller.rb +174 -0
- data/app/controllers/dashboard_controller.rb +43 -0
- data/app/controllers/pages_controller.rb +22 -0
- data/app/controllers/rdf_controller.rb +43 -0
- data/app/controllers/search_results_controller.rb +101 -0
- data/app/controllers/triple_store_syncs_controller.rb +45 -0
- data/app/controllers/user_sessions_controller.rb +48 -0
- data/app/controllers/users_controller.rb +81 -0
- data/app/helpers/application_helper.rb +60 -0
- data/app/helpers/concepts_helper.rb +86 -0
- data/app/helpers/dashboard_helper.rb +46 -0
- data/app/helpers/rdf_helper.rb +63 -0
- data/app/helpers/search_results_helper.rb +32 -0
- data/app/models/collection/base.rb +161 -0
- data/app/models/collection/member/base.rb +23 -0
- data/app/models/collection/member/collection.rb +33 -0
- data/app/models/collection/member/concept.rb +33 -0
- data/app/models/collection/unordered.rb +18 -0
- data/app/models/concept/base.rb +418 -0
- data/app/models/concept/relation/base.rb +95 -0
- data/app/models/concept/relation/reverse_relation_extension.rb +49 -0
- data/app/models/concept/relation/skos/base.rb +37 -0
- data/app/models/concept/relation/skos/broader/base.rb +41 -0
- data/app/models/concept/relation/skos/broader/mono.rb +28 -0
- data/app/models/concept/relation/skos/broader/poly.rb +23 -0
- data/app/models/concept/relation/skos/narrower/base.rb +37 -0
- data/app/models/concept/relation/skos/related.rb +21 -0
- data/app/models/concept/skos/base.rb +28 -0
- data/app/models/label/base.rb +98 -0
- data/app/models/label/skos/base.rb +27 -0
- data/app/models/labeling/base.rb +81 -0
- data/app/models/labeling/skos/alt_label.rb +21 -0
- data/app/models/labeling/skos/base.rb +99 -0
- data/app/models/labeling/skos/hidden_label.rb +25 -0
- data/app/models/labeling/skos/pref_label.rb +30 -0
- data/app/models/match/base.rb +57 -0
- data/app/models/match/skos/base.rb +23 -0
- data/app/models/match/skos/broad_match.rb +21 -0
- data/app/models/match/skos/close_match.rb +21 -0
- data/app/models/match/skos/exact_match.rb +21 -0
- data/app/models/match/skos/mapping_relation.rb +21 -0
- data/app/models/match/skos/narrow_match.rb +21 -0
- data/app/models/match/skos/related_match.rb +21 -0
- data/app/models/note/annotated/base.rb +29 -0
- data/app/models/note/base.rb +127 -0
- data/app/models/note/skos/base.rb +52 -0
- data/app/models/note/skos/change_note.rb +38 -0
- data/app/models/note/skos/definition.rb +33 -0
- data/app/models/note/skos/editorial_note.rb +21 -0
- data/app/models/note/skos/example.rb +21 -0
- data/app/models/note/skos/history_note.rb +21 -0
- data/app/models/note/skos/scope_note.rb +21 -0
- data/app/models/origin_mapping.rb +58 -0
- data/app/models/rdf_store.rb +96 -0
- data/app/models/search_extension.rb +58 -0
- data/app/models/user.rb +49 -0
- data/app/models/user_session.rb +23 -0
- data/app/views/collections/_collection.html.erb +10 -0
- data/app/views/collections/_form.html.erb +47 -0
- data/app/views/collections/edit.html.erb +11 -0
- data/app/views/collections/index.html.erb +12 -0
- data/app/views/collections/new.html.erb +7 -0
- data/app/views/collections/show.html.erb +53 -0
- data/app/views/collections/show.iqrdf +22 -0
- data/app/views/concepts/_base_data.html.erb +72 -0
- data/app/views/concepts/_close_match.html.erb +16 -0
- data/app/views/concepts/_show_head.html.erb +23 -0
- data/app/views/concepts/_visualization.html.erb +9 -0
- data/app/views/concepts/alphabetical/_pref_labeling.html.erb +6 -0
- data/app/views/concepts/alphabetical/index.html.erb +17 -0
- data/app/views/concepts/edit.html.erb +32 -0
- data/app/views/concepts/hierarchical/_treeview.html.erb +20 -0
- data/app/views/concepts/hierarchical/index.html.erb +5 -0
- data/app/views/concepts/index.iqrdf +24 -0
- data/app/views/concepts/new.html.erb +3 -0
- data/app/views/concepts/show_published.html.erb +16 -0
- data/app/views/concepts/show_unpublished.html.erb +43 -0
- data/app/views/concepts/untranslated/index.html.erb +23 -0
- data/app/views/dashboard/index.html.erb +47 -0
- data/app/views/errors/access_denied.html.erb +3 -0
- data/app/views/errors/multiple_choices.html.erb +11 -0
- data/app/views/errors/not_found.html.erb +8 -0
- data/app/views/kaminari/_page.html.erb +6 -0
- data/app/views/kaminari/_paginator.html.erb +15 -0
- data/app/views/layouts/_controls.html.erb +37 -0
- data/app/views/layouts/_header.html.erb +1 -0
- data/app/views/layouts/_navigation.html.erb +27 -0
- data/app/views/layouts/_sections.html.erb +8 -0
- data/app/views/layouts/application.html.erb +83 -0
- data/app/views/pages/about.html.erb +77 -0
- data/app/views/partials/_rdf_logo.html.erb +4 -0
- data/app/views/partials/collection/_member.html.erb +14 -0
- data/app/views/partials/collection_label/_search_result.html.erb +5 -0
- data/app/views/partials/concept/_edit_link_base.html.erb +4 -0
- data/app/views/partials/concept/_inline_base.html.erb +4 -0
- data/app/views/partials/concept/_new_link_base.html.erb +4 -0
- data/app/views/partials/concept/relation/_base.html.erb +8 -0
- data/app/views/partials/concept/relation/_edit_base.html.erb +15 -0
- data/app/views/partials/concept/relation/skos/_narrower.html.erb +12 -0
- data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +28 -0
- data/app/views/partials/concept/relation/skos/broader/_poly.html.erb +14 -0
- data/app/views/partials/labeling/skos/_base.html.erb +17 -0
- data/app/views/partials/labeling/skos/_edit_base.html.erb +7 -0
- data/app/views/partials/labeling/skos/_search_result.html.erb +12 -0
- data/app/views/partials/match/_base.html.erb +13 -0
- data/app/views/partials/match/_edit_base.html.erb +6 -0
- data/app/views/partials/note/_base.html.erb +15 -0
- data/app/views/partials/note/_edit_base.html.erb +28 -0
- data/app/views/partials/note/_note.html.erb +14 -0
- data/app/views/partials/note/_search_result.html.erb +8 -0
- data/app/views/partials/note/skos/_edit_change_note.html.erb +47 -0
- data/app/views/partials/note/skos/definition/_search_result.html.erb +8 -0
- data/app/views/rdf/show_concept.iqrdf +5 -0
- data/app/views/search_results/_head_contents.html.erb +4 -0
- data/app/views/search_results/_rdf_links.html.erb +4 -0
- data/app/views/search_results/index.html.erb +92 -0
- data/app/views/search_results/index.iqrdf +33 -0
- data/app/views/triple_store_syncs/new.html.erb +7 -0
- data/app/views/user_sessions/new.html.erb +11 -0
- data/app/views/users/_form.html.erb +45 -0
- data/app/views/users/_user_preference.html.erb +12 -0
- data/app/views/users/edit.html.erb +14 -0
- data/app/views/users/index.html.erb +29 -0
- data/app/views/users/new.html.erb +13 -0
- data/config/application.rb +82 -0
- data/config/boot.rb +29 -0
- data/config/database.template.yml +43 -0
- data/config/database.yml +40 -0
- data/config/deploy/common.rb +79 -0
- data/config/deploy/ec2.rb +43 -0
- data/config/deploy/history.rb +29 -0
- data/config/deploy/innoq.rb +37 -0
- data/config/deploy.rb +72 -0
- data/config/engine.rb +25 -0
- data/config/environment.rb +21 -0
- data/config/environments/development.rb +74 -0
- data/config/environments/production.rb +65 -0
- data/config/environments/production.template.rb +65 -0
- data/config/environments/production_internal.rb +65 -0
- data/config/environments/test.rb +51 -0
- data/config/initializers/action_view.rb +23 -0
- data/config/initializers/active_record.rb +18 -0
- data/config/initializers/backtrace_silencers.rb +23 -0
- data/config/initializers/inflections.rb +26 -0
- data/config/initializers/iqvoc.rb +50 -0
- data/config/initializers/jdbc.rb +23 -0
- data/config/initializers/kaminari_config.rb +8 -0
- data/config/initializers/language.rb +6 -0
- data/config/initializers/mime_types.rb +24 -0
- data/config/initializers/secret_token.rb +29 -0
- data/config/initializers/secret_token.rb.template +29 -0
- data/config/initializers/session_store.rb +24 -0
- data/config/locales/activerecord.de.yml +135 -0
- data/config/locales/activerecord.en.yml +135 -0
- data/config/locales/authlogic.de.yml +38 -0
- data/config/locales/authlogic.en.yml +38 -0
- data/config/locales/de.yml +326 -0
- data/config/locales/defaults.de.yml +153 -0
- data/config/locales/en.yml +332 -0
- data/config/routes.rb +53 -0
- data/config/warble.rb +158 -0
- data/db/iqvoc_test.sqlite3 +0 -0
- data/db/migrate/20100927101502_create_schema.rb +174 -0
- data/db/migrate/20101125141218_add_collection_tables.rb +32 -0
- data/db/migrate/20101129161528_add_type_to_collections.rb +24 -0
- data/db/migrate/20101202094602_add_origin_to_collections.rb +25 -0
- data/db/migrate/20101202135420_rename_collection_contents_to_collection_members.rb +25 -0
- data/db/migrate/20101208103531_add_type_to_collection_contents.rb +27 -0
- data/db/migrate/20101210153916_add_indexes_to_collections.rb +25 -0
- data/db/migrate/20110204121244_create_collection_labels.rb +32 -0
- data/db/migrate/20110208084250_change_origin_lengths.rb +27 -0
- data/db/migrate/20110328124300_discard_collection_specifics.rb +27 -0
- data/db/migrate/20110408120357_remove_classifications_and_classifiers.rb +32 -0
- data/db/migrate/20110408120740_remove_xl_specfic_stuff.rb +39 -0
- data/db/migrate/20110420133640_change_value_in_notes.rb +8 -0
- data/db/migrate/20110427120534_add_published_at_to_labels.rb +9 -0
- data/db/migrate/20110510162719_use_mono_hierarchy_instead_of_poly_hierarchy.rb +13 -0
- data/db/migrate/20110512132624_extend_notes_value_field_length.rb +8 -0
- data/db/migrate/20110525103100_separate_note_annotation_predicates.rb +38 -0
- data/db/migrate/20110615134040_change_umt_note_annotations_to_dct.rb +9 -0
- data/db/schema.rb +127 -0
- data/db/seeds.rb +37 -0
- data/iqvoc.gemspec +27 -0
- data/lib/engine_tasks/assets.rake +49 -0
- data/lib/engine_tasks/db.rake +18 -0
- data/lib/engine_tasks/release.rake +118 -0
- data/lib/iqvoc/ability.rb +44 -0
- data/lib/iqvoc/data_helper.rb +27 -0
- data/lib/iqvoc/deep_cloning.rb +92 -0
- data/lib/iqvoc/rdf_helper.rb +67 -0
- data/lib/iqvoc/skos_importer.rb +144 -0
- data/lib/iqvoc/version.rb +19 -0
- data/lib/iqvoc/versioning.rb +151 -0
- data/lib/iqvoc.rb +228 -0
- data/lib/maker.rb +144 -0
- data/lib/ojdbc14.jar +0 -0
- data/lib/string.rb +23 -0
- data/lib/tasks/importer.rake +16 -0
- data/lib/tasks/jdbc.rake +24 -0
- data/public/404.html +26 -0
- data/public/422.html +26 -0
- data/public/500.html +26 -0
- data/public/favicon.ico +0 -0
- data/public/images/iqvoc/add.png +0 -0
- data/public/images/iqvoc/arrow_down.gif +0 -0
- data/public/images/iqvoc/arrow_up.gif +0 -0
- data/public/images/iqvoc/footer.png +0 -0
- data/public/images/iqvoc/go_there.png +0 -0
- data/public/images/iqvoc/header.png +0 -0
- data/public/images/iqvoc/header_long.png +0 -0
- data/public/images/iqvoc/iqvoc.png +0 -0
- data/public/images/iqvoc/note_add.png +0 -0
- data/public/images/iqvoc/note_delete.png +0 -0
- data/public/images/iqvoc/note_edit.png +0 -0
- data/public/images/iqvoc/ok.png +0 -0
- data/public/images/iqvoc/rails.png +0 -0
- data/public/images/iqvoc/rdf_flyer.gif +0 -0
- data/public/images/iqvoc/red_arrow.png +0 -0
- data/public/images/iqvoc/remove.png +0 -0
- data/public/images/iqvoc/shadow.png +0 -0
- data/public/images/iqvoc/spinner.gif +0 -0
- data/public/images/iqvoc/tokenizer_delete.png +0 -0
- data/public/images/iqvoc/tokenizer_pencile.png +0 -0
- data/public/images/iqvoc/tokenizer_show.png +0 -0
- data/public/images/iqvoc/unfinished.png +0 -0
- data/public/javascripts/iqvoc/application.js +123 -0
- data/public/javascripts/iqvoc/entityselect.js +121 -0
- data/public/javascripts/iqvoc/excanvas.js +35 -0
- data/public/javascripts/iqvoc/iqvoc.js +118 -0
- data/public/javascripts/iqvoc/jit_rgraph.js +153 -0
- data/public/javascripts/iqvoc/jquery-1.6.2.min.js +18 -0
- data/public/javascripts/iqvoc/jquery-treeview/changelog.txt +29 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/async.html +44 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/bg.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/demo.js +43 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/images.html +56 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/index.html +340 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/large.html +559 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/prerendered.html +621 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/screen.css +24 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/simple.html +82 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/source.php +87 -0
- data/public/javascripts/iqvoc/jquery-treeview/demo/source.phps +87 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/ajax-loader.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/file.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/folder-closed.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/folder.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/minus.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/plus.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-black-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-black.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-default-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-default.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-famfamfam-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-famfamfam.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-gray-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-gray.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-red-line.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/images/treeview-red.gif +0 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.async.js +82 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.css +75 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.js +251 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.min.js +15 -0
- data/public/javascripts/iqvoc/jquery-treeview/jquery.treeview.pack.js +16 -0
- data/public/javascripts/iqvoc/jquery-treeview/lib/jquery.cookie.js +92 -0
- data/public/javascripts/iqvoc/jquery-treeview/lib/jquery.js +3363 -0
- data/public/javascripts/iqvoc/jquery-treeview/todo +8 -0
- data/public/javascripts/iqvoc/jquery-ui-1.8.13.custom.js +3229 -0
- data/public/javascripts/iqvoc/jquery-ui-1.8.13.custom.min.js +163 -0
- data/public/javascripts/iqvoc/jquery-ui.datepicker-de.js +22 -0
- data/public/javascripts/iqvoc/json2.js +480 -0
- data/public/javascripts/iqvoc/langselect.js +73 -0
- data/public/javascripts/iqvoc/rails.js +132 -0
- data/public/javascripts/iqvoc/storage.js +122 -0
- data/public/javascripts/iqvoc/visualization.js +321 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/iqvoc/blueprint/ie.css +35 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/key.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/readme.txt +32 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/buttons/screen.css +97 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/fancy-type/screen.css +71 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/readme.txt +18 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/link-icons/screen.css +40 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/rtl/readme.txt +10 -0
- data/public/stylesheets/iqvoc/blueprint/plugins/rtl/screen.css +110 -0
- data/public/stylesheets/iqvoc/blueprint/print.css +29 -0
- data/public/stylesheets/iqvoc/blueprint/screen.css +258 -0
- data/public/stylesheets/iqvoc/blueprint/src/forms.css +65 -0
- data/public/stylesheets/iqvoc/blueprint/src/grid.css +280 -0
- data/public/stylesheets/iqvoc/blueprint/src/grid.png +0 -0
- data/public/stylesheets/iqvoc/blueprint/src/ie.css +76 -0
- data/public/stylesheets/iqvoc/blueprint/src/print.css +85 -0
- data/public/stylesheets/iqvoc/blueprint/src/reset.css +45 -0
- data/public/stylesheets/iqvoc/blueprint/src/typography.css +106 -0
- data/public/stylesheets/iqvoc/forms.css +71 -0
- data/public/stylesheets/iqvoc/images/back.png +0 -0
- data/public/stylesheets/iqvoc/images/branch.png +0 -0
- data/public/stylesheets/iqvoc/images/categ.png +0 -0
- data/public/stylesheets/iqvoc/images/categ_open.png +0 -0
- data/public/stylesheets/iqvoc/images/go_there.png +0 -0
- data/public/stylesheets/iqvoc/images/iqvoc.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_end.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_end_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_mid.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_mid_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_nothing.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_only.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_only_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_top.png +0 -0
- data/public/stylesheets/iqvoc/images/leaf_top_filled.png +0 -0
- data/public/stylesheets/iqvoc/images/nothing.png +0 -0
- data/public/stylesheets/iqvoc/images/top_01.png +0 -0
- data/public/stylesheets/iqvoc/images/trunk.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_217bc0_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_469bdd_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_6da8d5_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/public/stylesheets/iqvoc/images/ui-icons_f9bd01_256x240.png +0 -0
- data/public/stylesheets/iqvoc/iqvoc.css +477 -0
- data/public/stylesheets/iqvoc/jquery-ui-1.8.13.custom.css +415 -0
- data/public/stylesheets/iqvoc/widgets.css +81 -0
- data/test/factories.rb +74 -0
- data/test/integration/alphabetical_test.rb +53 -0
- data/test/integration/authentication_test.rb +41 -0
- data/test/integration/browse_concepts_and_labels_test.rb +61 -0
- data/test/integration/browse_static_pages_test.rb +29 -0
- data/test/integration/client_augmentation_test.rb +42 -0
- data/test/integration/client_edit_concept_test.rb +72 -0
- data/test/integration/collection_circularity_test.rb +110 -0
- data/test/integration/concept_test.rb +61 -0
- data/test/integration/edit_concepts_test.rb +40 -0
- data/test/integration/note_annotations_test.rb +86 -0
- data/test/integration/search_test.rb +205 -0
- data/test/integration/tree_test.rb +31 -0
- data/test/integration/untranslated_test.rb +60 -0
- data/test/integration_test_helper.rb +45 -0
- data/test/performance/browsing_test.rb +25 -0
- data/test/test_helper.rb +29 -0
- data/test/unit/concept_test.rb +93 -0
- data/test/unit/note_test.rb +32 -0
- data/test/unit/origin_mapping_test.rb +70 -0
- data/test/unit/skos_import_test.rb +100 -0
- metadata +522 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'test_helper'
|
|
18
|
+
require 'integration_test_helper'
|
|
19
|
+
|
|
20
|
+
class BrowseConceptsAndLabelsTest < ActionDispatch::IntegrationTest
|
|
21
|
+
|
|
22
|
+
setup do
|
|
23
|
+
@concepts = [
|
|
24
|
+
[:en, "Tree"],
|
|
25
|
+
[:en, "Forest"],
|
|
26
|
+
[:de, "Baum"],
|
|
27
|
+
[:de, "Forst"]
|
|
28
|
+
].map { |lang, text|
|
|
29
|
+
FactoryGirl.create(:concept, :pref_labelings => [Factory(:pref_labeling, :target => Factory(:pref_label, :language => lang, :value => text))])
|
|
30
|
+
}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test "Selecting a concept in alphabetical view" do
|
|
34
|
+
letter = "T" # => Only the "Tree" should show up in the english version
|
|
35
|
+
visit alphabetical_concepts_path(:lang => 'en', :letter => letter, :format => :html)
|
|
36
|
+
assert page.has_link?(@concepts[0].pref_label.to_s),
|
|
37
|
+
"Concept '#{@concepts[0].pref_label}' not found on alphabetical concepts list (letter: #{letter})"
|
|
38
|
+
assert !page.has_content?(@concepts[1].pref_label.to_s),
|
|
39
|
+
"Found concept '#{@concepts[1].pref_label}' on alphabetical concepts list (letter: #{letter})"
|
|
40
|
+
click_link_or_button(@concepts[0].pref_label.to_s)
|
|
41
|
+
assert_equal concept_path(@concepts[0], :lang => 'en', :format => :html), URI.parse(current_url).path
|
|
42
|
+
|
|
43
|
+
letter = "F" # => Only the "Forest" should show up in the english version
|
|
44
|
+
visit alphabetical_concepts_path(:lang => 'en', :letter => letter, :format => :html)
|
|
45
|
+
assert page.has_link?("Forest")
|
|
46
|
+
assert !page.has_link?("Forst")
|
|
47
|
+
assert !page.has_link?("Tree")
|
|
48
|
+
assert !page.has_link?("Baum")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
test "Showing a concept page" do
|
|
52
|
+
visit concept_url(@concepts[1], :lang => 'en')
|
|
53
|
+
assert page.has_content?("#{@concepts[1].pref_label}"),
|
|
54
|
+
"'Preferred label: #{@concepts[1].pref_label}' missing in concepts#show"
|
|
55
|
+
assert page.has_link?('Turtle'), "RDF link missing in concepts#show"
|
|
56
|
+
click_link_or_button('Turtle')
|
|
57
|
+
assert page.has_content?(":#{@concepts[1].origin} a skos:Concept"),
|
|
58
|
+
"'#{@concepts[1].origin} a skos:Concept' missing in turtle view"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'test_helper'
|
|
18
|
+
require 'integration_test_helper'
|
|
19
|
+
|
|
20
|
+
class BrowseStaticPagesTest < ActionDispatch::IntegrationTest
|
|
21
|
+
|
|
22
|
+
test "Show static pages" do
|
|
23
|
+
visit dashboard_url(:lang => 'de', :format => 'html')
|
|
24
|
+
assert page.has_link?("Über"), "Link 'Über' is missing"
|
|
25
|
+
click_link_or_button("Über")
|
|
26
|
+
assert_equal about_url(:lang => 'de', :format => 'html'), current_url
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'integration_test_helper'
|
|
2
|
+
require 'database_cleaner'
|
|
3
|
+
|
|
4
|
+
DatabaseCleaner.strategy = :truncation
|
|
5
|
+
|
|
6
|
+
class ClientAugmentationTest < ActionDispatch::IntegrationTest
|
|
7
|
+
|
|
8
|
+
self.use_transactional_fixtures = false
|
|
9
|
+
|
|
10
|
+
setup do
|
|
11
|
+
@concept = FactoryGirl.create(:concept, :published_at => nil)
|
|
12
|
+
FactoryGirl.create(:concept, :published_at => nil)
|
|
13
|
+
|
|
14
|
+
Capybara.current_driver = Capybara.javascript_driver
|
|
15
|
+
DatabaseCleaner.start
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
teardown do
|
|
19
|
+
DatabaseCleaner.clean
|
|
20
|
+
Capybara.use_default_driver
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
test "dashboard concept overview" do
|
|
24
|
+
login("administrator")
|
|
25
|
+
visit dashboard_path(:lang => :de)
|
|
26
|
+
|
|
27
|
+
table = page.find("#content table")
|
|
28
|
+
|
|
29
|
+
assert table.has_css?("tr", :count => 3)
|
|
30
|
+
assert table.has_css?("tr.highlightable", :count => 2)
|
|
31
|
+
assert table.has_no_css?("tr.hover")
|
|
32
|
+
|
|
33
|
+
concept_row = table.all("tr")[1]
|
|
34
|
+
|
|
35
|
+
# click row to visit concept page
|
|
36
|
+
concept_row.click
|
|
37
|
+
uri = URI.parse(current_url)
|
|
38
|
+
uri = "%s?%s" % [uri.path, uri.query]
|
|
39
|
+
assert_equal concept_path(@concept, :published => 0, :lang => 'de', :format => 'html'), uri
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'integration_test_helper'
|
|
2
|
+
require 'database_cleaner'
|
|
3
|
+
|
|
4
|
+
DatabaseCleaner.strategy = :truncation
|
|
5
|
+
|
|
6
|
+
class ClientEditConceptsTest < ActionDispatch::IntegrationTest
|
|
7
|
+
|
|
8
|
+
self.use_transactional_fixtures = false
|
|
9
|
+
|
|
10
|
+
setup do
|
|
11
|
+
@concept = FactoryGirl.create(:concept)
|
|
12
|
+
|
|
13
|
+
Capybara.current_driver = Capybara.javascript_driver
|
|
14
|
+
DatabaseCleaner.start
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
teardown do
|
|
18
|
+
DatabaseCleaner.clean
|
|
19
|
+
Capybara.use_default_driver
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
test "dynamic addition of notes" do
|
|
23
|
+
login("administrator")
|
|
24
|
+
|
|
25
|
+
# concept edit view
|
|
26
|
+
visit concept_path(@concept, :lang => "de", :format => "html")
|
|
27
|
+
click_link_or_button("Neue Version erstellen")
|
|
28
|
+
assert page.has_css?("#concept_edit")
|
|
29
|
+
|
|
30
|
+
section = page.find("#label_note_skos_definitions_data")
|
|
31
|
+
assert page.has_css?(".note_relation", :count => Iqvoc::Concept.note_class_names.length)
|
|
32
|
+
assert page.has_css?("#label_note_skos_definitions_data", :count => 1)
|
|
33
|
+
assert section.has_css?("li", :count => 1)
|
|
34
|
+
|
|
35
|
+
# unhide default note input
|
|
36
|
+
section.find("input[type=button]").click
|
|
37
|
+
assert section.has_css?("li", :count => 1)
|
|
38
|
+
|
|
39
|
+
# add another note input
|
|
40
|
+
section.find("input[type=button]").click
|
|
41
|
+
assert section.has_css?("li", :count => 2)
|
|
42
|
+
|
|
43
|
+
# add some note text
|
|
44
|
+
section.fill_in "concept_note_skos_definitions_attributes_0_value",
|
|
45
|
+
:with => "lorem ipsum\ndolor sit amet"
|
|
46
|
+
section.fill_in "concept_note_skos_definitions_attributes_1_value",
|
|
47
|
+
:with => "consectetur adipisicing elit"
|
|
48
|
+
|
|
49
|
+
assert section.all("textarea")[0].value == "lorem ipsum\ndolor sit amet"
|
|
50
|
+
assert section.all("textarea")[1].value == "consectetur adipisicing elit"
|
|
51
|
+
|
|
52
|
+
# save concept
|
|
53
|
+
page.click_link_or_button("Speichern")
|
|
54
|
+
assert page.has_content?("Konzept wurde erfolgreich aktualisiert.")
|
|
55
|
+
# return to edit mode
|
|
56
|
+
page.click_link_or_button("Bearbeitung fortsetzen")
|
|
57
|
+
assert page.has_css?("#concept_edit")
|
|
58
|
+
|
|
59
|
+
section = page.find("#label_note_skos_definitions_data")
|
|
60
|
+
|
|
61
|
+
assert section.has_css?("li", :count => 2)
|
|
62
|
+
assert section.has_css?("[type=checkbox]", :count => 2)
|
|
63
|
+
assert section.has_no_css?("li.deleted")
|
|
64
|
+
|
|
65
|
+
# mark note for deletion
|
|
66
|
+
checkbox_id = "concept_note_skos_definitions_attributes_1__destroy"
|
|
67
|
+
section.check(checkbox_id)
|
|
68
|
+
section.find("##{checkbox_id}").trigger("change") # apparently `check` doesn't do this automatically
|
|
69
|
+
assert section.has_css?("li.deleted", :count => 1)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'integration_test_helper'
|
|
18
|
+
|
|
19
|
+
class CollectionCircularityTest < ActionDispatch::IntegrationTest
|
|
20
|
+
|
|
21
|
+
setup do
|
|
22
|
+
@coll1 = FactoryGirl.create(:collection)
|
|
23
|
+
@coll2 = FactoryGirl.create(:collection)
|
|
24
|
+
@coll3 = FactoryGirl.create(:collection)
|
|
25
|
+
@concept1 = FactoryGirl.create(:concept)
|
|
26
|
+
@concept2 = FactoryGirl.create(:concept)
|
|
27
|
+
@concept3 = FactoryGirl.create(:concept)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
test "inline assignments are persisted" do
|
|
31
|
+
login("administrator")
|
|
32
|
+
|
|
33
|
+
delimiter = "," # without space
|
|
34
|
+
|
|
35
|
+
visit edit_collection_path(@coll1, :lang => "en", :format => "html")
|
|
36
|
+
fill_in "concept_inline_member_collection_origins",
|
|
37
|
+
:with => [@coll2.origin, @coll3.origin].join(delimiter)
|
|
38
|
+
fill_in "concept_inline_member_concept_origins",
|
|
39
|
+
:with => [@concept1.origin, @concept2.origin, @concept3.origin].join(delimiter)
|
|
40
|
+
click_button "Save"
|
|
41
|
+
|
|
42
|
+
assert page.has_no_css?(".flash_error")
|
|
43
|
+
assert page.has_content?(I18n.t("txt.controllers.collections.save.success"))
|
|
44
|
+
assert page.has_link?(@coll2.pref_label.to_s)
|
|
45
|
+
assert page.has_link?(@coll3.pref_label.to_s)
|
|
46
|
+
assert page.has_link?(@concept1.pref_label.to_s)
|
|
47
|
+
assert page.has_link?(@concept2.pref_label.to_s)
|
|
48
|
+
assert page.has_link?(@concept3.pref_label.to_s)
|
|
49
|
+
|
|
50
|
+
click_link_or_button "Edit"
|
|
51
|
+
fill_in "concept_inline_member_collection_origins", :with => ""
|
|
52
|
+
fill_in "concept_inline_member_concept_origins", :with => ""
|
|
53
|
+
click_button "Save"
|
|
54
|
+
|
|
55
|
+
assert page.has_no_css?(".flash_error")
|
|
56
|
+
assert page.has_content?(I18n.t("txt.controllers.collections.save.success"))
|
|
57
|
+
assert page.has_no_link?(@coll2.pref_label.to_s)
|
|
58
|
+
assert page.has_no_link?(@coll3.pref_label.to_s)
|
|
59
|
+
assert page.has_no_link?(@concept1.pref_label.to_s)
|
|
60
|
+
assert page.has_no_link?(@concept2.pref_label.to_s)
|
|
61
|
+
assert page.has_no_link?(@concept3.pref_label.to_s)
|
|
62
|
+
|
|
63
|
+
delimiter = ", " # with space
|
|
64
|
+
|
|
65
|
+
click_link_or_button "Edit"
|
|
66
|
+
fill_in "concept_inline_member_collection_origins",
|
|
67
|
+
:with => [@coll2.origin, @coll3.origin].join(delimiter)
|
|
68
|
+
fill_in "concept_inline_member_concept_origins",
|
|
69
|
+
:with => [@concept1.origin, @concept2.origin, @concept3.origin].join(delimiter)
|
|
70
|
+
click_button "Save"
|
|
71
|
+
|
|
72
|
+
assert page.has_no_css?(".flash_error")
|
|
73
|
+
assert page.has_content?(I18n.t("txt.controllers.collections.save.success"))
|
|
74
|
+
assert page.has_link?(@coll2.pref_label.to_s)
|
|
75
|
+
assert page.has_link?(@coll3.pref_label.to_s)
|
|
76
|
+
assert page.has_link?(@concept1.pref_label.to_s)
|
|
77
|
+
assert page.has_link?(@concept2.pref_label.to_s)
|
|
78
|
+
assert page.has_link?(@concept3.pref_label.to_s)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
test "circular sub-collection references are rejected during update" do
|
|
82
|
+
login("administrator")
|
|
83
|
+
|
|
84
|
+
# add coll2 as subcollection of coll1
|
|
85
|
+
visit edit_collection_path(@coll1, :lang => "de", :format => "html")
|
|
86
|
+
fill_in "concept_inline_member_collection_origins",
|
|
87
|
+
:with => "%s," % @coll2.origin
|
|
88
|
+
click_button "Speichern"
|
|
89
|
+
|
|
90
|
+
assert page.has_no_css?(".flash_error")
|
|
91
|
+
assert page.has_content?(I18n.t("txt.controllers.collections.save.success"))
|
|
92
|
+
assert page.has_link?(@coll2.pref_label.to_s,
|
|
93
|
+
:href => collection_path(@coll2, :lang => "de", :format => "html"))
|
|
94
|
+
|
|
95
|
+
# add coll1 as subcollection of coll2
|
|
96
|
+
visit edit_collection_path(@coll2, :lang => "de", :format => "html")
|
|
97
|
+
fill_in "concept_inline_member_collection_origins",
|
|
98
|
+
:with => "%s," % @coll1.origin
|
|
99
|
+
click_button "Speichern"
|
|
100
|
+
|
|
101
|
+
assert page.has_css?(".flash_error")
|
|
102
|
+
assert page.has_css?("#concept_edit")
|
|
103
|
+
assert page.source.include?( # XXX: page.has_content? didn't work
|
|
104
|
+
I18n.t("txt.controllers.collections.circular_error") % @coll1.pref_label)
|
|
105
|
+
|
|
106
|
+
# ensure coll1 is not a subcollection of coll2
|
|
107
|
+
visit collection_path(@coll2, :lang => "de", :format => "html")
|
|
108
|
+
assert page.has_no_css?(".relation ul.treeview li") # XXX: too unspecific
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'test_helper'
|
|
18
|
+
require 'integration_test_helper'
|
|
19
|
+
|
|
20
|
+
class ConceptTest < ActionDispatch::IntegrationTest
|
|
21
|
+
|
|
22
|
+
setup do
|
|
23
|
+
@concept1 = FactoryGirl.create(:concept, :narrower_relations => [])
|
|
24
|
+
@concept2 = FactoryGirl.create(:concept, :narrower_relations => [])
|
|
25
|
+
@concept3 = FactoryGirl.create(:concept, :narrower_relations => [])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "showing published concept" do
|
|
29
|
+
visit "/en/concepts/#{@concept1.origin}.html"
|
|
30
|
+
assert page.has_content?("#{@concept1.origin}")
|
|
31
|
+
assert page.has_content?("#{@concept1.pref_label}")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
test "persisting inline relations" do
|
|
35
|
+
login "administrator"
|
|
36
|
+
|
|
37
|
+
visit new_concept_path(:lang => "en", :format => "html", :published => 0)
|
|
38
|
+
fill_in "concept_relation_skos_relateds",
|
|
39
|
+
:with => "#{@concept1.origin},#{@concept2.origin},"
|
|
40
|
+
click_button "Save"
|
|
41
|
+
|
|
42
|
+
assert page.has_content? I18n.t("txt.controllers.versioned_concept.success")
|
|
43
|
+
assert page.has_css?("#concept_relation_skos_relateds a", :count => 2)
|
|
44
|
+
|
|
45
|
+
click_link_or_button I18n.t("txt.views.versioning.to_edit_mode")
|
|
46
|
+
fill_in "concept_relation_skos_relateds", :with => ""
|
|
47
|
+
click_button "Save"
|
|
48
|
+
|
|
49
|
+
assert page.has_content? I18n.t("txt.controllers.versioned_concept.update_success")
|
|
50
|
+
assert page.has_no_css?("#concept_relation_skos_relateds a")
|
|
51
|
+
|
|
52
|
+
click_link_or_button I18n.t("txt.views.versioning.edit_mode")
|
|
53
|
+
fill_in "concept_relation_skos_relateds",
|
|
54
|
+
:with => "#{@concept1.origin}, #{@concept2.origin}, #{@concept3.origin}"
|
|
55
|
+
click_button "Save"
|
|
56
|
+
|
|
57
|
+
assert page.has_content? I18n.t("txt.controllers.versioned_concept.update_success")
|
|
58
|
+
assert page.has_css?("#concept_relation_skos_relateds a", :count => 3)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'test_helper'
|
|
18
|
+
require 'integration_test_helper'
|
|
19
|
+
|
|
20
|
+
class EditConceptsTest < ActionDispatch::IntegrationTest
|
|
21
|
+
|
|
22
|
+
setup do
|
|
23
|
+
@concept = Factory(:concept)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test "Create a new concept version" do
|
|
27
|
+
login('administrator')
|
|
28
|
+
visit concept_path(@concept, :lang => 'de', :format => 'html')
|
|
29
|
+
assert page.has_button?("Neue Version erstellen"), "Button 'Neue Version erstellen' is missing on concepts#show"
|
|
30
|
+
click_link_or_button("Neue Version erstellen")
|
|
31
|
+
assert_equal edit_concept_url(@concept, :published => 0, :lang => 'de', :format => 'html'), current_url
|
|
32
|
+
|
|
33
|
+
visit concept_path(@concept, :lang => 'de', :format => 'html')
|
|
34
|
+
assert !page.has_button?("Neue Version erstellen"), "Button 'Neue Version erstellen' although there already is a new version"
|
|
35
|
+
assert page.has_link?("Vorschau der Version in Bearbeitung"), "Link 'Vorschau der Version in Bearbeitung' is missing"
|
|
36
|
+
click_link("Vorschau der Version in Bearbeitung")
|
|
37
|
+
assert_equal concept_url(@concept, :published => 0, :lang => 'de', :format => 'html'), current_url
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'test_helper'
|
|
18
|
+
require 'integration_test_helper'
|
|
19
|
+
|
|
20
|
+
class NoteAnnotationsTest < ActionDispatch::IntegrationTest
|
|
21
|
+
|
|
22
|
+
test "creating and retrieving change notes" do
|
|
23
|
+
login "administrator"
|
|
24
|
+
|
|
25
|
+
visit new_concept_path(:lang => "en", :format => "html", :published => 0)
|
|
26
|
+
fill_in "concept_labelings_by_text_labeling_skos_pref_labels_en",
|
|
27
|
+
:with => "Foo"
|
|
28
|
+
fill_in "concept_note_skos_change_notes_attributes_0_value",
|
|
29
|
+
:with => "lorem ipsum"
|
|
30
|
+
click_button "Save"
|
|
31
|
+
|
|
32
|
+
assert page.has_content? I18n.t("txt.controllers.versioned_concept.success")
|
|
33
|
+
assert page.has_css?("dl.note_annotations", :count => 1)
|
|
34
|
+
|
|
35
|
+
click_link_or_button I18n.t("txt.views.versioning.publishing")
|
|
36
|
+
assert page.has_content? I18n.t("txt.controllers.versioning.published")
|
|
37
|
+
assert page.has_css?("dl.note_annotations", :count => 1)
|
|
38
|
+
|
|
39
|
+
click_link_or_button I18n.t("txt.views.versioning.versioning_mode")
|
|
40
|
+
fill_in "concept_note_skos_change_notes_attributes_1_value",
|
|
41
|
+
:with => "dolor sit amet"
|
|
42
|
+
click_button "Save"
|
|
43
|
+
|
|
44
|
+
assert page.has_css?("dl.note_annotations", :count => 2)
|
|
45
|
+
|
|
46
|
+
click_link_or_button I18n.t("txt.views.versioning.publishing")
|
|
47
|
+
assert page.has_content? I18n.t("txt.controllers.versioning.published")
|
|
48
|
+
assert page.has_css?("dl.note_annotations", :count => 2)
|
|
49
|
+
|
|
50
|
+
# TTL & RDF/XML
|
|
51
|
+
|
|
52
|
+
ttl_uri = page.all("#abstract_uri a")[-2][:href]
|
|
53
|
+
xml_uri = page.all("#abstract_uri a")[-1][:href]
|
|
54
|
+
|
|
55
|
+
visit ttl_uri
|
|
56
|
+
ttl = page.source.
|
|
57
|
+
gsub(/^ *| *$/, ""). # ignore indentation
|
|
58
|
+
gsub(/\d/, "#") # neutralize timestamps
|
|
59
|
+
assert ttl.include?("skos:changeNote [\n" +
|
|
60
|
+
"rdfs:comment \"lorem ipsum\"@en\n" +
|
|
61
|
+
"]")
|
|
62
|
+
assert ttl.include?("skos:changeNote [\n" +
|
|
63
|
+
"rdfs:comment \"dolor sit amet\"@en;\n" +
|
|
64
|
+
"dct:creator \"Test User\";\n" +
|
|
65
|
+
"dct:modified \"####-##-##T##:##:##+##:##\"\n" +
|
|
66
|
+
"]")
|
|
67
|
+
|
|
68
|
+
visit xml_uri
|
|
69
|
+
xml = page.source.
|
|
70
|
+
gsub(/^ *| *$/, ""). # ignore indentation
|
|
71
|
+
gsub(/\d/, "#") # neutralize timestamps
|
|
72
|
+
assert xml.include?("<skos:changeNote>\n" +
|
|
73
|
+
"<rdf:Description>\n" +
|
|
74
|
+
"<rdfs:comment xml:lang=\"en\">lorem ipsum</rdfs:comment>\n" +
|
|
75
|
+
"</rdf:Description>\n" +
|
|
76
|
+
"</skos:changeNote>")
|
|
77
|
+
assert xml.include?("<skos:changeNote>\n" +
|
|
78
|
+
"<rdf:Description>\n" +
|
|
79
|
+
"<rdfs:comment xml:lang=\"en\">dolor sit amet</rdfs:comment>\n" +
|
|
80
|
+
"<dct:creator>Test User</dct:creator>\n" +
|
|
81
|
+
"<dct:modified>####-##-##T##:##:##+##:##</dct:modified>\n" +
|
|
82
|
+
"</rdf:Description>\n" +
|
|
83
|
+
"</skos:changeNote>\n")
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|