Sha256: 3cda1114bcf615fef92293a1393b89e02844d92bd4a1d231b6051360da5c6099
Contents?: true
Size: 1.67 KB
Versions: 1
Compression:
Stored size: 1.67 KB
Contents
RSpec.describe 'Repository with multi-adapters configuration' do let!(:configuration) { ROM::Configuration.new(default: [:sql, DB_URI], memory: [:memory]) } let(:rom) { ROM.container(configuration) } let(:users) { rom.relation(:sql_users) } let(:tasks) { rom.relation(:memory_tasks) } let(:repo) { Test::Repository.new(rom) } before do module Test class Users < ROM::Relation[:sql] gateway :default schema(:users, infer: true) register_as :sql_users end class Tasks < ROM::Relation[:memory] schema(:tasks) do attribute :user_id, ROM::Types::Int attribute :title, ROM::Types::String end register_as :memory_tasks gateway :memory use :key_inference view(:base, [:user_id, :title]) do self end def for_users(users) restrict(user_id: users.map { |u| u[:id] }) end end class Repository < ROM::Repository[:sql_users] relations :memory_tasks def users_with_tasks(id) aggregate(many: { tasks: memory_tasks }).where(id: id) end end end configuration.register_relation(Test::Users) configuration.register_relation(Test::Tasks) user_id = configuration.gateways[:default].dataset(:users).insert(name: 'Jane') configuration.gateways[:memory].dataset(:tasks).insert(user_id: user_id, title: 'Jane Task') end specify 'ᕕ⁞ ᵒ̌ 〜 ᵒ̌ ⁞ᕗ' do user = repo.users_with_tasks(users.last[:id]).first expect(user.name).to eql('Jane') expect(user.tasks[0].user_id).to eql(user.id) expect(user.tasks[0].title).to eql('Jane Task') end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-repository-1.3.1 | spec/integration/multi_adapter_spec.rb |