Sha256: 5b1762a06cab4ed7a5ad3ceb7dde676cd4dd33b0f1644a4162d65a12b55d35b2

Contents?: true

Size: 1.79 KB

Versions: 10

Compression:

Stored size: 1.79 KB

Contents

require 'spec_helper'


describe Approvals::Filter do
  it "When no filters were supplied, it leaves the h_or_a alone" do
    filter = Approvals::Filter.new({})

    input = {some: 'hash'}
    output = filter.apply(input)

    expect(input).to equal output
  end

  it "replaces fields which match a filter" do
    filter = Approvals::Filter.new({foo: /^_?foo$/})
    input = {
      foo: 'bar13',
      _foo: 'bar27',
      nonfoo: 'bar',
    }

    output = filter.apply(input)

    expect(output).to eq({
      foo: '<foo>',
      _foo: '<foo>',
      nonfoo: 'bar',
    })
  end

  it "a filter matches, but the value is nil, it does not get replaced" do
    filter = Approvals::Filter.new({foo: /^foo$/})
    input = {
      foo: nil,
      nonfoo: 'bar',
    }

    output = filter.apply(input)

    expect(output).to eq({
      foo: nil,
      nonfoo: 'bar',
    })
  end
  it "a filter matches, and the value is falsey, but not nil, it gets replaced" do
    filter = Approvals::Filter.new({foo: /^foo$/})
    input = {
      foo: false,
      nonfoo: 'bar',
    }

    output = filter.apply(input)

    expect(output).to eq({
      foo: "<foo>",
      nonfoo: 'bar',
    })
  end

  it "filters recursively in hashes and array" do
    filter = Approvals::Filter.new({foo: /^foo$/})
    input = {
      foo: 'bar124',
      foolist: [{foo: 'bar 145', bar: 'foo'}, 'foobar'],
      nonfoo: 'bar',
    }

    output = filter.apply(input)

    expect(output).to eq({
      foo: '<foo>',
      foolist: [{foo: '<foo>', bar: 'foo'}, 'foobar'],
      nonfoo: 'bar',
    })
  end

  it "takes the last applicable filter" do
    filter = Approvals::Filter.new({foo: /^foo/, bar: /bar$/})
    input = {
      foobar: 'baz',
    }

    output = filter.apply(input)

    expect(output).to eq({
      foobar: '<bar>',
    })
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
approvals-0.0.22 spec/filter_spec.rb
approvals-0.0.21 spec/filter_spec.rb
approvals-0.0.20 spec/filter_spec.rb
approvals-0.0.19 spec/filter_spec.rb
approvals-0.0.18 spec/filter_spec.rb
approvals-0.0.17 spec/filter_spec.rb
approvals-0.0.16 spec/filter_spec.rb
approvals-0.0.15 spec/filter_spec.rb
approvals-0.0.14 spec/filter_spec.rb
approvals-0.0.13 spec/filter_spec.rb