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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +7 -7
  3. data/bin/steam.rb +1 -1
  4. data/lib/locomotive/steam/adapters/filesystem.rb +8 -1
  5. data/lib/locomotive/steam/adapters/filesystem/sanitizers/content_entry.rb +27 -1
  6. data/lib/locomotive/steam/adapters/filesystem/sanitizers/site.rb +51 -0
  7. data/lib/locomotive/steam/adapters/filesystem/yaml_loaders/site.rb +8 -0
  8. data/lib/locomotive/steam/adapters/mongodb.rb +20 -1
  9. data/lib/locomotive/steam/adapters/mongodb/command.rb +8 -0
  10. data/lib/locomotive/steam/adapters/mongodb/query.rb +20 -1
  11. data/lib/locomotive/steam/entities/content_type.rb +1 -0
  12. data/lib/locomotive/steam/entities/content_type_field.rb +2 -1
  13. data/lib/locomotive/steam/entities/site.rb +3 -1
  14. data/lib/locomotive/steam/initializers/sprockets.rb +13 -3
  15. data/lib/locomotive/steam/liquid/drops/content_entry.rb +1 -1
  16. data/lib/locomotive/steam/liquid/drops/metafields.rb +97 -0
  17. data/lib/locomotive/steam/liquid/drops/site.rb +4 -0
  18. data/lib/locomotive/steam/liquid/filters/misc.rb +4 -0
  19. data/lib/locomotive/steam/liquid/tags/consume.rb +17 -6
  20. data/lib/locomotive/steam/liquid/tags/nav.rb +17 -11
  21. data/lib/locomotive/steam/middlewares/helpers.rb +1 -1
  22. data/lib/locomotive/steam/middlewares/page.rb +1 -0
  23. data/lib/locomotive/steam/middlewares/renderer.rb +8 -2
  24. data/lib/locomotive/steam/models/repository.rb +4 -0
  25. data/lib/locomotive/steam/repositories/content_type_field_repository.rb +4 -0
  26. data/lib/locomotive/steam/version.rb +1 -1
  27. data/locomotivecms_steam.gemspec +1 -1
  28. data/spec/fixtures/default/app/content_types/events.yml +1 -0
  29. data/spec/fixtures/default/app/views/pages/basic.liquid.haml +12 -0
  30. data/spec/fixtures/default/app/views/pages/tags/nav.liquid.haml +2 -0
  31. data/spec/fixtures/default/config/metafields_schema.yml +33 -0
  32. data/spec/fixtures/default/config/site.yml +13 -0
  33. data/spec/fixtures/default/data/events.yml +1 -2
  34. data/spec/integration/adapters/mongodb_spec.rb +49 -0
  35. data/spec/integration/repositories/content_entry_repository_spec.rb +26 -0
  36. data/spec/integration/server/metafields_spec.rb +26 -0
  37. data/spec/integration/server/nav_spec.rb +8 -0
  38. data/spec/unit/adapters/filesystem/sanitizers/site_spec.rb +59 -0
  39. data/spec/unit/adapters/filesystem/yaml_loaders/site_spec.rb +12 -2
  40. data/spec/unit/adapters/filesystem_adapter_spec.rb +18 -0
  41. data/spec/unit/adapters/mongodb/query_spec.rb +25 -1
  42. data/spec/unit/entities/content_type_spec.rb +10 -0
  43. data/spec/unit/initializers/sprockets_spec.rb +36 -0
  44. data/spec/unit/liquid/drops/content_entry_spec.rb +3 -1
  45. data/spec/unit/liquid/drops/metafields_spec.rb +81 -0
  46. data/spec/unit/liquid/filters/misc_spec.rb +13 -0
  47. data/spec/unit/liquid/tags/consume_spec.rb +7 -0
  48. data/spec/unit/liquid/tags/nav_spec.rb +9 -1
  49. data/spec/unit/liquid/tags/path_to_spec.rb +1 -1
  50. data/spec/unit/middlewares/helpers_spec.rb +32 -0
  51. data/spec/unit/middlewares/renderer_spec.rb +17 -2
  52. data/spec/unit/repositories/content_entry_repository_spec.rb +11 -11
  53. data/spec/unit/repositories/content_type_field_repository_spec.rb +10 -0
  54. 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(['Missing 404 page'])
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.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-01-12 00:00:00.000000000 Z
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.1
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.1
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