Sha256: fe46bd6beacd874731b985ebd351e480493f4946ae34029634ea86b64654612c

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 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 "Ordered associations" do
  include_context "mapper setup"
  include_context "sequel persistence setup"
  include_context "seed data setup"

  subject(:user_mapper) {
    SequelMapper.mapper(
      config: mapper_config,
      name: :users,
      datastore: datastore,
    )
  }


  context "one to many association ordered by `created_at DESC`" do
    let(:posts) { user_mapper.first.posts }

    let(:mapper_config) {
      SequelMapper::Configurations::ConventionalConfiguration.new(datastore)
        .setup_mapping(:users) { |users|
          users.has_many(:posts, foreign_key: :author_id, order_fields: [:created_at], order_direction: "DESC")
        }
    }

    it "enumerates the objects in order specified in the config" do
      expect(posts.map(&:id)).to eq(
        posts.to_a.sort_by(&:created_at).reverse.map(&:id)
      )
    end
  end

  context "many to many associatin ordered by reverse alphabetical name" do
    let(:mapper_config) {
      SequelMapper::Configurations::ConventionalConfiguration.new(datastore)
        .setup_mapping(:users) { |users|
          users.has_many(:posts, foreign_key: :author_id)
        }
        .setup_mapping(:posts) { |posts|
          posts.has_many_through(:categories, order_fields: [:name], order_direction: "DESC")
        }
    }

    let(:categories) { user_mapper.first.posts.first.categories }

    it "enumerates the objects in order specified in the config" do
      expect(categories.map(&:id)).to eq(
        categories.to_a.sort_by(&:name).reverse.map(&:id)
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sequel_mapper-0.0.3 spec/ordered_association_spec.rb