Sha256: 814ced6db4b37fd5254e1043ba67e08c8369050f7bed4d8301a275c783ab2419

Contents?: true

Size: 1.82 KB

Versions: 7

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Magicka::Element do
  subject(:element) { klass.new(renderer: renderer) }

  let(:klass) do
    Class.new(described_class)
  end

  let(:renderer) { instance_double('renderer') }
  let(:template) { 'templates/forms/element' }
  let(:folder)   { 'templates/forms' }
  let(:locals)   { {} }

  let(:method_builder)    { Sinclair.new(klass) }
  let(:expected_template) { template }

  describe '#render' do
    before do
      allow(renderer)
        .to receive(:render)
        .with(partial: expected_template, locals: locals)
    end

    context 'when class has a defined template' do
      before do
        klass.template(template)
      end

      it do
        element.render

        expect(renderer).to have_received(:render)
      end

      context 'when initialized with extra params' do
        subject(:element) do
          klass.new(renderer: renderer, name: 'Name')
        end

        it do
          element.render

          expect(renderer).to have_received(:render)
        end
      end

      context 'when class have locals defined' do
        subject(:element) do
          klass.new(renderer: renderer, name: 'Name')
        end

        let(:locals) { { name: 'Name' } }

        before do
          klass.send(:with_attribute_locals, :name)
        end

        it do
          element.render

          expect(renderer).to have_received(:render)
        end
      end
    end

    context 'when class has only folder defined' do
      let(:expected_template) { 'templates/forms/my_element' }

      before do
        klass.template_folder(folder)

        method_builder.add_class_method(:name) { 'Magicka::MyElement' }
        method_builder.build
      end

      it do
        element.render

        expect(renderer).to have_received(:render)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
magicka-0.5.3 spec/lib/magicka/element_spec.rb
magicka-0.5.2 spec/lib/magicka/element_spec.rb
magicka-0.5.1 spec/lib/magicka/element_spec.rb
magicka-0.5.0 spec/lib/magicka/element_spec.rb
magicka-0.4.0 spec/lib/magicka/element_spec.rb
magicka-0.3.1 spec/lib/magicka/element_spec.rb
magicka-0.3.0 spec/lib/magicka/element_spec.rb