Sha256: 72c734ec6471a52597fa45c2b5243f8ab9638a2c6e152ac31758e2656fcd4765

Contents?: true

Size: 1.6 KB

Versions: 40

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

package_require("ree_dao/wrappers/pg_array")

RSpec.describe 'ReeDao::PgArray' do
  link :build_mapper_factory, from: :ree_mapper
  link :build_mapper_strategy, from: :ree_mapper

  let(:mapper_factory) {
    build_mapper_factory(
      strategies: [
        build_mapper_strategy(method: :cast),
        build_mapper_strategy(method: :serialize),
        build_mapper_strategy(method: :db_dump, dto: Hash),
        build_mapper_strategy(method: :db_load, dto: Hash, always_optional: true)
      ]
    ).register_wrapper(:pg_array, ReeDao::PgArray)
  }

  let(:mapper) {
    mapper_factory.call.use(:db_dump).use(:db_load) do
      pg_array? :tags, integer
      pg_array? :keys, string
    end
  }

  describe '#db_dump' do
    it {
      expect(mapper.db_dump({
        tags: [1, 2],
        keys: ["a", "b"]
      })).to eq({
        tags: [1, 2],
        keys: ["a", "b"]
      })
    }

    it {
      expect(mapper.db_dump({
        tags: []
      })).to eq({
        tags: "{}"
      })
    }

    it {
      expect {
        mapper.db_dump({ tags: 1 })
      }.to raise_error(ReeMapper::TypeError, /`tags` should be an array, got `1`/)
    }
  end

  describe '#db_load' do
    it {
      expect(mapper.db_load({
        tags: Sequel::Postgres::PGArray.new([1, 2]),
        keys: Sequel::Postgres::PGArray.new(["a", "b"])
      })).to eq({
        tags: [1, 2],
        keys: ["a", "b"]
      })
    }

    it {
      expect {
        mapper.db_load({
          tags: 1
        })
      }.to raise_error(ReeMapper::TypeError, /`tags` should be a Sequel::Postgres::PGArray, got `1`/)
    }
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
ree_lib-1.1.1 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.1.0 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_dao/spec/ree_dao/wrappers/pg_array_spec.rb