Sha256: 5d7068761afa93e44521576916371d2fe629f764e36e5ff7f32cb5a7c437ee59

Contents?: true

Size: 1.56 KB

Versions: 12

Compression:

Stored size: 1.56 KB

Contents

require 'test_helper'

class StrainerTest < Test::Unit::TestCase
  include Liquid

  module AccessScopeFilters
    def public_filter
      "public"
    end

    def private_filter
      "private"
    end
    private :private_filter
  end

  Strainer.global_filter(AccessScopeFilters)

  def test_strainer
    strainer = Strainer.create(nil)
    assert_equal 5, strainer.invoke('size', 'input')
    assert_equal "public", strainer.invoke("public_filter")
  end

  def test_strainer_only_invokes_public_filter_methods
    strainer = Strainer.create(nil)
    assert_equal false, strainer.invokable?('__test__')
    assert_equal false, strainer.invokable?('test')
    assert_equal false, strainer.invokable?('instance_eval')
    assert_equal false, strainer.invokable?('__send__')
    assert_equal true, strainer.invokable?('size') # from the standard lib
  end

  def test_strainer_returns_nil_if_no_filter_method_found
    strainer = Strainer.create(nil)
    assert_nil strainer.invoke("private_filter")
    assert_nil strainer.invoke("undef_the_filter")
  end

  def test_strainer_returns_first_argument_if_no_method_and_arguments_given
    strainer = Strainer.create(nil)
    assert_equal "password", strainer.invoke("undef_the_method", "password")
  end

  def test_strainer_only_allows_methods_defined_in_filters
    strainer = Strainer.create(nil)
    assert_equal "1 + 1", strainer.invoke("instance_eval", "1 + 1")
    assert_equal "puts",  strainer.invoke("__send__", "puts", "Hi Mom")
    assert_equal "has_method?", strainer.invoke("invoke", "has_method?", "invoke")
  end

end # StrainerTest

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
liquid-2.6.3 test/liquid/strainer_test.rb
liquid-2.6.2 test/liquid/strainer_test.rb
liquid-2.6.1 test/liquid/strainer_test.rb
liquid-2.5.5 test/liquid/strainer_test.rb
mango-0.8.0 vendor/bundler/ruby/2.1.0/gems/liquid-2.6.0/test/liquid/strainer_test.rb
liquid-2.6.0 test/liquid/strainer_test.rb
liquid-2.5.4 test/liquid/strainer_test.rb
liquid-2.6.0.rc1 test/liquid/strainer_test.rb
liquid-2.5.3 test/liquid/strainer_test.rb
liquid-2.5.1 test/liquid/strainer_test.rb
wordify_liquid-2.5.1 test/liquid/strainer_test.rb
liquid-2.5.0 test/liquid/strainer_test.rb