Sha256: 9e66210f154c2b0c3b025c482c2051fcf746184a339a9081c5cadfeb88d78c9f

Contents?: true

Size: 1.87 KB

Versions: 2

Compression:

Stored size: 1.87 KB

Contents

require 'spec_helper'

module Landable
  describe HasTemplates do
    before(:each) do
      create_list :template, 2
      create :template, slug: 'I have a space'
    end

    let(:templates) { Landable::Template.last(3) }
    let(:subject) do
      build :page, body: "
          <div>{% template #{templates[0].slug} %}</div>
          <div>{% template #{templates[1].slug} %}</div>
          <div>{% template #{templates[2].slug} %}</div>
        "
    end

    describe '#templates' do
      it 'should return templates' do
        slugs = [templates[0].slug, templates[1].slug, templates[2].slug]
        subject.templates.should eq Landable::Template.where(slug: slugs)
      end
    end

    describe '#template_names' do
      it 'should pull template slugs out of the body' do
        subject.template_names.sort.should eq templates.map(&:slug).uniq.sort
      end
    end

    describe '#save_templates!' do
      it 'should save the templates' do
        assets_double = double
        subject.should_receive(:templates) { assets_double }
        subject.should_receive(:templates=).with(assets_double)
        subject.save_templates!
      end

      it 'should be called during save' do
        subject.should_receive :save_templates!
        subject.save!
      end
    end

    describe 'body=' do
      it 'should reset the template_slug cache, then set the body' do
        subject.instance_eval { @template_slug = 'foo' }
        subject.body = 'bar'
        subject.body.should eq 'bar'
        subject.instance_eval { @template_slug }.should be_nil
        subject.templates.should eq []
      end
    end

    describe '#templates_join_table_name' do
      it 'should generate the correct join_table, and then apologize for doing so' do
        Page.send(:templates_join_table_name).should eq "#{Landable.configuration.database_schema_prefix}landable.page_templates"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
landable-1.14.0 spec/concerns/landable/has_templates_spec.rb
landable-1.13.2 spec/concerns/landable/has_templates_spec.rb