Sha256: 768e7841ee97bdc721ee9356be1129ea34a2ea920b158b95cb7d0af850a1a802
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
require "spec_helper" require "support/mapper_setup" require "support/sequel_persistence_setup" require "support/seed_data_setup" require "sequel_mapper" require "sequel_mapper/configurations/conventional_configuration" RSpec.describe "Predefined subset queries" do include_context "mapper setup" include_context "sequel persistence setup" include_context "seed data setup" subject(:users) { user_mapper } subject(:user_mapper) { SequelMapper.mapper( config: mapper_config, name: :users, datastore: datastore, ) } let(:mapper_config) { SequelMapper::Configurations::ConventionalConfiguration.new(datastore) .setup_mapping(:users) { |users| users.has_many :posts, foreign_key: :author_id } } context "on the top level mapper" do context "subset is defined with a block" do before do mapper_config.setup_mapping(:users) do |config| config.subset(:tricketts) do |dataset| dataset .where(last_name: "Trickett") .order(:first_name) end end end it "maps the result of the subset" do expect(users.subset(:tricketts).map(&:first_name)).to eq([ "Hansel", "Jasper", ]) end end end context "on a has many association" do before do mapper_config.setup_mapping(:posts) do |config| config.subset(:body_contains) do |dataset, search_string| dataset.where("body like '%#{search_string}%'") end end end let(:user) { users.first } it "maps the datastore subset" do expect(user.posts.subset(:body_contains, "purrr").map(&:id)) .to eq(["posts/2"]) end it "returns an immutable collection" do expect(user.posts.subset(:body_contains, "purrr").public_methods) .not_to include(:push, :<<, :delete) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sequel_mapper-0.0.3 | spec/predefined_queries_spec.rb |