diff --git a/features/admin/snippets.feature b/features/admin/snippets.feature new file mode 100644 index 00000000..b59b2a9b --- /dev/null +++ b/features/admin/snippets.feature @@ -0,0 +1,39 @@ +Feature: Snippets + In order to manage snippets + As an administrator + I want to add/edit/delete snippets of my site + +Background: + Given I have the site: "test site" set up + And I am an authenticated user + And a page named "home" with the template: + """ + {% include 'yield' %} + """ + And a snippet named "yield" with the template: + """ + "yield" + """ + + +Scenario: Creating a Snippet + When I go to theme assets + And I follow "new snippet" + And I fill in "Name" with "Banner" + And I fill in "Slug" with "banner" + And I fill in "snippet_template" with "banner" + And I press "Create" + Then I should see "Snippet was successfully created." + And I should have "banner" in the banner snippet + +Scenario: Updating a Snippet that includes another snippet + Given a snippet named "other" with the template: + """ + "other" + """ + When I go to theme assets + And I follow "yield" + And I fill in "snippet_template" with "{% include 'other' %}" + And I press "Update" + Then I should see "Snippet was successfully updated." + And I should have "{% include 'other' %}" in the yield snippet diff --git a/features/step_definitions/snippet_steps.rb b/features/step_definitions/snippet_steps.rb index 440ecc96..830d9e40 100644 --- a/features/step_definitions/snippet_steps.rb +++ b/features/step_definitions/snippet_steps.rb @@ -13,4 +13,11 @@ Given /^a snippet named "([^"]*)" with the template:$/ do |name, template| @snippet = create_snippet(name, template) end +# checks to see if a string is in the slug +Then /^I should have "(.*)" in the (.*) snippet/ do |content, snippet_slug| + snippet = @site.snippets.where(:slug => snippet_slug).first + raise "Could not find snippet: #{snippet_slug}" unless snippet + + snippet.template.should == content +end diff --git a/lib/locomotive/liquid/tags/snippet.rb b/lib/locomotive/liquid/tags/snippet.rb index 336905bf..19c6d7e1 100644 --- a/lib/locomotive/liquid/tags/snippet.rb +++ b/lib/locomotive/liquid/tags/snippet.rb @@ -12,11 +12,16 @@ module Locomotive @slug = @template_name.gsub('\'', '') - (@context[:snippets] << @slug).uniq! + if @context[:snippets].present? + (@context[:snippets] << @slug).uniq! + else + @context[:snippets] = [@slug] + end - snippet = @context[:site].snippets.where(:slug => @slug).first - - self.refresh(snippet) if snippet + if @context[:site].present? + snippet = @context[:site].snippets.where(:slug => @slug).first + self.refresh(snippet) if snippet + end end def render(context)