locomotive_cms 2.3.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/locomotive/models/content_entry.js.coffee +4 -0
  3. data/app/assets/javascripts/locomotive/views/content_assets/picker_view.js.coffee +0 -2
  4. data/app/assets/javascripts/locomotive/views/content_entries/_form_view.js.coffee +1 -1
  5. data/app/assets/javascripts/locomotive/views/content_entries/_popup_form_view.js.coffee +7 -0
  6. data/app/assets/javascripts/locomotive/views/inline_editor/application_view.js.coffee +1 -1
  7. data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +2 -1
  8. data/app/assets/javascripts/locomotive/views/shared/fields/_relationship_view.js.coffee +45 -0
  9. data/app/assets/javascripts/locomotive/views/shared/fields/belongs_to_view.js.coffee +4 -20
  10. data/app/assets/javascripts/locomotive/views/shared/fields/many_to_many_view.js.coffee +53 -42
  11. data/app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee +0 -1
  12. data/app/assets/stylesheets/locomotive/backoffice/application.css.scss +31 -0
  13. data/app/assets/stylesheets/locomotive/backoffice/formtastic_changes.css.scss +19 -0
  14. data/app/controllers/locomotive/api/accounts_controller.rb +6 -0
  15. data/app/controllers/locomotive/content_entries_controller.rb +1 -1
  16. data/app/helpers/locomotive/content_entries_helper.rb +22 -0
  17. data/app/models/locomotive/content_entry.rb +16 -47
  18. data/app/models/locomotive/content_type.rb +19 -3
  19. data/app/models/locomotive/editable_text.rb +7 -1
  20. data/app/models/locomotive/extensions/content_entry/localized.rb +62 -0
  21. data/app/models/locomotive/extensions/page/tree.rb +5 -0
  22. data/app/models/locomotive/extensions/shared/slug.rb +33 -0
  23. data/app/models/locomotive/page.rb +4 -11
  24. data/app/models/locomotive/snippet.rb +6 -7
  25. data/app/models/locomotive/translation.rb +2 -2
  26. data/app/presenters/locomotive/account_presenter.rb +1 -1
  27. data/app/views/locomotive/content_entries/_list.html.haml +3 -1
  28. data/app/views/locomotive/custom_fields/types/_boolean.html.haml +1 -1
  29. data/app/views/locomotive/custom_fields/types/_date.html.haml +1 -1
  30. data/app/views/locomotive/custom_fields/types/_date_time.html.haml +1 -1
  31. data/app/views/locomotive/custom_fields/types/_email.html.haml +1 -1
  32. data/app/views/locomotive/custom_fields/types/_file.html.haml +1 -1
  33. data/app/views/locomotive/custom_fields/types/_float.html.haml +1 -1
  34. data/app/views/locomotive/custom_fields/types/_integer.html.haml +1 -1
  35. data/app/views/locomotive/custom_fields/types/_many_to_many.html.haml +1 -5
  36. data/app/views/locomotive/custom_fields/types/_select.html.haml +1 -1
  37. data/app/views/locomotive/custom_fields/types/_string.html.haml +1 -1
  38. data/app/views/locomotive/custom_fields/types/_tags.html.haml +1 -1
  39. data/app/views/locomotive/custom_fields/types/_text.html.haml +1 -1
  40. data/config/locales/admin_ui.de.yml +4 -0
  41. data/config/locales/default.zh-CN.yml +162 -52
  42. data/config/locales/devise.bg.yml +1 -1
  43. data/config/locales/devise.cs.yml +1 -1
  44. data/config/locales/devise.de.yml +1 -1
  45. data/config/locales/devise.en.yml +1 -1
  46. data/config/locales/devise.es.yml +2 -2
  47. data/config/locales/devise.et.yml +1 -1
  48. data/config/locales/devise.fr.yml +1 -1
  49. data/config/locales/devise.it.yml +1 -1
  50. data/config/locales/devise.ja.yml +1 -1
  51. data/config/locales/devise.nb.yml +1 -1
  52. data/config/locales/devise.nl.yml +2 -2
  53. data/config/locales/devise.pl.yml +1 -1
  54. data/config/locales/devise.pt-BR.yml +2 -2
  55. data/config/locales/devise.ru.yml +1 -1
  56. data/config/locales/devise.zh-CN.yml +1 -1
  57. data/config/routes.rb +2 -2
  58. data/features/api/accounts.feature +19 -1
  59. data/features/api/authorization/accounts.feature +52 -12
  60. data/features/backoffice/content_types/has_many.feature +3 -3
  61. data/features/backoffice/content_types/integer.feature +4 -4
  62. data/features/backoffice/content_types/many_to_many.feature +1 -1
  63. data/features/backoffice/my_account.feature +1 -0
  64. data/features/step_definitions/web_steps.rb +7 -0
  65. data/lib/locomotive/action_controller/public_responder.rb +24 -1
  66. data/lib/locomotive/core_ext.rb +8 -2
  67. data/lib/locomotive/devise.rb +21 -0
  68. data/lib/locomotive/httparty/webservice.rb +17 -9
  69. data/lib/locomotive/liquid.rb +1 -0
  70. data/lib/locomotive/liquid/tags/consume.rb +12 -11
  71. data/lib/locomotive/liquid/tags/link_to.rb +6 -60
  72. data/lib/locomotive/liquid/tags/path_helper.rb +82 -0
  73. data/lib/locomotive/liquid/tags/path_to.rb +21 -0
  74. data/lib/locomotive/liquid/tags/snippet.rb +1 -1
  75. data/lib/locomotive/render.rb +2 -1
  76. data/lib/locomotive/version.rb +1 -1
  77. data/spec/lib/locomotive/liquid/tags/consume_spec.rb +12 -0
  78. data/spec/lib/locomotive/liquid/tags/path_to_spec.rb +111 -0
  79. data/spec/models/locomotive/content_entry_spec.rb +2 -2
  80. data/spec/models/locomotive/snippet_spec.rb +21 -0
  81. metadata +13 -6
@@ -3,30 +3,12 @@ module Locomotive
3
3
  module Tags
4
4
  class LinkTo < Hybrid
5
5
 
6
- Syntax = /(#{::Liquid::Expression}+)(#{::Liquid::TagAttributes}?)/
7
-
6
+ include PathHelper
8
7
  include ActionView::Helpers::UrlHelper
9
8
 
10
- def initialize(tag_name, markup, tokens, context)
11
- if markup =~ Syntax
12
- @handle = $1
13
- @options = {}
14
- markup.scan(::Liquid::TagAttributes) do |key, value|
15
- @options[key] = value
16
- end
17
- else
18
- raise SyntaxError.new("Syntax Error in 'link_to' - Valid syntax: link_to page_handle, locale es (locale is optional)")
19
- end
20
-
21
- super
22
- end
23
-
24
9
  def render(context)
25
- site = context.registers[:site]
26
-
27
- if page = self.retrieve_page_from_handle(site, context)
28
- label = self.label_from_page(page)
29
- path = self.public_page_url(site, page)
10
+ render_path(context) do |page, path|
11
+ label = label_from_page(page)
30
12
 
31
13
  if @render_as_block
32
14
  context.scopes.last['target'] = page
@@ -34,40 +16,14 @@ module Locomotive
34
16
  end
35
17
 
36
18
  link_to label, path
37
- else
38
- '' # no page found
39
19
  end
40
20
  end
41
21
 
42
- protected
43
-
44
- def retrieve_page_from_handle(site, context)
45
- handle = context[@handle] || @handle
46
-
47
- case handle
48
- when Locomotive::Page then handle
49
- when Locomotive::Liquid::Drops::Page then handle.instance_variable_get(:@_source)
50
- when String then fetch_page(site, handle)
51
- when Locomotive::ContentEntry then fetch_page(site, handle, true)
52
- when Locomotive::Liquid::Drops::ContentEntry then fetch_page(site, handle.instance_variable_get(:@_source), true)
53
- else
54
- nil
55
- end
22
+ def wrong_syntax!
23
+ raise SyntaxError.new("Syntax Error in 'link_to' - Valid syntax: link_to page_handle, locale es (locale is optional)")
56
24
  end
57
25
 
58
- def fetch_page(site, handle, templatized = false)
59
- ::Mongoid::Fields::I18n.with_locale(@options['locale']) do
60
- if templatized
61
- criteria = site.pages.where(target_klass_name: handle.class.to_s, templatized: true)
62
- criteria = criteria.where(handle: @options['with']) if @options['with']
63
- criteria.first.tap do |page|
64
- page.content_entry = handle if page
65
- end
66
- else
67
- site.pages.where(handle: handle).first
68
- end
69
- end
70
- end
26
+ protected
71
27
 
72
28
  def label_from_page(page)
73
29
  ::Mongoid::Fields::I18n.with_locale(@options['locale']) do
@@ -79,16 +35,6 @@ module Locomotive
79
35
  end
80
36
  end
81
37
 
82
- def public_page_url(site, page)
83
- fullpath = site.localized_page_fullpath(page, @options['locale'])
84
-
85
- if page.templatized?
86
- fullpath.gsub!('content_type_template', page.content_entry._slug)
87
- end
88
-
89
- File.join('/', fullpath)
90
- end
91
-
92
38
  end
93
39
 
94
40
  ::Liquid::Template.register_tag('link_to', LinkTo)
@@ -0,0 +1,82 @@
1
+ module Locomotive
2
+ module Liquid
3
+ module Tags
4
+ module PathHelper
5
+
6
+ Syntax = /(#{::Liquid::Expression}+)(#{::Liquid::TagAttributes}?)/
7
+
8
+ def initialize(tag_name, markup, tokens, context)
9
+ if markup =~ Syntax
10
+ @handle = $1
11
+ @options = {}
12
+ markup.scan(::Liquid::TagAttributes) do |key, value|
13
+ @options[key] = value
14
+ end
15
+ else
16
+ self.wrong_syntax!
17
+ end
18
+
19
+ super
20
+ end
21
+
22
+ def render_path(context, &block)
23
+ site = context.registers[:site]
24
+
25
+ if page = self.retrieve_page_from_handle(site, context)
26
+ path = self.public_page_fullpath(site, page)
27
+
28
+ if block_given?
29
+ block.call page, path
30
+ else
31
+ path
32
+ end
33
+ else
34
+ '' # no page found
35
+ end
36
+ end
37
+
38
+ protected
39
+
40
+ def retrieve_page_from_handle(site, context)
41
+ handle = context[@handle] || @handle
42
+
43
+ case handle
44
+ when Locomotive::Page then handle
45
+ when Locomotive::Liquid::Drops::Page then handle.instance_variable_get(:@_source)
46
+ when String then fetch_page(site, handle)
47
+ when Locomotive::ContentEntry then fetch_page(site, handle, true)
48
+ when Locomotive::Liquid::Drops::ContentEntry then fetch_page(site, handle.instance_variable_get(:@_source), true)
49
+ else
50
+ nil
51
+ end
52
+ end
53
+
54
+ def fetch_page(site, handle, templatized = false)
55
+ ::Mongoid::Fields::I18n.with_locale(@options['locale']) do
56
+ if templatized
57
+ criteria = site.pages.where(target_klass_name: handle.class.to_s, templatized: true)
58
+ criteria = criteria.where(handle: @options['with']) if @options['with']
59
+ criteria.first.tap do |page|
60
+ page.content_entry = handle if page
61
+ end
62
+ else
63
+ site.pages.where(handle: handle).first
64
+ end
65
+ end
66
+ end
67
+
68
+ def public_page_fullpath(site, page)
69
+ fullpath = site.localized_page_fullpath(page, @options['locale'])
70
+
71
+ if page.templatized?
72
+ fullpath.gsub!('content_type_template', page.content_entry._slug)
73
+ end
74
+
75
+ File.join('/', fullpath)
76
+ end
77
+
78
+
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,21 @@
1
+ module Locomotive
2
+ module Liquid
3
+ module Tags
4
+ class PathTo < ::Liquid::Tag
5
+
6
+ include PathHelper
7
+
8
+ def render(context)
9
+ render_path(context)
10
+ end
11
+
12
+ def wrong_syntax!
13
+ raise SyntaxError.new("Syntax Error in 'path_to' - Valid syntax: path_to <page|page_handle|content_entry>(, locale: [fr|de|...], with: <page_handle>")
14
+ end
15
+
16
+ end
17
+
18
+ ::Liquid::Template.register_tag('path_to', PathTo)
19
+ end
20
+ end
21
+ end
@@ -54,7 +54,7 @@ module Locomotive
54
54
  @partial = nil
55
55
  else
56
56
  @snippet_id = snippet.id
57
- @partial = ::Liquid::Template.parse(snippet.template, @context.clone)
57
+ @partial = ::Liquid::Template.parse(snippet.template, context.merge(@context))
58
58
  @partial.root.context.clear
59
59
  end
60
60
  end
@@ -198,7 +198,8 @@ module Locomotive
198
198
  'locales' => current_site.locales,
199
199
  'current_user' => Locomotive::Liquid::Drops::CurrentUser.new(current_locomotive_account),
200
200
  'session' => Locomotive::Liquid::Drops::SessionProxy.new,
201
- 'wagon' => false
201
+ 'wagon' => false,
202
+ 'editing' => self.editing_page?
202
203
  }
203
204
  end
204
205
 
@@ -1,3 +1,3 @@
1
1
  module Locomotive #:nodoc
2
- VERSION = '2.3.1'
2
+ VERSION = '2.4.0'
3
3
  end
@@ -48,6 +48,18 @@ describe Locomotive::Liquid::Tags::Consume do
48
48
  template = "{% consume blog from url %}{{ blog.title }}{% endconsume %}"
49
49
  Liquid::Template.parse(template).render('url' => "http://blog.locomotiveapp.org/api/read").should == 'Locomotive rocks !'
50
50
  end
51
+
52
+ it 'puts the response into the liquid variable using a url from a variable that changes within an iteration' do
53
+ base_uri = 'http://blog.locomotiveapp.org'
54
+ template = "{% consume blog from url %}{{ blog.title }}{% endconsume %}"
55
+ compiled_template = Liquid::Template.parse(template)
56
+
57
+ [['/api/read', 'Locomotive rocks !'], ['/api/read_again', 'Locomotive still rocks !']].each do |path, title|
58
+ response = mock('response', code: 200, parsed_response: parsed_response('title' => title))
59
+ Locomotive::Httparty::Webservice.stubs(:get).with(path, {:base_uri => base_uri}).returns(response)
60
+ compiled_template.render('url' => base_uri + path).should == title
61
+ end
62
+ end
51
63
  end
52
64
 
53
65
  context 'timeout' do
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ describe Locomotive::Liquid::Tags::PathTo do
4
+
5
+ before(:each) { I18n.locale = :en }
6
+
7
+ let(:site) { FactoryGirl.create("test site") }
8
+ let(:assigns) { {} }
9
+
10
+ subject { render(template, assigns) }
11
+
12
+ context 'no page responding to the handle' do
13
+
14
+ let(:template) { "{% path_to unknown-page %}" }
15
+
16
+ it { should be_blank }
17
+
18
+ end
19
+
20
+ context 'no page responding to the handle' do
21
+
22
+ let(:assigns) { { 'project' => Locomotive::ContentEntry.new(_slug: 'hello-world', _label_field_name: :_slug ) } }
23
+ let(:template) { "{% path_to project %}" }
24
+
25
+ it { should be_blank }
26
+
27
+ end
28
+
29
+ describe 'page responding to the handle' do
30
+
31
+ let(:page) { create_page(site, 'Hello world', 'my-page') }
32
+ let(:template) { "{% path_to my-page %}" }
33
+ before(:each) { page }
34
+
35
+ it { should == %{/hello-world} }
36
+
37
+ context 'passing a page directly' do
38
+
39
+ let(:assigns) { { 'page' => page } }
40
+ let(:template) { "{% path_to page %}" }
41
+
42
+ it { should == %{/hello-world} }
43
+
44
+ end
45
+
46
+ end
47
+
48
+ describe 'templatized page' do
49
+
50
+ let(:parent_page) { create_page(site, 'List of projects') }
51
+ let(:page) { create_templatized_page(site, 'Template', 'project-template', parent_page, content_type) }
52
+ let(:content_type) { create_content_type(site, 'Projects') }
53
+ let(:content_entry) { create_content_entry(content_type, name: 'My fancy project') }
54
+ let(:assigns) { { 'project' => content_entry } }
55
+ before(:each) { page }
56
+
57
+ context 'without passing the handle' do
58
+
59
+ let(:template) { "{% path_to project %}" }
60
+
61
+ it { should == %{/list-of-projects/my-fancy-project} }
62
+
63
+ end
64
+
65
+ context 'forcing the page' do
66
+
67
+ let(:another_parent_page) { create_page(site, 'Another list of projects') }
68
+ let(:another_page) { create_templatized_page(site, 'Template', 'another-project-template', another_parent_page, content_type) }
69
+ let(:template) { "{% path_to project, with: another-project-template %}" }
70
+ before(:each) { another_page }
71
+
72
+ it { should == %{/another-list-of-projects/my-fancy-project} }
73
+
74
+ end
75
+
76
+ end
77
+
78
+ def render(template, assigns = {})
79
+ liquid_context = ::Liquid::Context.new({},
80
+ { 'contents' => Locomotive::Liquid::Drops::ContentTypes.new }.merge(assigns),
81
+ { site: site })
82
+ output = Liquid::Template.parse(template).render(liquid_context)
83
+ output.gsub(/\n\s{0,}/, '')
84
+ end
85
+
86
+ def create_page(site, title, handle = nil, parent = nil)
87
+ parent ||= site.pages.root.first
88
+ site.pages.create!(parent: parent, title: title, slug: title.permalink, handle: handle)
89
+ end
90
+
91
+ def create_templatized_page(site, title, handle, parent, content_type)
92
+ site.pages.create!(
93
+ parent: parent,
94
+ title: title,
95
+ handle: handle,
96
+ templatized: true,
97
+ target_klass_name: content_type.klass_with_custom_fields(:entries).to_s)
98
+ end
99
+
100
+ def create_content_type(site, name)
101
+ FactoryGirl.build(:content_type, site: site, name: name).tap do |content_type|
102
+ content_type.entries_custom_fields.build(name: 'name', type: 'string', label: 'name')
103
+ content_type.save!
104
+ end
105
+ end
106
+
107
+ def create_content_entry(content_type, attributes)
108
+ content_type.entries.create!(attributes)
109
+ end
110
+
111
+ end
@@ -176,8 +176,8 @@ describe Locomotive::ContentEntry do
176
176
  @content_type.save
177
177
 
178
178
  %w(first second third).each_with_index do |item, index|
179
- content = build_content_entry(title: item.to_s, _position: index)
180
- content.save
179
+ content = build_content_entry(title: item.to_s, _position: index, visible: true)
180
+ content.save!
181
181
  instance_variable_set "@#{item}", content
182
182
  end
183
183
  end
@@ -49,6 +49,27 @@ describe Locomotive::Snippet do
49
49
 
50
50
  end
51
51
 
52
+ context 'for snippets inside a snippet' do
53
+ before :each do
54
+ @nested_snippet = FactoryGirl.create(:snippet, site: @site, slug: 'my_nested_test_snippet', template: "{% include 'my_test_snippet' %}")
55
+ @page = FactoryGirl.create(:page, site: @site, slug: 'my_page_here', raw_template: "{% include 'my_nested_test_snippet' %}")
56
+ end
57
+
58
+ it 'renders the nested snippet' do
59
+ Locomotive::Page.find(@page.id).render({}).should == 'a testing template'
60
+ end
61
+
62
+ it 'updates parent snippets with the new snippet template' do
63
+ @snippet.update_attributes(template: 'a new template')
64
+ Locomotive::Page.find(@page.id).render({}).should == 'a new template'
65
+ end
66
+
67
+ it 'when the parent snippet is updated child snippets are rendered correctly' do
68
+ @nested_snippet.update_attributes(template: "hello {% include 'my_test_snippet' %}")
69
+ Locomotive::Page.find(@page.id).render({}).should == 'hello a testing template'
70
+ end
71
+ end
72
+
52
73
  context '#i18n' do
53
74
 
54
75
  before :each do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: locomotive_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Didier Lafforgue
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-10 00:00:00.000000000 Z
11
+ date: 2013-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: devise
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 2.2.3
47
+ version: 2.2.7
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 2.2.3
54
+ version: 2.2.7
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: devise-encryptable
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -610,6 +610,7 @@ files:
610
610
  - app/assets/javascripts/locomotive/views/pages/list_view.js.coffee
611
611
  - app/assets/javascripts/locomotive/views/pages/new_view.js.coffee
612
612
  - app/assets/javascripts/locomotive/views/shared/asset_picker_view.js.coffee
613
+ - app/assets/javascripts/locomotive/views/shared/fields/_relationship_view.js.coffee
613
614
  - app/assets/javascripts/locomotive/views/shared/fields/belongs_to_view.js.coffee
614
615
  - app/assets/javascripts/locomotive/views/shared/fields/file_view.js.coffee
615
616
  - app/assets/javascripts/locomotive/views/shared/fields/has_many_view.js.coffee
@@ -788,6 +789,7 @@ files:
788
789
  - app/models/locomotive/extensions/asset/types.rb
789
790
  - app/models/locomotive/extensions/asset/vignette.rb
790
791
  - app/models/locomotive/extensions/content_entry/csv.rb
792
+ - app/models/locomotive/extensions/content_entry/localized.rb
791
793
  - app/models/locomotive/extensions/content_type/default_values.rb
792
794
  - app/models/locomotive/extensions/content_type/item_template.rb
793
795
  - app/models/locomotive/extensions/content_type/sync.rb
@@ -799,6 +801,7 @@ files:
799
801
  - app/models/locomotive/extensions/page/templatized.rb
800
802
  - app/models/locomotive/extensions/page/tree.rb
801
803
  - app/models/locomotive/extensions/shared/seo.rb
804
+ - app/models/locomotive/extensions/shared/slug.rb
802
805
  - app/models/locomotive/extensions/site/first_installation.rb
803
806
  - app/models/locomotive/extensions/site/locales.rb
804
807
  - app/models/locomotive/extensions/site/subdomain_domains.rb
@@ -1084,6 +1087,8 @@ files:
1084
1087
  - lib/locomotive/liquid/tags/locale_switcher.rb
1085
1088
  - lib/locomotive/liquid/tags/nav.rb
1086
1089
  - lib/locomotive/liquid/tags/paginate.rb
1090
+ - lib/locomotive/liquid/tags/path_helper.rb
1091
+ - lib/locomotive/liquid/tags/path_to.rb
1087
1092
  - lib/locomotive/liquid/tags/seo.rb
1088
1093
  - lib/locomotive/liquid/tags/session_assign.rb
1089
1094
  - lib/locomotive/liquid/tags/snippet.rb
@@ -1299,6 +1304,7 @@ files:
1299
1304
  - spec/lib/locomotive/liquid/tags/locale_switcher_spec.rb
1300
1305
  - spec/lib/locomotive/liquid/tags/nav_spec.rb
1301
1306
  - spec/lib/locomotive/liquid/tags/paginate_spec.rb
1307
+ - spec/lib/locomotive/liquid/tags/path_to_spec.rb
1302
1308
  - spec/lib/locomotive/liquid/tags/seo_spec.rb
1303
1309
  - spec/lib/locomotive/liquid/tags/with_scope_spec.rb
1304
1310
  - spec/lib/locomotive/presentable_spec.rb
@@ -1514,6 +1520,7 @@ test_files:
1514
1520
  - spec/lib/locomotive/liquid/tags/locale_switcher_spec.rb
1515
1521
  - spec/lib/locomotive/liquid/tags/nav_spec.rb
1516
1522
  - spec/lib/locomotive/liquid/tags/paginate_spec.rb
1523
+ - spec/lib/locomotive/liquid/tags/path_to_spec.rb
1517
1524
  - spec/lib/locomotive/liquid/tags/seo_spec.rb
1518
1525
  - spec/lib/locomotive/liquid/tags/with_scope_spec.rb
1519
1526
  - spec/lib/locomotive/presentable_spec.rb