Sha256: 0197f4db8e1f3cdf1cce71c28a0f14127167f25e5740b77d04aafb1d34de4d86

Contents?: true

Size: 1.14 KB

Versions: 16

Compression:

Stored size: 1.14 KB

Contents

require 'spec_helper'

describe 'Relation registration DSL' do
  include_context 'users and tasks'

  it 'allows to expose chainable relations' do
    setup.relation(:tasks) do
      def high_priority
        restrict { |tuple| tuple[:priority] < 2 }
      end

      def by_title(title)
        restrict(title: title)
      end
    end

    setup.relation(:users) do
      def with_tasks
        join(tasks)
      end
    end

    tasks = rom.relations.tasks

    expect(tasks.class.name).to eql("ROM::Relation[Tasks]")
    expect(tasks.high_priority.inspect).to include("#<ROM::Relation[Tasks]")

    expect(tasks.high_priority.by_title("be nice")).to match_array(
      [name: "Joe", title: "be nice", priority: 1]
    )

    expect(tasks.by_title("be cool")).to match_array(
      [name: "Jane", title: "be cool", priority: 2]
    )

    users = rom.relations.users

    expect(users.with_tasks).to match_array(
      [{ name: "Joe", email: "joe@doe.org", title: "be nice", priority: 1 },
       { name: "Joe", email: "joe@doe.org", title: "sleep well", priority: 2 },
       { name: "Jane", email: "jane@doe.org", title: "be cool", priority: 2 }]
    )
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rom-0.9.1 spec/integration/relations/registry_dsl_spec.rb
rom-0.9.0 spec/integration/relations/registry_dsl_spec.rb
rom-0.9.0.rc1 spec/integration/relations/registry_dsl_spec.rb
rom-0.9.0.beta1 spec/integration/relations/registry_dsl_spec.rb
rom-0.8.1 spec/integration/relations/registry_dsl_spec.rb
rom-0.8.0 spec/integration/relations/registry_dsl_spec.rb
rom-0.7.1 spec/integration/relations/registry_dsl_spec.rb
rom-0.7.0 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.2 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.1 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.0 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.0.rc1 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.0.beta3 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.0.beta2 spec/integration/relations/registry_dsl_spec.rb
rom-0.6.0.beta1 spec/integration/relations/registry_dsl_spec.rb
rom-0.5.0 spec/integration/relations/registry_dsl_spec.rb