Sha256: 9b14f9a6b61275a2feb1c69cb5259ede72956badcfd3d57125c5a189c9899a70

Contents?: true

Size: 1.69 KB

Versions: 9

Compression:

Stored size: 1.69 KB

Contents

require 'spec_helper'

class ::TestEachBindingController < Volt::ModelController
  model :page
end

describe Volt::EachBinding do
  it 'should render an each binding' do
    dom = Volt::AttributeTarget.new(0)
    context = ::TestEachBindingController.new(volt_app)
    context._items << {name: 'One'}
    context._items << {name: 'Two'}


    getter = Proc.new { context._items }
    variable_name = 'item'
    index_name = 'index'
    template_name = 'main/item'

    # Setup the each binding
    each_binding = ->(volt_app, target, context, id) do
      Volt::EachBinding.new(volt_app, target, context, id, getter,
                            variable_name, index_name, template_name)
    end

    # Setup a content binding to make sure its passing the right item
    content_binding = ->(volt_app, target, context, id) do
      Volt::ContentBinding.new(volt_app, target, context, id,
                               proc { item._name })
    end

    templates = {
      'main/main' => {
        'html' => 'hello <!-- $1 --><!-- $/1 -->',
        'bindings' => { 1 => [each_binding] }
      },
      'main/item' => {
        'html' => '<!-- $2 --><!-- $/2 -->, ',
        'bindings' => {
          2 => [content_binding]
        }
      }
    }

    page = double('volt/page')
    expect(page).to receive(:templates).and_return(templates).at_least(1).times

    volt_app = double('volt/app')
    expect(volt_app).to receive(:page).and_return(page).at_least(1).times

    Volt::TemplateRenderer.new(volt_app, dom, context, 'main', 'main/main')

    expect(dom.to_html).to eq('hello One, Two, ')

    context._items << {name: 'Three'}
    Volt::Computation.flush!
    expect(dom.to_html).to eq('hello One, Two, Three, ')
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
volt-0.9.4.pre3 spec/page/bindings/each_binding_spec.rb
volt-0.9.4.pre2 spec/page/bindings/each_binding_spec.rb
volt-0.9.4.pre1 spec/page/bindings/each_binding_spec.rb
volt-0.9.3 spec/page/bindings/each_binding_spec.rb
volt-0.9.3.pre6 spec/page/bindings/each_binding_spec.rb
volt-0.9.3.pre5 spec/page/bindings/each_binding_spec.rb
volt-0.9.3.pre4 spec/page/bindings/each_binding_spec.rb
volt-0.9.3.pre3 spec/page/bindings/each_binding_spec.rb
volt-0.9.3.pre2 spec/page/bindings/each_binding_spec.rb