kete_translatable_content 0.1.0
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/.document +5 -0
- data/.gitignore +23 -0
- data/LICENSE +295 -0
- data/README.rdoc +80 -0
- data/README.rdoc.orig +72 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/app/views/active_scaffold_overrides/_show.html.erb +8 -0
- data/app/views/active_scaffold_overrides/_update_form.html.erb +8 -0
- data/app/views/active_scaffold_overrides/list.html.erb +5 -0
- data/app/views/baskets/_additional_footer_content_fields.html.erb +33 -0
- data/app/views/baskets/_rss_feed.html.erb +42 -0
- data/app/views/baskets/_side_bar_html.html.erb +19 -0
- data/app/views/configure/section.rhtml +36 -0
- data/app/views/layouts/translations.html.erb +1 -0
- data/app/views/topics/_content_wrapper_start.rhtml +26 -0
- data/app/views/translations/_form.html.erb +54 -0
- data/app/views/translations/_translatable_value.html.erb +36 -0
- data/app/views/translations/_translation_field_input.html.erb +61 -0
- data/app/views/translations/show.html.erb +12 -0
- data/app/views/translations/versioned_edit.html.erb +9 -0
- data/config/locales/en.yml +51 -0
- data/config/routes.rb +11 -0
- data/config/translatables.yml +65 -0
- data/generators/kete_translatable_content_migration/USAGE +2 -0
- data/generators/kete_translatable_content_migration/kete_translatable_content_migration_generator.rb +7 -0
- data/generators/kete_translatable_content_migration/templates/migration.rb +82 -0
- data/generators/kete_translatable_content_tests/USAGE +2 -0
- data/generators/kete_translatable_content_tests/kete_translatable_content_tests_generator.rb +38 -0
- data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_controller_and_routes_test.rb +48 -0
- data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_test.rb +47 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_helper_test.rb +19 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_migration_test.rb +45 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_oai_dc_helpers_test.rb +66 -0
- data/generators/kete_translatable_content_tests/templates/kete_translatable_content_translations_test.rb +23 -0
- data/generators/kete_translatable_content_tests/templates/kete_translations_test.rb +57 -0
- data/generators/kete_translatable_content_tests/templates/mongo_factories.rb +6 -0
- data/generators/kete_translatable_content_tests/templates/mongo_test_helper.rb +37 -0
- data/generators/kete_translatable_content_tests/templates/mongo_translatable_test.rb +262 -0
- data/lib/kete_translatable_content.rb +54 -0
- data/lib/kete_translatable_content/extensions/controllers/application_controller.rb +202 -0
- data/lib/kete_translatable_content/extensions/controllers/audio_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/baskets_controller.rb +3 -0
- data/lib/kete_translatable_content/extensions/controllers/documents_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/images_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/topics_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/translations_controller.rb +209 -0
- data/lib/kete_translatable_content/extensions/controllers/video_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/controllers/web_links_controller.rb +7 -0
- data/lib/kete_translatable_content/extensions/extended_content_translation.rb +54 -0
- data/lib/kete_translatable_content/extensions/helpers/application_helper.rb +156 -0
- data/lib/kete_translatable_content/extensions/helpers/extended_fields_helper.rb +17 -0
- data/lib/kete_translatable_content/extensions/helpers/search_helper.rb +5 -0
- data/lib/kete_translatable_content/extensions/helpers/translations_helper.rb +72 -0
- data/lib/kete_translatable_content/extensions/models/audio_recording.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/basket.rb +34 -0
- data/lib/kete_translatable_content/extensions/models/comment.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/document.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/still_image.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/system_setting.rb +13 -0
- data/lib/kete_translatable_content/extensions/models/tag.rb +37 -0
- data/lib/kete_translatable_content/extensions/models/topic.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/user.rb +36 -0
- data/lib/kete_translatable_content/extensions/models/video.rb +12 -0
- data/lib/kete_translatable_content/extensions/models/web_link.rb +12 -0
- data/lib/kete_translatable_content/extensions/oai_dc_helpers_overrides.rb +99 -0
- data/lib/kete_translatable_content/extensions/tagging_controller_overrides.rb +21 -0
- data/lib/kete_translatable_content/extensions/tagging_overrides.rb +27 -0
- data/lib/kete_translatable_content/extensions/tinymce_controller_valid_action_override.rb +16 -0
- data/lib/kete_translatable_content/extensions/translation_from_version.rb +105 -0
- data/lib/kete_translatable_content/kete.rb +25 -0
- data/lib/kete_translatable_content/overwrites/oai_dc_helpers_test.rb +6 -0
- data/rails/init.rb +110 -0
- metadata +156 -0
data/config/routes.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'kete_translatable_content'
|
|
2
|
+
|
|
3
|
+
# extend routes for translations of kete content
|
|
4
|
+
ActionController::Routing::Routes.draw do |map|
|
|
5
|
+
# translations routes
|
|
6
|
+
# note that we don't want to override the standard routes handled below
|
|
7
|
+
# restful index is the same as our normal index action, so we limit it to that
|
|
8
|
+
Kete.translatables.keys.each do |name|
|
|
9
|
+
map.resources name.tableize.to_sym, :path_prefix => ':urlified_name', :only => [:index], :has_many => :translations
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
basket:
|
|
2
|
+
translatable_attributes: [:name, :index_page_extra_side_bar_html]
|
|
3
|
+
views: ['edit']
|
|
4
|
+
topic_type:
|
|
5
|
+
translatable_attributes: [:name, :description]
|
|
6
|
+
views: ['edit']
|
|
7
|
+
search_source:
|
|
8
|
+
translatable_attributes: [:title, :source_credit]
|
|
9
|
+
views: ['show', 'edit']
|
|
10
|
+
license:
|
|
11
|
+
translatable_attributes: [:name, :description]
|
|
12
|
+
views: ['show', 'edit']
|
|
13
|
+
extended_field:
|
|
14
|
+
translatable_attributes: [:label, :example]
|
|
15
|
+
views: ['show', 'edit']
|
|
16
|
+
redefine_find: false
|
|
17
|
+
system_setting:
|
|
18
|
+
translatable_attributes: [:value]
|
|
19
|
+
controllers: ['configure']
|
|
20
|
+
views: ['section']
|
|
21
|
+
additional_columns:
|
|
22
|
+
takes_translations:
|
|
23
|
+
type: boolean
|
|
24
|
+
default: false
|
|
25
|
+
configurable_setting:
|
|
26
|
+
translatable_attributes: [:value]
|
|
27
|
+
controllers: ['baskets']
|
|
28
|
+
views: ['appearance']
|
|
29
|
+
feed:
|
|
30
|
+
translatable_attributes: [:title]
|
|
31
|
+
controllers: ['baskets']
|
|
32
|
+
views: ['homepage_options']
|
|
33
|
+
choice:
|
|
34
|
+
translatable_attributes: [:label]
|
|
35
|
+
views: ['show', 'edit']
|
|
36
|
+
tag:
|
|
37
|
+
translatable_attributes: [:name]
|
|
38
|
+
views: ['show']
|
|
39
|
+
topic:
|
|
40
|
+
through_version: true
|
|
41
|
+
translatable_attributes: [:title, :short_summary, :description] # extended content is handled separately
|
|
42
|
+
views: ['show']
|
|
43
|
+
document:
|
|
44
|
+
through_version: true
|
|
45
|
+
translatable_attributes: [:title, :short_summary, :description] # extended content is handled separately
|
|
46
|
+
views: ['show']
|
|
47
|
+
audio_recording:
|
|
48
|
+
through_version: true
|
|
49
|
+
translatable_attributes: [:title, :description] # extended content is handled separately
|
|
50
|
+
views: ['show']
|
|
51
|
+
controllers: ['audio']
|
|
52
|
+
still_image:
|
|
53
|
+
through_version: true
|
|
54
|
+
translatable_attributes: [:title, :description] # extended content is handled separately
|
|
55
|
+
views: ['show']
|
|
56
|
+
controllers: ['images']
|
|
57
|
+
video:
|
|
58
|
+
through_version: true
|
|
59
|
+
translatable_attributes: [:title, :description] # extended content is handled separately
|
|
60
|
+
views: ['show']
|
|
61
|
+
controllers: ['video']
|
|
62
|
+
web_link:
|
|
63
|
+
through_version: true
|
|
64
|
+
translatable_attributes: [:title, :description] # extended content is handled separately
|
|
65
|
+
views: ['show']
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require 'kete_translatable_content'
|
|
2
|
+
class ActiveRecord::Migration
|
|
3
|
+
|
|
4
|
+
def self.add_additional_columns_for(name, table_name)
|
|
5
|
+
if Kete.translatables[name]['additional_columns'] && Kete.translatables[name]['additional_columns'].any?
|
|
6
|
+
Kete.translatables[name]['additional_columns'].each do |column|
|
|
7
|
+
column_name = column.first.to_sym
|
|
8
|
+
options = column.last
|
|
9
|
+
args = [table_name, column_name, options['type'].to_sym]
|
|
10
|
+
args << { :default => options['default'] } unless options['default'].nil?
|
|
11
|
+
add_column *args
|
|
12
|
+
|
|
13
|
+
if through_version?(name)
|
|
14
|
+
args[0] = resolve_to_table(name, :without_versions => true)
|
|
15
|
+
add_column *args
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.remove_additional_columns_for(name, table_name)
|
|
22
|
+
if Kete.translatables[name]['additional_columns'] && Kete.translatables[name]['additional_columns'].any?
|
|
23
|
+
Kete.translatables[name]['additional_columns'].each do |column|
|
|
24
|
+
remove_column(table_name, column.first.to_sym) rescue nil
|
|
25
|
+
|
|
26
|
+
if through_version?(name)
|
|
27
|
+
remove_column(resolve_to_table(name, :without_versions => true), column.first.to_sym) rescue nil
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.add_locale_columns_to(table_name)
|
|
34
|
+
add_column table_name, :locale, :string, :default => I18n.default_locale.to_s
|
|
35
|
+
add_column table_name, :original_locale, :string, :default => I18n.default_locale.to_s
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.remove_locale_columns_to(table_name)
|
|
39
|
+
remove_column(table_name, :locale) rescue nil
|
|
40
|
+
remove_column(table_name, :original_locale) rescue nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.through_version?(name)
|
|
44
|
+
Kete.translatables[name]['through_version'].present? ? Kete.translatables[name]['through_version'] : false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.resolve_to_table(name, options = { })
|
|
48
|
+
include_versions = options[:without_versions].present? ? options[:without_versions] : false
|
|
49
|
+
|
|
50
|
+
table_name = through_version?(name) && include_versions ? name + '_versions' : name.tableize
|
|
51
|
+
|
|
52
|
+
table_name = table_name.to_sym
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class AddKeteTranslatableContentFields < ActiveRecord::Migration
|
|
57
|
+
def self.up
|
|
58
|
+
Kete.translatables.keys.each do |name|
|
|
59
|
+
|
|
60
|
+
table_name = resolve_to_table(name)
|
|
61
|
+
|
|
62
|
+
add_locale_columns_to(table_name)
|
|
63
|
+
|
|
64
|
+
add_locale_columns_to(resolve_to_table(name, :without_versions => true)) if through_version?(name)
|
|
65
|
+
|
|
66
|
+
add_additional_columns_for(name, table_name)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def self.down
|
|
71
|
+
Kete.translatables.keys.each do |name|
|
|
72
|
+
table_name = resolve_to_table(name)
|
|
73
|
+
|
|
74
|
+
remove_locale_columns_to(table_name)
|
|
75
|
+
|
|
76
|
+
remove_locale_columns_to(resolve_to_table(name, :without_versions => true)) if through_version?(name)
|
|
77
|
+
|
|
78
|
+
remove_additional_columns_for(name, table_name)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class KeteTranslatableContentTestsGenerator < Rails::Generator::Base
|
|
2
|
+
def manifest
|
|
3
|
+
record do |m|
|
|
4
|
+
m.template 'configure_kete_content_translation_controller_and_routes_test.rb',
|
|
5
|
+
File.join('test/functional',
|
|
6
|
+
'configure_kete_content_translation_controller_and_routes_test.rb')
|
|
7
|
+
|
|
8
|
+
m.template 'configure_kete_content_translation_test.rb',
|
|
9
|
+
File.join('test/unit',
|
|
10
|
+
'configure_kete_content_translation_test.rb')
|
|
11
|
+
|
|
12
|
+
m.template 'kete_translatable_content_helper_test.rb',
|
|
13
|
+
File.join('test/unit/helpers',
|
|
14
|
+
"kete_translatable_content_helper_test.rb")
|
|
15
|
+
|
|
16
|
+
m.template 'kete_translatable_content_migration_test.rb',
|
|
17
|
+
File.join('test/unit',
|
|
18
|
+
'kete_translatable_content_migration_test.rb')
|
|
19
|
+
|
|
20
|
+
m.template 'kete_translatable_content_translations_test.rb',
|
|
21
|
+
File.join('test/unit',
|
|
22
|
+
'kete_translatable_content_translations_test.rb')
|
|
23
|
+
|
|
24
|
+
m.template 'kete_translations_test.rb',
|
|
25
|
+
File.join('test/integration',
|
|
26
|
+
'kete_translations_test.rb')
|
|
27
|
+
m.template 'mongo_test_helper.rb',
|
|
28
|
+
File.join('test/',
|
|
29
|
+
'mongo_test_helper.rb')
|
|
30
|
+
m.template 'mongo_factories.rb',
|
|
31
|
+
File.join('test/',
|
|
32
|
+
'mongo_factories.rb')
|
|
33
|
+
m.template 'mongo_translatable_test.rb',
|
|
34
|
+
File.join('test/unit',
|
|
35
|
+
'mongo_translatable_test.rb')
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
# test that routes exist
|
|
4
|
+
# prepended with locale en which is added to all routes with a wrapper filter
|
|
5
|
+
class ConfigureKeteContentTranslationControllerAndRoutesTest < ActionController::TestCase
|
|
6
|
+
|
|
7
|
+
context "The application's routing for baskets" do
|
|
8
|
+
|
|
9
|
+
setup do
|
|
10
|
+
@location = {
|
|
11
|
+
:locale => "en",
|
|
12
|
+
:urlified_name => "site",
|
|
13
|
+
:controller => "translations",
|
|
14
|
+
:basket_id => "1"
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "have translations index" do
|
|
19
|
+
assert_routing({ :path => "en/site/baskets/1/translations", :method => :get }, @location.merge(:action => "index"))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "have translations new" do
|
|
23
|
+
assert_routing({ :path => "en/site/baskets/1/translations/new", :method => :get }, @location.merge(:action => "new"))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should "have translations create" do
|
|
27
|
+
assert_routing({ :path => "en/site/baskets/1/translations", :method => :post }, @location.merge(:action => "create"))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
should "have translations show for a translation" do
|
|
31
|
+
assert_routing({ :path => "en/site/baskets/1/translations/en", :method => :get }, @location.merge(:action => "show", :id => "en"))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "have translations edit for a translation" do
|
|
35
|
+
assert_routing({ :path => "en/site/baskets/1/translations/en/edit", :method => :get }, @location.merge(:action => "edit", :id => "en"))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "have translations update for a translation" do
|
|
39
|
+
assert_routing({ :path => "en/site/baskets/1/translations/en", :method => :put }, @location.merge(:action => "update", :id => "en"))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
should "have translations destroy for a translation" do
|
|
43
|
+
assert_routing({ :path => "en/site/baskets/1/translations/en", :method => :delete }, @location.merge(:action => "destroy", :id => "en"))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
data/generators/kete_translatable_content_tests/templates/configure_kete_content_translation_test.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
# test that models are translatable by making sure they respond
|
|
4
|
+
# to mongo_translatable instance methods
|
|
5
|
+
class ConfigureKeteContentTranslationTest < ActiveSupport::TestCase
|
|
6
|
+
|
|
7
|
+
Kete.translatables.keys.each do |name|
|
|
8
|
+
|
|
9
|
+
context "A #{name.humanize}" do
|
|
10
|
+
|
|
11
|
+
setup do
|
|
12
|
+
@record = name.camelize.constantize.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
should "respond to locale" do
|
|
16
|
+
assert @record.respond_to?(:locale)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
should "respond to translations" do
|
|
20
|
+
assert @record.respond_to?(:translations)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
should "respond to translations_locales" do
|
|
24
|
+
assert @record.respond_to?(:translations_locales)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should "respond to translate" do
|
|
28
|
+
assert @record.respond_to?(:translate)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
should "respond to translation_for" do
|
|
32
|
+
assert @record.respond_to?(:translation_for)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
should "respond to available_in_these_locales" do
|
|
36
|
+
assert @record.respond_to?(:available_in_these_locales)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
should "respond to needed_in_these_locales" do
|
|
40
|
+
assert @record.respond_to?(:needed_in_these_locales)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
data/generators/kete_translatable_content_tests/templates/kete_translatable_content_helper_test.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
# test that ApplicationHelper includes the mongo_translatable's gem
|
|
4
|
+
# helper is included
|
|
5
|
+
class KeteTranslatableContentHelperTest < ActionView::TestCase
|
|
6
|
+
|
|
7
|
+
context "The ActionController Helpers" do
|
|
8
|
+
|
|
9
|
+
should "include TranslatablesHelper#needed_in_locales_for" do
|
|
10
|
+
assert ApplicationController.helpers.methods.include?('needed_in_locales_for')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "include KeteTranslatableContentHelper#kete_translatable_content?" do
|
|
14
|
+
assert ApplicationController.helpers.methods.include?('kete_translatable_content?')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'test_helper.rb'
|
|
2
|
+
require 'rails_generator'
|
|
3
|
+
require 'rails_generator/scripts/generate'
|
|
4
|
+
|
|
5
|
+
# skipping tests here, as this testcase can only be run in isolation from other testcases
|
|
6
|
+
# uncomment and run "cd test; ruby unit/kete_translatable_content_migration_test.rb"
|
|
7
|
+
# from command line, if you need to test this
|
|
8
|
+
class MigrationGeneratorTest < ActiveSupport::TestCase
|
|
9
|
+
test "the truth" do
|
|
10
|
+
assert true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# context "Calling script/generate kete_translatable_content_migration" do
|
|
14
|
+
|
|
15
|
+
# setup do
|
|
16
|
+
# FileUtils.mkdir_p(fake_rails_root)
|
|
17
|
+
# @original_files = file_list
|
|
18
|
+
# end
|
|
19
|
+
|
|
20
|
+
# should "generate correct file with kete's translatable models" do
|
|
21
|
+
# Rails::Generator::Scripts::Generate.new.run(["kete_translatable_content_migration"],
|
|
22
|
+
# :destination => fake_rails_root)
|
|
23
|
+
# new_file = (file_list - @original_files).first
|
|
24
|
+
# assert_match /add_kete_translatable_content_fields/, new_file
|
|
25
|
+
# assert_match /require \'kete_translatable_content\'/, File.read(new_file)
|
|
26
|
+
# assert_match /Kete.translatables.keys.each/, File.read(new_file)
|
|
27
|
+
# end
|
|
28
|
+
|
|
29
|
+
# teardown do
|
|
30
|
+
# FileUtils.rm_r(fake_rails_root)
|
|
31
|
+
# end
|
|
32
|
+
|
|
33
|
+
# end
|
|
34
|
+
|
|
35
|
+
# private
|
|
36
|
+
|
|
37
|
+
# def fake_rails_root
|
|
38
|
+
# File.join(File.dirname(__FILE__), 'rails_root')
|
|
39
|
+
# end
|
|
40
|
+
|
|
41
|
+
# def file_list
|
|
42
|
+
# Dir.glob(File.join(fake_rails_root, "db", "migrate", "*"))
|
|
43
|
+
# end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'mongo_test_helper'
|
|
3
|
+
|
|
4
|
+
# test that the oai dc helpers we use are overridden
|
|
5
|
+
# to return translations as well as locale's xml:lang
|
|
6
|
+
class KeteTranslatableContentOaiDcHelpersTest < ActiveSupport::TestCase
|
|
7
|
+
|
|
8
|
+
zoom_translatables = Array.new
|
|
9
|
+
Kete.translatables.each { |k,v| zoom_translatables << k.camelize if v['through_version'] }
|
|
10
|
+
|
|
11
|
+
zoom_translatables.each do |zoom_class|
|
|
12
|
+
|
|
13
|
+
context "#{zoom_class.humanize}" do
|
|
14
|
+
setup do
|
|
15
|
+
I18n.locale = I18n.default_locale
|
|
16
|
+
|
|
17
|
+
item_for(zoom_class)
|
|
18
|
+
|
|
19
|
+
create_translations_for(@item, [:title, :description])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "return xml for title in original locale plus all translated titles" do
|
|
23
|
+
builder = Nokogiri::XML::Builder.new
|
|
24
|
+
builder.root do |xml|
|
|
25
|
+
@item.oai_dc_xml_dc_title(xml)
|
|
26
|
+
end
|
|
27
|
+
assert builder.to_stripped_xml.include?("<dc:title xml:lang=\"#{I18n.default_locale}\">Item</dc:title>")
|
|
28
|
+
ALL_TRANSLATION_LOCALE_KEYS_EXCEPT_EN.each do |key|
|
|
29
|
+
assert builder.to_stripped_xml.include?("<dc:title xml:lang=\"#{key.to_s}\">#{LOCALE_LABELS[key]}</dc:title>")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
should "return xml for description in original locale plus all translated descriptions" do
|
|
34
|
+
builder = Nokogiri::XML::Builder.new
|
|
35
|
+
builder.root do |xml|
|
|
36
|
+
@item.oai_dc_xml_dc_description(xml)
|
|
37
|
+
end
|
|
38
|
+
assert builder.to_stripped_xml.include?("<dc:description xml:lang=\"#{I18n.default_locale}\"><![CDATA[Description]]></dc:description>")
|
|
39
|
+
ALL_TRANSLATION_LOCALE_KEYS_EXCEPT_EN.each do |key|
|
|
40
|
+
assert builder.to_stripped_xml.include?("<dc:description xml:lang=\"#{key.to_s}\"><![CDATA[#{LOCALE_LABELS[key]}]]></dc:description>")
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
should "return xml for tags in original locale plus all translated tags" do
|
|
45
|
+
@item.tag_list << "tag"
|
|
46
|
+
@item.save
|
|
47
|
+
@item.reload
|
|
48
|
+
@item.add_as_contributor(User.first, @item.version)
|
|
49
|
+
|
|
50
|
+
# translate tag
|
|
51
|
+
tag = @item.tags.first
|
|
52
|
+
create_translations_for(tag, [:name])
|
|
53
|
+
|
|
54
|
+
builder = Nokogiri::XML::Builder.new
|
|
55
|
+
builder.root do |xml|
|
|
56
|
+
@item.oai_dc_xml_tags_to_dc_subjects(xml)
|
|
57
|
+
end
|
|
58
|
+
assert builder.to_stripped_xml.include?("<dc:subject xml:lang=\"#{I18n.default_locale}\"><![CDATA[tag]]></dc:subject>")
|
|
59
|
+
|
|
60
|
+
ALL_TRANSLATION_LOCALE_KEYS_EXCEPT_EN.each do |key|
|
|
61
|
+
assert builder.to_stripped_xml.include?("<dc:subject xml:lang=\"#{key.to_s}\"><![CDATA[#{LOCALE_LABELS[key]}]]></dc:subject>")
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|