mobility-actiontext 0.5.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ca31827abf078eae807f5aafef4588dad78859d1fe3fea3c753dc311726c533
4
- data.tar.gz: 723483c8e2091d470dbb0ae86f33bc945a7e4eeac87770ecf22c1f2e447f0f0a
3
+ metadata.gz: 83d469e061908f44d2b12d45a5cfe0108a9b78264e14eecf677abd881d8fb29c
4
+ data.tar.gz: 22c8db7113a9b6cbfcdf2e060a6f4b639b59e8011ab5a1ae5bf1b525040f2235
5
5
  SHA512:
6
- metadata.gz: 8d58add532f751dade73185768f816a2b1ad16b1ac794b74b78997ed62c20d05b0e4a816515bf71c949fe3782bb78ffa8e9a6f4ac1fea3f47659263d8f894685
7
- data.tar.gz: 9cf9d1bf167b0da2feb2513588818789bf998a16291d919f58fc39794172e05fda3853cf35085ffb811fef918d2ccf8d7aed4dc12f1fa3a230a3f3b095c7bf36
6
+ metadata.gz: ba1372589dbf8592c9dd66e0d28c628e16a71ef6397e878c2c9c6e38a43ff86266963cc38db8cb8a605242fbba6fd9503bfcb348c073a302edf237749490d141
7
+ data.tar.gz: c2e72b4be327237ca0aac4557fcca381cfbbe0558832f681850fa74deba72e79dfd08d4ab94f9a82136d6b05c7fcf92fe207e1bd3ec9ce38f648ad95d28fa969
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.1.0
1
+ ruby-3.1.1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Mobility Action Text Changelog
2
2
 
3
+ ### 1.1.0 (2022-03-24)
4
+
5
+ - Add rich text associations for each locale ([#25](https://github.com/sedubois/mobility-actiontext/pull/25)).
6
+
7
+ ### 1.0.0 (2022-02-28)
8
+ - Fix eager loading of single translation using `with_rich_text_#{name}` ([#24](https://github.com/sedubois/mobility-actiontext/pull/24)).
9
+
10
+ The version update to 1.0.0 indicates the plugin has no more known issues.
11
+
12
+ ### 0.6.0 (2022-02-27)
13
+ - Include all translations on eager load using `with_all_rich_text` ([#23](https://github.com/sedubois/mobility-actiontext/pull/23)).
14
+
3
15
  ### 0.5.0 (2022-02-13)
4
16
  - Require only actiontext in gemspec dependencies ([#20](https://github.com/sedubois/mobility-actiontext/pull/20)).
5
17
 
data/Gemfile.lock CHANGED
@@ -1,73 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mobility-actiontext (0.5.0)
4
+ mobility-actiontext (1.1.0)
5
5
  actiontext (>= 6.0)
6
6
  mobility (~> 1.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (7.0.2.2)
12
- actionview (= 7.0.2.2)
13
- activesupport (= 7.0.2.2)
11
+ actionpack (7.0.2.3)
12
+ actionview (= 7.0.2.3)
13
+ activesupport (= 7.0.2.3)
14
14
  rack (~> 2.0, >= 2.2.0)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actiontext (7.0.2.2)
19
- actionpack (= 7.0.2.2)
20
- activerecord (= 7.0.2.2)
21
- activestorage (= 7.0.2.2)
22
- activesupport (= 7.0.2.2)
18
+ actiontext (7.0.2.3)
19
+ actionpack (= 7.0.2.3)
20
+ activerecord (= 7.0.2.3)
21
+ activestorage (= 7.0.2.3)
22
+ activesupport (= 7.0.2.3)
23
23
  globalid (>= 0.6.0)
24
24
  nokogiri (>= 1.8.5)
25
- actionview (7.0.2.2)
26
- activesupport (= 7.0.2.2)
25
+ actionview (7.0.2.3)
26
+ activesupport (= 7.0.2.3)
27
27
  builder (~> 3.1)
28
28
  erubi (~> 1.4)
29
29
  rails-dom-testing (~> 2.0)
30
30
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
31
- activejob (7.0.2.2)
32
- activesupport (= 7.0.2.2)
31
+ activejob (7.0.2.3)
32
+ activesupport (= 7.0.2.3)
33
33
  globalid (>= 0.3.6)
34
- activemodel (7.0.2.2)
35
- activesupport (= 7.0.2.2)
36
- activerecord (7.0.2.2)
37
- activemodel (= 7.0.2.2)
38
- activesupport (= 7.0.2.2)
39
- activestorage (7.0.2.2)
40
- actionpack (= 7.0.2.2)
41
- activejob (= 7.0.2.2)
42
- activerecord (= 7.0.2.2)
43
- activesupport (= 7.0.2.2)
34
+ activemodel (7.0.2.3)
35
+ activesupport (= 7.0.2.3)
36
+ activerecord (7.0.2.3)
37
+ activemodel (= 7.0.2.3)
38
+ activesupport (= 7.0.2.3)
39
+ activestorage (7.0.2.3)
40
+ actionpack (= 7.0.2.3)
41
+ activejob (= 7.0.2.3)
42
+ activerecord (= 7.0.2.3)
43
+ activesupport (= 7.0.2.3)
44
44
  marcel (~> 1.0)
45
45
  mini_mime (>= 1.1.0)
46
- activesupport (7.0.2.2)
46
+ activesupport (7.0.2.3)
47
47
  concurrent-ruby (~> 1.0, >= 1.0.2)
48
48
  i18n (>= 1.6, < 2)
49
49
  minitest (>= 5.1)
50
50
  tzinfo (~> 2.0)
51
51
  builder (3.2.4)
52
- concurrent-ruby (1.1.9)
52
+ concurrent-ruby (1.1.10)
53
53
  crass (1.0.6)
54
54
  erubi (1.10.0)
55
55
  globalid (1.0.0)
56
56
  activesupport (>= 5.0)
57
- i18n (1.9.1)
57
+ i18n (1.10.0)
58
58
  concurrent-ruby (~> 1.0)
59
- loofah (2.14.0)
59
+ loofah (2.15.0)
60
60
  crass (~> 1.0.2)
61
61
  nokogiri (>= 1.5.9)
62
62
  marcel (1.0.2)
63
63
  mini_mime (1.1.2)
64
64
  minitest (5.15.0)
65
- mobility (1.2.5)
65
+ mobility (1.2.6)
66
66
  i18n (>= 0.6.10, < 2)
67
67
  request_store (~> 1.0)
68
- nokogiri (1.13.1-x86_64-darwin)
68
+ nokogiri (1.13.3-x86_64-darwin)
69
69
  racc (~> 1.4)
70
- nokogiri (1.13.1-x86_64-linux)
70
+ nokogiri (1.13.3-x86_64-linux)
71
71
  racc (~> 1.4)
72
72
  racc (1.6.0)
73
73
  rack (2.2.3)
@@ -95,4 +95,4 @@ DEPENDENCIES
95
95
  sqlite3 (~> 1.4)
96
96
 
97
97
  BUNDLED WITH
98
- 2.3.7
98
+ 2.3.10
data/README.md CHANGED
@@ -77,9 +77,17 @@ This is done through the `Mobility::Backends::ActionText::Translation` model ext
77
77
 
78
78
  ## Development
79
79
 
80
- After checking out the repo, run `bundle install` to install dependencies. Then, run `cd test_app && bundle exec rails test` to run the tests.
80
+ After checking out the repo, run `bundle install` to install dependencies.
81
81
 
82
- To release a new version, update `lib/mobility/action_text/version.rb` and `CHANGELOG.md`, run `bundle`, commit, then run `bundle exec rake release`. This will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
82
+ Execute tests by running:
83
+
84
+ ```sh
85
+ cd test_app
86
+ bundle install
87
+ bundle exec rails test
88
+ ```
89
+
90
+ To release a new version, update `lib/mobility/action_text/version.rb` and `CHANGELOG.md`, run `bundle && cd test_app && bundle`, commit, then run `bundle exec rake release`. This will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
83
91
 
84
92
  ## Contributing
85
93
 
@@ -88,4 +96,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/sedubo
88
96
  ## License
89
97
 
90
98
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
91
-
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Mobility
4
4
  module ActionText
5
- VERSION = '0.5.0'
5
+ VERSION = '1.1.0'
6
6
  end
7
7
  end
@@ -28,6 +28,12 @@ module Mobility
28
28
  # override to return record instead of value
29
29
  def read(locale, **options)
30
30
  return super if self.options[:plain]
31
+
32
+ if model.association_cached?("rich_text_#{attribute}")
33
+ eager_loaded = model.public_send("rich_text_#{attribute}")
34
+ return eager_loaded if eager_loaded.locale == locale.to_s
35
+ end
36
+
31
37
  translation_for(locale, **options)
32
38
  end
33
39
 
@@ -70,15 +76,30 @@ module Mobility
70
76
  end
71
77
  end
72
78
 
73
- setup do |attributes, _options|
79
+ setup do |attributes, options|
80
+ next if options[:plain]
81
+
74
82
  attributes.each do |name|
75
83
  has_one :"rich_text_#{name}", -> { where(name: name, locale: Mobility.locale) },
76
84
  class_name: 'Mobility::Backends::ActionText::RichTextTranslation',
77
85
  as: :record, inverse_of: :record, autosave: true, dependent: :destroy
86
+ Mobility.available_locales.each do |locale|
87
+ has_one :"rich_text_#{name}_#{locale}", -> { where(name: name, locale: locale) },
88
+ class_name: 'Mobility::Backends::ActionText::RichTextTranslation',
89
+ as: :record, inverse_of: :record, autosave: true, dependent: :destroy
90
+ end
78
91
  scope :"with_rich_text_#{name}", -> { includes("rich_text_#{name}") }
79
92
  scope :"with_rich_text_#{name}_and_embeds",
80
93
  -> { includes("rich_text_#{name}": { embeds_attachments: :blob }) }
81
- end unless _options[:plain]
94
+ end
95
+
96
+ singleton_class.prepend(WithAllRichText) unless singleton_class < WithAllRichText
97
+ end
98
+
99
+ module WithAllRichText
100
+ def with_all_rich_text
101
+ super.eager_load(:rich_text_translations)
102
+ end
82
103
  end
83
104
 
84
105
  module ActionTextValidations
@@ -15,7 +15,9 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.metadata['homepage_uri'] = spec.homepage
17
17
  spec.metadata['source_code_uri'] = 'https://github.com/sedubois/mobility-actiontext'
18
+ spec.metadata['bug_tracker_uri'] = 'https://github.com/sedubois/mobility-actiontext/issues'
18
19
  spec.metadata['changelog_uri'] = 'https://github.com/sedubois/mobility-actiontext/blob/main/CHANGELOG.md'
20
+ spec.metadata['rubygems_mfa_required'] = 'true'
19
21
 
20
22
  # Specify which files should be added to the gem when it is released.
21
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
data/test_app/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
3
 
4
- ruby '3.1.0'
4
+ ruby '3.1.1'
5
5
 
6
6
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
7
7
  gem 'rails', '~> 7.0.0'
@@ -31,7 +31,7 @@ group :development do
31
31
  gem 'web-console', '>= 4.1.0'
32
32
  # Display performance information such as SQL time and flame graphs for each request in your browser.
33
33
  # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
34
- gem 'rack-mini-profiler', '~> 2.0'
34
+ gem 'rack-mini-profiler'
35
35
  gem 'listen', '~> 3.3'
36
36
  end
37
37
 
@@ -1,74 +1,74 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- mobility-actiontext (0.5.0)
4
+ mobility-actiontext (1.1.0)
5
5
  actiontext (>= 6.0)
6
6
  mobility (~> 1.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actioncable (7.0.2.2)
12
- actionpack (= 7.0.2.2)
13
- activesupport (= 7.0.2.2)
11
+ actioncable (7.0.2.3)
12
+ actionpack (= 7.0.2.3)
13
+ activesupport (= 7.0.2.3)
14
14
  nio4r (~> 2.0)
15
15
  websocket-driver (>= 0.6.1)
16
- actionmailbox (7.0.2.2)
17
- actionpack (= 7.0.2.2)
18
- activejob (= 7.0.2.2)
19
- activerecord (= 7.0.2.2)
20
- activestorage (= 7.0.2.2)
21
- activesupport (= 7.0.2.2)
16
+ actionmailbox (7.0.2.3)
17
+ actionpack (= 7.0.2.3)
18
+ activejob (= 7.0.2.3)
19
+ activerecord (= 7.0.2.3)
20
+ activestorage (= 7.0.2.3)
21
+ activesupport (= 7.0.2.3)
22
22
  mail (>= 2.7.1)
23
23
  net-imap
24
24
  net-pop
25
25
  net-smtp
26
- actionmailer (7.0.2.2)
27
- actionpack (= 7.0.2.2)
28
- actionview (= 7.0.2.2)
29
- activejob (= 7.0.2.2)
30
- activesupport (= 7.0.2.2)
26
+ actionmailer (7.0.2.3)
27
+ actionpack (= 7.0.2.3)
28
+ actionview (= 7.0.2.3)
29
+ activejob (= 7.0.2.3)
30
+ activesupport (= 7.0.2.3)
31
31
  mail (~> 2.5, >= 2.5.4)
32
32
  net-imap
33
33
  net-pop
34
34
  net-smtp
35
35
  rails-dom-testing (~> 2.0)
36
- actionpack (7.0.2.2)
37
- actionview (= 7.0.2.2)
38
- activesupport (= 7.0.2.2)
36
+ actionpack (7.0.2.3)
37
+ actionview (= 7.0.2.3)
38
+ activesupport (= 7.0.2.3)
39
39
  rack (~> 2.0, >= 2.2.0)
40
40
  rack-test (>= 0.6.3)
41
41
  rails-dom-testing (~> 2.0)
42
42
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
43
- actiontext (7.0.2.2)
44
- actionpack (= 7.0.2.2)
45
- activerecord (= 7.0.2.2)
46
- activestorage (= 7.0.2.2)
47
- activesupport (= 7.0.2.2)
43
+ actiontext (7.0.2.3)
44
+ actionpack (= 7.0.2.3)
45
+ activerecord (= 7.0.2.3)
46
+ activestorage (= 7.0.2.3)
47
+ activesupport (= 7.0.2.3)
48
48
  globalid (>= 0.6.0)
49
49
  nokogiri (>= 1.8.5)
50
- actionview (7.0.2.2)
51
- activesupport (= 7.0.2.2)
50
+ actionview (7.0.2.3)
51
+ activesupport (= 7.0.2.3)
52
52
  builder (~> 3.1)
53
53
  erubi (~> 1.4)
54
54
  rails-dom-testing (~> 2.0)
55
55
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
56
- activejob (7.0.2.2)
57
- activesupport (= 7.0.2.2)
56
+ activejob (7.0.2.3)
57
+ activesupport (= 7.0.2.3)
58
58
  globalid (>= 0.3.6)
59
- activemodel (7.0.2.2)
60
- activesupport (= 7.0.2.2)
61
- activerecord (7.0.2.2)
62
- activemodel (= 7.0.2.2)
63
- activesupport (= 7.0.2.2)
64
- activestorage (7.0.2.2)
65
- actionpack (= 7.0.2.2)
66
- activejob (= 7.0.2.2)
67
- activerecord (= 7.0.2.2)
68
- activesupport (= 7.0.2.2)
59
+ activemodel (7.0.2.3)
60
+ activesupport (= 7.0.2.3)
61
+ activerecord (7.0.2.3)
62
+ activemodel (= 7.0.2.3)
63
+ activesupport (= 7.0.2.3)
64
+ activestorage (7.0.2.3)
65
+ actionpack (= 7.0.2.3)
66
+ activejob (= 7.0.2.3)
67
+ activerecord (= 7.0.2.3)
68
+ activesupport (= 7.0.2.3)
69
69
  marcel (~> 1.0)
70
70
  mini_mime (>= 1.1.0)
71
- activesupport (7.0.2.2)
71
+ activesupport (7.0.2.3)
72
72
  concurrent-ruby (~> 1.0, >= 1.0.2)
73
73
  i18n (>= 1.6, < 2)
74
74
  minitest (>= 5.1)
@@ -76,14 +76,14 @@ GEM
76
76
  bindex (0.8.1)
77
77
  builder (3.2.4)
78
78
  byebug (11.1.3)
79
- concurrent-ruby (1.1.9)
79
+ concurrent-ruby (1.1.10)
80
80
  crass (1.0.6)
81
81
  digest (3.1.0)
82
82
  erubi (1.10.0)
83
83
  ffi (1.15.5)
84
84
  globalid (1.0.0)
85
85
  activesupport (>= 5.0)
86
- i18n (1.9.1)
86
+ i18n (1.10.0)
87
87
  concurrent-ruby (~> 1.0)
88
88
  io-wait (0.2.1)
89
89
  jbuilder (2.11.5)
@@ -92,7 +92,7 @@ GEM
92
92
  listen (3.7.1)
93
93
  rb-fsevent (~> 0.10, >= 0.10.3)
94
94
  rb-inotify (~> 0.9, >= 0.9.10)
95
- loofah (2.14.0)
95
+ loofah (2.15.0)
96
96
  crass (~> 1.0.2)
97
97
  nokogiri (>= 1.5.9)
98
98
  mail (2.7.1)
@@ -101,7 +101,7 @@ GEM
101
101
  method_source (1.0.0)
102
102
  mini_mime (1.1.2)
103
103
  minitest (5.15.0)
104
- mobility (1.2.5)
104
+ mobility (1.2.6)
105
105
  i18n (>= 0.6.10, < 2)
106
106
  request_store (~> 1.0)
107
107
  net-imap (0.2.3)
@@ -120,40 +120,40 @@ GEM
120
120
  net-protocol
121
121
  timeout
122
122
  nio4r (2.5.8)
123
- nokogiri (1.13.1-x86_64-darwin)
123
+ nokogiri (1.13.3-x86_64-darwin)
124
124
  racc (~> 1.4)
125
- nokogiri (1.13.1-x86_64-linux)
125
+ nokogiri (1.13.3-x86_64-linux)
126
126
  racc (~> 1.4)
127
127
  puma (5.6.2)
128
128
  nio4r (~> 2.0)
129
129
  racc (1.6.0)
130
130
  rack (2.2.3)
131
- rack-mini-profiler (2.3.3)
131
+ rack-mini-profiler (3.0.0)
132
132
  rack (>= 1.2.0)
133
133
  rack-test (1.1.0)
134
134
  rack (>= 1.0, < 3)
135
- rails (7.0.2.2)
136
- actioncable (= 7.0.2.2)
137
- actionmailbox (= 7.0.2.2)
138
- actionmailer (= 7.0.2.2)
139
- actionpack (= 7.0.2.2)
140
- actiontext (= 7.0.2.2)
141
- actionview (= 7.0.2.2)
142
- activejob (= 7.0.2.2)
143
- activemodel (= 7.0.2.2)
144
- activerecord (= 7.0.2.2)
145
- activestorage (= 7.0.2.2)
146
- activesupport (= 7.0.2.2)
135
+ rails (7.0.2.3)
136
+ actioncable (= 7.0.2.3)
137
+ actionmailbox (= 7.0.2.3)
138
+ actionmailer (= 7.0.2.3)
139
+ actionpack (= 7.0.2.3)
140
+ actiontext (= 7.0.2.3)
141
+ actionview (= 7.0.2.3)
142
+ activejob (= 7.0.2.3)
143
+ activemodel (= 7.0.2.3)
144
+ activerecord (= 7.0.2.3)
145
+ activestorage (= 7.0.2.3)
146
+ activesupport (= 7.0.2.3)
147
147
  bundler (>= 1.15.0)
148
- railties (= 7.0.2.2)
148
+ railties (= 7.0.2.3)
149
149
  rails-dom-testing (2.0.3)
150
150
  activesupport (>= 4.2.0)
151
151
  nokogiri (>= 1.6)
152
152
  rails-html-sanitizer (1.4.2)
153
153
  loofah (~> 2.3)
154
- railties (7.0.2.2)
155
- actionpack (= 7.0.2.2)
156
- activesupport (= 7.0.2.2)
154
+ railties (7.0.2.3)
155
+ actionpack (= 7.0.2.3)
156
+ activesupport (= 7.0.2.3)
157
157
  method_source
158
158
  rake (>= 12.2)
159
159
  thor (~> 1.0)
@@ -174,7 +174,7 @@ GEM
174
174
  sprockets (> 3.0)
175
175
  sprockets-rails
176
176
  tilt
177
- sprockets (4.0.2)
177
+ sprockets (4.0.3)
178
178
  concurrent-ruby (~> 1.0)
179
179
  rack (> 1, < 3)
180
180
  sprockets-rails (3.4.2)
@@ -212,7 +212,7 @@ DEPENDENCIES
212
212
  mobility (~> 1.2)
213
213
  mobility-actiontext!
214
214
  puma (~> 5.0)
215
- rack-mini-profiler (~> 2.0)
215
+ rack-mini-profiler
216
216
  rails (~> 7.0.0)
217
217
  sass-rails (>= 6)
218
218
  sqlite3 (~> 1.4)
@@ -221,7 +221,7 @@ DEPENDENCIES
221
221
  web-console (>= 4.1.0)
222
222
 
223
223
  RUBY VERSION
224
- ruby 3.1.0p0
224
+ ruby 3.1.1p18
225
225
 
226
226
  BUNDLED WITH
227
- 2.3.7
227
+ 2.3.10
@@ -4,4 +4,6 @@ class Post < ApplicationRecord
4
4
  extend Mobility
5
5
  translates :title, plain: true
6
6
  translates :content
7
+
8
+ has_rich_text :non_i18n_content
7
9
  end
@@ -3,7 +3,7 @@
3
3
  class TranslateRichTexts < ActiveRecord::Migration[6.1]
4
4
  def change
5
5
  # or null: true to allow untranslated rich text
6
- add_column :action_text_rich_texts, :locale, :string, null: false
6
+ add_column :action_text_rich_texts, :locale, :string, null: true
7
7
 
8
8
  remove_index :action_text_rich_texts,
9
9
  column: %i[record_type record_id name],
@@ -20,7 +20,7 @@ ActiveRecord::Schema.define(version: 20_210_114_125_134) do
20
20
  t.integer 'record_id', null: false
21
21
  t.datetime 'created_at', precision: 6, null: false
22
22
  t.datetime 'updated_at', precision: 6, null: false
23
- t.string 'locale', null: false
23
+ t.string 'locale'
24
24
  t.index %w[record_type record_id name locale], name: 'index_action_text_rich_texts_uniqueness',
25
25
  unique: true
26
26
  end
@@ -22,6 +22,11 @@ post_one_content_fr:
22
22
  locale: fr
23
23
  body: <h1>Bonjour le monde !</h1>
24
24
 
25
+ post_one_non_i18n_content:
26
+ record: one (Post)
27
+ name: non_i18n_content
28
+ body: <h1>Hello non i18n world!</h1>
29
+
25
30
  untranslated_title_en:
26
31
  record: untranslated (Post)
27
32
  name: title
@@ -46,7 +46,7 @@ module Mobility
46
46
  assert_equal 'Post Title', post.title
47
47
  end
48
48
 
49
- test 'post has rich text content' do
49
+ test 'post has rich text content association' do
50
50
  post = posts(:one)
51
51
 
52
52
  assert_instance_of Mobility::Backends::ActionText::RichTextTranslation, post.rich_text_content
@@ -57,6 +57,24 @@ module Mobility
57
57
  HTML
58
58
  end
59
59
 
60
+ test 'post has rich text content associations for each locale' do
61
+ post = posts(:one)
62
+
63
+ assert_instance_of Mobility::Backends::ActionText::RichTextTranslation, post.rich_text_content_en
64
+ assert_equal <<~HTML, post.rich_text_content_en.to_s
65
+ <div class="trix-content">
66
+ <h1>Hello world!</h1>
67
+ </div>
68
+ HTML
69
+
70
+ assert_instance_of Mobility::Backends::ActionText::RichTextTranslation, post.rich_text_content_fr
71
+ assert_equal <<~HTML, post.rich_text_content_fr.to_s
72
+ <div class="trix-content">
73
+ <h1>Bonjour le monde !</h1>
74
+ </div>
75
+ HTML
76
+ end
77
+
60
78
  test 'post has different content in different languages' do
61
79
  post = posts(:one)
62
80
 
@@ -95,18 +113,44 @@ module Mobility
95
113
  end
96
114
  end
97
115
 
98
- test 'post content is eager loaded' do
116
+ test 'post content is eager loaded explicitly' do
99
117
  post = assert_queries(2) { Post.with_rich_text_content.last }
100
118
 
101
119
  assert_no_queries do
102
120
  assert_equal 'Hello world!', post.content.to_plain_text
121
+ end
122
+ end
123
+
124
+ test 'correct translation is returned if single translation for different locale was eager loaded' do
125
+ post = assert_queries(2) { Mobility.with_locale(:en) { Post.with_rich_text_content.last } }
103
126
 
104
- skip('FIXME: this should execute no queries')
127
+ assert_equal 'Bonjour le monde !', Mobility.with_locale(:fr) { post.content }.to_plain_text
128
+ end
129
+
130
+ test 'post content is eager loaded with all rich text' do
131
+ post = assert_queries(2) { Post.with_all_rich_text.last }
132
+
133
+ assert_no_queries do
134
+ assert_equal 'Hello world!', post.content.to_plain_text
135
+ end
136
+ end
137
+
138
+ test 'correct translation is returned if all translations for different locale were eager loaded' do
139
+ post = assert_queries(2) { Mobility.with_locale(:en) { Post.with_all_rich_text.last } }
140
+
141
+ assert_equal 'Bonjour le monde !', Mobility.with_locale(:fr) { post.content }.to_plain_text
142
+ end
143
+
144
+ test 'post non_i18n_content is eager loaded with all rich text' do
145
+ post = assert_queries(2) { Post.with_all_rich_text.last }
146
+
147
+ assert_no_queries do
148
+ assert_equal 'Hello non i18n world!', post.non_i18n_content.to_plain_text
105
149
  end
106
150
  end
107
151
 
108
152
  test 'post is being destroyed' do
109
- assert_difference ->{Mobility::Backends::ActionText::RichTextTranslation.count}, -4 do
153
+ assert_difference ->{Mobility::Backends::ActionText::RichTextTranslation.count}, -5 do
110
154
  assert posts(:one).destroy
111
155
  end
112
156
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobility-actiontext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sébastien Dubois
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-13 00:00:00.000000000 Z
11
+ date: 2022-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actiontext
@@ -138,7 +138,9 @@ licenses:
138
138
  metadata:
139
139
  homepage_uri: https://github.com/sedubois/mobility-actiontext
140
140
  source_code_uri: https://github.com/sedubois/mobility-actiontext
141
+ bug_tracker_uri: https://github.com/sedubois/mobility-actiontext/issues
141
142
  changelog_uri: https://github.com/sedubois/mobility-actiontext/blob/main/CHANGELOG.md
143
+ rubygems_mfa_required: 'true'
142
144
  post_install_message:
143
145
  rdoc_options: []
144
146
  require_paths:
@@ -154,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
156
  - !ruby/object:Gem::Version
155
157
  version: '0'
156
158
  requirements: []
157
- rubygems_version: 3.3.3
159
+ rubygems_version: 3.3.7
158
160
  signing_key:
159
161
  specification_version: 4
160
162
  summary: Translate Rails Action Text rich text with Mobility.