locomotivecms_steam 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -7
- data/bin/steam.rb +1 -1
- data/lib/locomotive/steam/adapters/filesystem.rb +8 -1
- data/lib/locomotive/steam/adapters/filesystem/sanitizers/content_entry.rb +27 -1
- data/lib/locomotive/steam/adapters/filesystem/sanitizers/site.rb +51 -0
- data/lib/locomotive/steam/adapters/filesystem/yaml_loaders/site.rb +8 -0
- data/lib/locomotive/steam/adapters/mongodb.rb +20 -1
- data/lib/locomotive/steam/adapters/mongodb/command.rb +8 -0
- data/lib/locomotive/steam/adapters/mongodb/query.rb +20 -1
- data/lib/locomotive/steam/entities/content_type.rb +1 -0
- data/lib/locomotive/steam/entities/content_type_field.rb +2 -1
- data/lib/locomotive/steam/entities/site.rb +3 -1
- data/lib/locomotive/steam/initializers/sprockets.rb +13 -3
- data/lib/locomotive/steam/liquid/drops/content_entry.rb +1 -1
- data/lib/locomotive/steam/liquid/drops/metafields.rb +97 -0
- data/lib/locomotive/steam/liquid/drops/site.rb +4 -0
- data/lib/locomotive/steam/liquid/filters/misc.rb +4 -0
- data/lib/locomotive/steam/liquid/tags/consume.rb +17 -6
- data/lib/locomotive/steam/liquid/tags/nav.rb +17 -11
- data/lib/locomotive/steam/middlewares/helpers.rb +1 -1
- data/lib/locomotive/steam/middlewares/page.rb +1 -0
- data/lib/locomotive/steam/middlewares/renderer.rb +8 -2
- data/lib/locomotive/steam/models/repository.rb +4 -0
- data/lib/locomotive/steam/repositories/content_type_field_repository.rb +4 -0
- data/lib/locomotive/steam/version.rb +1 -1
- data/locomotivecms_steam.gemspec +1 -1
- data/spec/fixtures/default/app/content_types/events.yml +1 -0
- data/spec/fixtures/default/app/views/pages/basic.liquid.haml +12 -0
- data/spec/fixtures/default/app/views/pages/tags/nav.liquid.haml +2 -0
- data/spec/fixtures/default/config/metafields_schema.yml +33 -0
- data/spec/fixtures/default/config/site.yml +13 -0
- data/spec/fixtures/default/data/events.yml +1 -2
- data/spec/integration/adapters/mongodb_spec.rb +49 -0
- data/spec/integration/repositories/content_entry_repository_spec.rb +26 -0
- data/spec/integration/server/metafields_spec.rb +26 -0
- data/spec/integration/server/nav_spec.rb +8 -0
- data/spec/unit/adapters/filesystem/sanitizers/site_spec.rb +59 -0
- data/spec/unit/adapters/filesystem/yaml_loaders/site_spec.rb +12 -2
- data/spec/unit/adapters/filesystem_adapter_spec.rb +18 -0
- data/spec/unit/adapters/mongodb/query_spec.rb +25 -1
- data/spec/unit/entities/content_type_spec.rb +10 -0
- data/spec/unit/initializers/sprockets_spec.rb +36 -0
- data/spec/unit/liquid/drops/content_entry_spec.rb +3 -1
- data/spec/unit/liquid/drops/metafields_spec.rb +81 -0
- data/spec/unit/liquid/filters/misc_spec.rb +13 -0
- data/spec/unit/liquid/tags/consume_spec.rb +7 -0
- data/spec/unit/liquid/tags/nav_spec.rb +9 -1
- data/spec/unit/liquid/tags/path_to_spec.rb +1 -1
- data/spec/unit/middlewares/helpers_spec.rb +32 -0
- data/spec/unit/middlewares/renderer_spec.rb +17 -2
- data/spec/unit/repositories/content_entry_repository_spec.rb +11 -11
- data/spec/unit/repositories/content_type_field_repository_spec.rb +10 -0
- metadata +18 -4
@@ -14,14 +14,29 @@ describe Locomotive::Steam::Middlewares::Renderer do
|
|
14
14
|
|
15
15
|
describe 'missing 404 page' do
|
16
16
|
|
17
|
+
let(:locale) { 'en' }
|
18
|
+
let(:site) { instance_double('Site', default_locale: 'en') }
|
19
|
+
|
17
20
|
subject do
|
18
|
-
middleware.call env_for('http://www.example.com', { 'steam.page' => nil })
|
21
|
+
middleware.call env_for('http://www.example.com', { 'steam.page' => nil, 'steam.locale' => locale, 'steam.site' => site })
|
19
22
|
end
|
20
23
|
|
21
24
|
specify 'return 200' do
|
22
25
|
code, headers, response = subject
|
23
26
|
expect(code).to eq(404)
|
24
|
-
expect(response).to eq([
|
27
|
+
expect(response).to eq(["Your 404 page is missing. Please create it."])
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'in another locale' do
|
31
|
+
|
32
|
+
let(:locale) { 'fr' }
|
33
|
+
|
34
|
+
specify 'return 200' do
|
35
|
+
code, headers, response = subject
|
36
|
+
expect(code).to eq(404)
|
37
|
+
expect(response).to eq(["Your 404 page is missing in the fr locale. Please create it."])
|
38
|
+
end
|
39
|
+
|
25
40
|
end
|
26
41
|
|
27
42
|
end
|
@@ -5,7 +5,7 @@ require_relative '../../../lib/locomotive/steam/adapters/filesystem.rb'
|
|
5
5
|
describe Locomotive::Steam::ContentEntryRepository do
|
6
6
|
|
7
7
|
let(:_fields) { instance_double('Fields', selects: [], belongs_to: [], many_to_many: []) }
|
8
|
-
let(:type) { build_content_type('Articles', label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }) }
|
8
|
+
let(:type) { build_content_type('Articles', label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }, fields_with_default: []) }
|
9
9
|
let(:entries) { [{ content_type_id: 1, _position: 0, _label: 'Update #1', title: { fr: 'Mise a jour #1' }, text: { en: 'added some free stuff', fr: 'phrase FR' }, date: '2009/05/12', category: 'General' }] }
|
10
10
|
let(:locale) { :en }
|
11
11
|
let(:site) { instance_double('Site', _id: 1, default_locale: :en, locales: %i(en fr)) }
|
@@ -108,7 +108,7 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
context 'with a has_many field' do
|
111
|
-
let(:type) { build_content_type('Articles', label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { articles: instance_double('Field', type: :has_many) }) }
|
111
|
+
let(:type) { build_content_type('Articles', label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { articles: instance_double('Field', type: :has_many) }, fields_with_default: []) }
|
112
112
|
let(:proxy_repository) { repository.dup }
|
113
113
|
let(:entry) { instance_double('Entry', articles: proxy_repository) }
|
114
114
|
let(:name) { :articles }
|
@@ -125,7 +125,7 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
125
125
|
|
126
126
|
describe '#next' do
|
127
127
|
|
128
|
-
let(:type) { build_content_type('Articles', order_by: { _position: 'asc' }, label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }) }
|
128
|
+
let(:type) { build_content_type('Articles', order_by: { _position: 'asc' }, label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }, fields_with_default: []) }
|
129
129
|
let(:entries) do
|
130
130
|
[
|
131
131
|
{ content_type_id: 1, _position: 0, _label: 'Update #1', title: { fr: 'Mise a jour #1' }, text: { en: 'added some free stuff', fr: 'phrase FR' }, date: '2009/05/12', category: 'General' },
|
@@ -157,7 +157,7 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
157
157
|
|
158
158
|
describe '#previous' do
|
159
159
|
|
160
|
-
let(:type) { build_content_type('Articles', order_by: { _position: 'asc' }, label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }) }
|
160
|
+
let(:type) { build_content_type('Articles', order_by: { _position: 'asc' }, label_field_name: :title, localized_names: [:title], fields: _fields, fields_by_name: { title: instance_double('Field', name: :title, type: :string) }, fields_with_default: []) }
|
161
161
|
let(:entries) do
|
162
162
|
[
|
163
163
|
{ content_type_id: 1, _position: 0, _label: 'Update #1', title: { fr: 'Mise a jour #1' }, text: { en: 'added some free stuff', fr: 'phrase FR' }, date: '2009/05/12', category: 'General' },
|
@@ -204,7 +204,7 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
204
204
|
category: instance_double('SelectField', name: :category, type: :select, select_options: { en: ['cooking', 'bread'], fr: ['cuisine', 'pain'] })
|
205
205
|
}
|
206
206
|
end
|
207
|
-
let(:type) { build_content_type('Articles', order_by: '_position asc', label_field_name: :title, localized_names: [:title, :category], fields: _fields, fields_by_name: fields) }
|
207
|
+
let(:type) { build_content_type('Articles', order_by: '_position asc', label_field_name: :title, localized_names: [:title, :category], fields: _fields, fields_by_name: fields, fields_with_default: []) }
|
208
208
|
let(:name) { :category }
|
209
209
|
|
210
210
|
let(:options) {
|
@@ -243,9 +243,9 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
243
243
|
describe 'belongs_to' do
|
244
244
|
|
245
245
|
let(:field) { instance_double('Field', name: :author, type: :belongs_to, association_options: { target_id: 2 }) }
|
246
|
-
let(:type) { build_content_type('Articles', label_field_name: :title, association_fields: [field]) }
|
246
|
+
let(:type) { build_content_type('Articles', label_field_name: :title, association_fields: [field], fields_with_default: []) }
|
247
247
|
let(:entries) { [{ content_type_id: 1, title: 'Hello world', author_id: 'john-doe' }] }
|
248
|
-
let(:other_type) { build_content_type('Authors', _id: 2, label_field_name: :name, fields: _fields, fields_by_name: { name: instance_double('Field', name: :name, type: :string) }) }
|
248
|
+
let(:other_type) { build_content_type('Authors', _id: 2, label_field_name: :name, fields: _fields, fields_by_name: { name: instance_double('Field', name: :name, type: :string) }, fields_with_default: []) }
|
249
249
|
let(:other_entries) { [{ content_type_id: 2, _id: 'john-doe', name: 'John Doe' }] }
|
250
250
|
|
251
251
|
let(:type_repository) { instance_double('ArticleBelongsToRepository', selects: [], belongs_to: [], many_to_many: []) }
|
@@ -270,9 +270,9 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
270
270
|
describe 'has_many' do
|
271
271
|
|
272
272
|
let(:field) { instance_double('Field', name: :articles, type: :has_many, association_options: { target_id: 2, inverse_of: :author, order_by: 'position_in_author' }) }
|
273
|
-
let(:type) { build_content_type('Authors', label_field_name: :name, association_fields: [field]) }
|
273
|
+
let(:type) { build_content_type('Authors', label_field_name: :name, association_fields: [field], fields_with_default: []) }
|
274
274
|
let(:entries) { [{ content_type_id: 1, _id: 'john-doe', name: 'John Doe' }] }
|
275
|
-
let(:other_type) { build_content_type('Articles', _id: 2, label_field_name: :title, fields: _fields, fields_by_name: { name: instance_double('Field', name: :title, type: :string) }) }
|
275
|
+
let(:other_type) { build_content_type('Articles', _id: 2, label_field_name: :title, fields: _fields, fields_by_name: { name: instance_double('Field', name: :title, type: :string) }, fields_with_default: []) }
|
276
276
|
let(:other_entries) {
|
277
277
|
[
|
278
278
|
{ content_type_id: 2, _id: 'hello-world', title: 'Hello world', author_id: 'john-doe', position_in_author: 2 },
|
@@ -303,9 +303,9 @@ describe Locomotive::Steam::ContentEntryRepository do
|
|
303
303
|
describe 'many_to_many' do
|
304
304
|
|
305
305
|
let(:field) { instance_double('Field', name: :articles, type: :many_to_many, association_options: { target_id: 2, inverse_of: :authors }) }
|
306
|
-
let(:type) { build_content_type('Authors', label_field_name: :name, association_fields: [field], fields: _fields) }
|
306
|
+
let(:type) { build_content_type('Authors', label_field_name: :name, association_fields: [field], fields: _fields, fields_with_default: []) }
|
307
307
|
let(:entries) { [{ content_type_id: 1, _id: 1, name: 'John Doe', article_ids: ['hello-world', 'lorem-ipsum'] }] }
|
308
|
-
let(:other_type) { build_content_type('Articles', _id: 2, label_field_name: :title, fields: _fields, fields_by_name: { name: instance_double('Field', name: :title, type: :string) }) }
|
308
|
+
let(:other_type) { build_content_type('Articles', _id: 2, label_field_name: :title, fields: _fields, fields_by_name: { name: instance_double('Field', name: :title, type: :string) }, fields_with_default: []) }
|
309
309
|
let(:other_entries) {
|
310
310
|
[
|
311
311
|
{ content_type_id: 2, _id: 'hello-world', title: 'Hello world', author_id: 'john-doe', position_in_author: 2 },
|
@@ -48,4 +48,14 @@ describe Locomotive::Steam::ContentTypeFieldRepository do
|
|
48
48
|
|
49
49
|
end
|
50
50
|
|
51
|
+
describe '#default' do
|
52
|
+
|
53
|
+
let(:collection) { [{ name: 'name', type: 'string' }, { name: 'email', type: 'email', default: 'john@doe.net' }] }
|
54
|
+
|
55
|
+
subject { repository.default }
|
56
|
+
|
57
|
+
it { expect(subject.first.name).to eq 'email' }
|
58
|
+
|
59
|
+
end
|
60
|
+
|
51
61
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locomotivecms_steam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Didier Lafforgue
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -75,14 +75,14 @@ dependencies:
|
|
75
75
|
requirements:
|
76
76
|
- - "~>"
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 1.6.7.
|
78
|
+
version: 1.6.7.2
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 1.6.7.
|
85
|
+
version: 1.6.7.2
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: sanitize
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
@@ -417,6 +417,7 @@ files:
|
|
417
417
|
- lib/locomotive/steam/adapters/filesystem/sanitizers/content_type.rb
|
418
418
|
- lib/locomotive/steam/adapters/filesystem/sanitizers/page.rb
|
419
419
|
- lib/locomotive/steam/adapters/filesystem/sanitizers/simple.rb
|
420
|
+
- lib/locomotive/steam/adapters/filesystem/sanitizers/site.rb
|
420
421
|
- lib/locomotive/steam/adapters/filesystem/sanitizers/snippet.rb
|
421
422
|
- lib/locomotive/steam/adapters/filesystem/simple_cache_store.rb
|
422
423
|
- lib/locomotive/steam/adapters/filesystem/yaml_loader.rb
|
@@ -461,6 +462,7 @@ files:
|
|
461
462
|
- lib/locomotive/steam/liquid/drops/content_types.rb
|
462
463
|
- lib/locomotive/steam/liquid/drops/current_user.rb
|
463
464
|
- lib/locomotive/steam/liquid/drops/i18n_base.rb
|
465
|
+
- lib/locomotive/steam/liquid/drops/metafields.rb
|
464
466
|
- lib/locomotive/steam/liquid/drops/page.rb
|
465
467
|
- lib/locomotive/steam/liquid/drops/session_proxy.rb
|
466
468
|
- lib/locomotive/steam/liquid/drops/site.rb
|
@@ -618,6 +620,7 @@ files:
|
|
618
620
|
- spec/fixtures/default/app/views/snippets/song.liquid
|
619
621
|
- spec/fixtures/default/config/deploy.yml
|
620
622
|
- spec/fixtures/default/config/deploy_example.yml
|
623
|
+
- spec/fixtures/default/config/metafields_schema.yml
|
621
624
|
- spec/fixtures/default/config/site.yml
|
622
625
|
- spec/fixtures/default/config/translations.yml
|
623
626
|
- spec/fixtures/default/data/bands.yml
|
@@ -664,6 +667,7 @@ files:
|
|
664
667
|
- spec/fixtures/mongodb/locomotive_translations.bson
|
665
668
|
- spec/fixtures/mongodb/locomotive_translations.metadata.json
|
666
669
|
- spec/fixtures/mongodb/system.indexes.bson
|
670
|
+
- spec/integration/adapters/mongodb_spec.rb
|
667
671
|
- spec/integration/integration_helper.rb
|
668
672
|
- spec/integration/liquid/drops/page_spec.rb
|
669
673
|
- spec/integration/liquid/filters/translate_spec.rb
|
@@ -679,6 +683,7 @@ files:
|
|
679
683
|
- spec/integration/server/basic_spec.rb
|
680
684
|
- spec/integration/server/contact_form_spec.rb
|
681
685
|
- spec/integration/server/liquid_spec.rb
|
686
|
+
- spec/integration/server/metafields_spec.rb
|
682
687
|
- spec/integration/server/nav_spec.rb
|
683
688
|
- spec/integration/server/session_spec.rb
|
684
689
|
- spec/integration/server/sitemap_spec.rb
|
@@ -696,6 +701,7 @@ files:
|
|
696
701
|
- spec/support/mongo.rb
|
697
702
|
- spec/support/pry.rb
|
698
703
|
- spec/support/time.rb
|
704
|
+
- spec/unit/adapters/filesystem/sanitizers/site_spec.rb
|
699
705
|
- spec/unit/adapters/filesystem/simple_cache_store_spec.rb
|
700
706
|
- spec/unit/adapters/filesystem/yaml_loaders/content_entry_spec.rb
|
701
707
|
- spec/unit/adapters/filesystem/yaml_loaders/content_type_spec.rb
|
@@ -728,6 +734,7 @@ files:
|
|
728
734
|
- spec/unit/liquid/drops/content_entry_spec.rb
|
729
735
|
- spec/unit/liquid/drops/content_types_spec.rb
|
730
736
|
- spec/unit/liquid/drops/current_user_spec.rb
|
737
|
+
- spec/unit/liquid/drops/metafields_spec.rb
|
731
738
|
- spec/unit/liquid/drops/page_spec.rb
|
732
739
|
- spec/unit/liquid/drops/session_proxy_spec.rb
|
733
740
|
- spec/unit/liquid/drops/site_spec.rb
|
@@ -763,6 +770,7 @@ files:
|
|
763
770
|
- spec/unit/liquid/tags/snippet_spec.rb
|
764
771
|
- spec/unit/liquid/tags/with_scope_spec.rb
|
765
772
|
- spec/unit/middlewares/dynamic_assets_spec.rb
|
773
|
+
- spec/unit/middlewares/helpers_spec.rb
|
766
774
|
- spec/unit/middlewares/locale_redirection_spec.rb
|
767
775
|
- spec/unit/middlewares/private_access_spec.rb
|
768
776
|
- spec/unit/middlewares/renderer_spec.rb
|
@@ -863,6 +871,7 @@ test_files:
|
|
863
871
|
- spec/fixtures/default/app/views/snippets/song.liquid
|
864
872
|
- spec/fixtures/default/config/deploy.yml
|
865
873
|
- spec/fixtures/default/config/deploy_example.yml
|
874
|
+
- spec/fixtures/default/config/metafields_schema.yml
|
866
875
|
- spec/fixtures/default/config/site.yml
|
867
876
|
- spec/fixtures/default/config/translations.yml
|
868
877
|
- spec/fixtures/default/data/bands.yml
|
@@ -909,6 +918,7 @@ test_files:
|
|
909
918
|
- spec/fixtures/mongodb/locomotive_translations.bson
|
910
919
|
- spec/fixtures/mongodb/locomotive_translations.metadata.json
|
911
920
|
- spec/fixtures/mongodb/system.indexes.bson
|
921
|
+
- spec/integration/adapters/mongodb_spec.rb
|
912
922
|
- spec/integration/integration_helper.rb
|
913
923
|
- spec/integration/liquid/drops/page_spec.rb
|
914
924
|
- spec/integration/liquid/filters/translate_spec.rb
|
@@ -924,6 +934,7 @@ test_files:
|
|
924
934
|
- spec/integration/server/basic_spec.rb
|
925
935
|
- spec/integration/server/contact_form_spec.rb
|
926
936
|
- spec/integration/server/liquid_spec.rb
|
937
|
+
- spec/integration/server/metafields_spec.rb
|
927
938
|
- spec/integration/server/nav_spec.rb
|
928
939
|
- spec/integration/server/session_spec.rb
|
929
940
|
- spec/integration/server/sitemap_spec.rb
|
@@ -941,6 +952,7 @@ test_files:
|
|
941
952
|
- spec/support/mongo.rb
|
942
953
|
- spec/support/pry.rb
|
943
954
|
- spec/support/time.rb
|
955
|
+
- spec/unit/adapters/filesystem/sanitizers/site_spec.rb
|
944
956
|
- spec/unit/adapters/filesystem/simple_cache_store_spec.rb
|
945
957
|
- spec/unit/adapters/filesystem/yaml_loaders/content_entry_spec.rb
|
946
958
|
- spec/unit/adapters/filesystem/yaml_loaders/content_type_spec.rb
|
@@ -973,6 +985,7 @@ test_files:
|
|
973
985
|
- spec/unit/liquid/drops/content_entry_spec.rb
|
974
986
|
- spec/unit/liquid/drops/content_types_spec.rb
|
975
987
|
- spec/unit/liquid/drops/current_user_spec.rb
|
988
|
+
- spec/unit/liquid/drops/metafields_spec.rb
|
976
989
|
- spec/unit/liquid/drops/page_spec.rb
|
977
990
|
- spec/unit/liquid/drops/session_proxy_spec.rb
|
978
991
|
- spec/unit/liquid/drops/site_spec.rb
|
@@ -1008,6 +1021,7 @@ test_files:
|
|
1008
1021
|
- spec/unit/liquid/tags/snippet_spec.rb
|
1009
1022
|
- spec/unit/liquid/tags/with_scope_spec.rb
|
1010
1023
|
- spec/unit/middlewares/dynamic_assets_spec.rb
|
1024
|
+
- spec/unit/middlewares/helpers_spec.rb
|
1011
1025
|
- spec/unit/middlewares/locale_redirection_spec.rb
|
1012
1026
|
- spec/unit/middlewares/private_access_spec.rb
|
1013
1027
|
- spec/unit/middlewares/renderer_spec.rb
|