Sha256: 4694c913e1f4efa608bc85e9724a5c77e9023d7fca01a6d604191cf6621f96af

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

require 'spec_helper'

describe "Cistern::Hash" do
  describe "#slice" do
    let(:input) do
      { one: "one", two: "two", three: "three" }
    end

    it "returns a new hash with only the specified keys" do
      expect(Cistern::Hash.slice(input, :one, :two)).to eq({ one: "one", two: "two" })
    end

    it "skips keys that aren't in the original hash" do
      expect(Cistern::Hash.slice(input, :four)).to eq({})
    end
  end

  describe "#except" do
    let(:input) do
      { one: "one", two: "two", three: "three" }
    end

    it "returns a new hash without the specified keys" do
      expect(Cistern::Hash.except(input, :one, :two)).to eq({three: "three"})
    end

    it "skips keys that aren't in the original hash" do
      expect(Cistern::Hash.except(input, :four)).to eq(input)
    end
  end

  describe "#stringify_keys" do
    let(:input) do
      { one: "one", two: "two" }
    end

    it "returns a new hash with stringed keys" do
      expect(Cistern::Hash.stringify_keys(input)).to eq({ "one" => "one", "two" => "two" })
    end

    context "with nested hashes or arrays" do
      let(:input) do
        { hash: { one: "one" }, array: [{ two: "two" }] }
      end

      it "stringifies all of the keys" do
        expect(Cistern::Hash.stringify_keys(input)).to eq({ "hash" => { "one" => "one" }, "array" => [{ "two" => "two" }]})
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
cistern-2.2.3 spec/hash_spec.rb
cistern-2.2.1 spec/hash_spec.rb
cistern-2.1.0 spec/hash_spec.rb
cistern-2.0.5 spec/hash_spec.rb
cistern-2.0.4 spec/hash_spec.rb
cistern-2.0.3 spec/hash_spec.rb
cistern-2.0.2 spec/hash_spec.rb
cistern-2.0.1 spec/hash_spec.rb