rom-sql 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65667c45aace8c6a4ca6998f10bc23cca6acb6e0
4
- data.tar.gz: c63cf22daea5c103abca9c75b46df203228a5f2e
3
+ metadata.gz: fae231a134bab168af4e2cc51bc9f525839165aa
4
+ data.tar.gz: dcaa467ae85f00b2298d7a11ba24612bd1db17b6
5
5
  SHA512:
6
- metadata.gz: eeb635de13c7519b535a73fccfbd0213af82ed8381a3709b082e1b50f976215b20588611899916feea315053f3b60bae7b51300dc99b2fcc2c3fe3bf602785f3
7
- data.tar.gz: 6ffb7da871553147a54a7976e008d70ee927189cd06b0f5f0f3130dec0ae3fcb6c2e8011893792fb60adaa48c41019c2fe8e82c6d832b8b2ecabf8a83e4f2c9e
6
+ metadata.gz: 4279201898c5ff53884bd2dd1d8743baea691965bd2e26c573a9453001deff5fe1f6e17b37ec05b1bf6c67907ea7f2e40ecc75301746921c310a72c6a29b4a9d
7
+ data.tar.gz: 15878ffaebb4557cb9bd1b95fa3c1326d21a91017175f532cad871bb3cddeae039bf80f72e4139735ad932af589b3d6a05cf97c0269c2600c165e3d3c79f9914
@@ -1,3 +1,31 @@
1
+ ## v0.4.3 2015-05-17
2
+
3
+ ### Fixed
4
+
5
+ * `transaction` doesn't swallow errors now other than CommandError (solnic)
6
+
7
+ [Compare v0.4.2...v0.4.3](https://github.com/rom-rb/rom-sql/compare/v0.4.2...v0.4.3)
8
+
9
+ ## v0.4.2 2015-05-17
10
+
11
+ ### Added
12
+
13
+ * Support for setting custom association name (solnic)
14
+ * Support for `:conditions` option in association definition (solnic)
15
+ * Better error message when accessing undefined associations (pdswan)
16
+
17
+ ### Fixed
18
+
19
+ * Correct `ROM::SQL::Plugin::Pagination::Pager#total_pages` when total is not
20
+ evenly divisible by page size (larribas)
21
+ * `association_join` behaves correctly when dataset is different than register_as (nepalez)
22
+
23
+ ### Changed
24
+
25
+ * `transaction` returns command failure objects when there was a rollback (solnic)
26
+
27
+ [Compare v0.4.1...v0.4.2](https://github.com/rom-rb/rom-sql/compare/v0.4.1...v0.4.2)
28
+
1
29
  ## v0.4.1 2015-04-04
2
30
 
3
31
  ### Added
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ gemspec
4
4
 
5
5
  group :test do
6
6
  gem 'byebug', platforms: :mri
7
- gem 'rom', '~> 0.6.0.beta', github: 'rom-rb/rom', branch: 'master'
7
+ gem 'rom', github: 'rom-rb/rom', branch: 'master'
8
8
  gem 'virtus'
9
9
  gem 'activesupport'
10
10
  gem 'rspec', '~> 3.1'
data/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  [![Test Coverage](https://codeclimate.com/github/rom-rb/rom-sql/badges/coverage.svg)][codeclimate]
14
14
  [![Inline docs](http://inch-ci.org/github/rom-rb/rom-sql.svg?branch=master)][inchpages]
15
15
 
16
- RDBMS suport for [Ruby Object Mapper](https://github.com/rom-rb/rom).
16
+ RDBMS support for [Ruby Object Mapper](https://github.com/rom-rb/rom).
17
17
 
18
18
  ## Issues
19
19
 
@@ -44,6 +44,9 @@ in relation objects. For schema migrations you can use its
44
44
  which is available via repositories.
45
45
 
46
46
  ``` ruby
47
+ require "rom-sql"
48
+ require "sqlite3"
49
+
47
50
  setup = ROM.setup(:sql, "sqlite::memory")
48
51
 
49
52
  setup.default.connection.create_table(:users) do
@@ -69,6 +72,9 @@ class Users < ROM::Relation[:sql]
69
72
  end
70
73
  end
71
74
 
75
+ class Tasks < ROM::Relation[:sql]
76
+ end
77
+
72
78
  rom = ROM.finalize.env
73
79
 
74
80
  users = rom.relations.users
@@ -77,8 +83,8 @@ tasks = rom.relations.tasks
77
83
  users.insert(id: 1, name: "Piotr")
78
84
  tasks.insert(user_id: 1, title: "Be happy")
79
85
 
80
- puts rom.relation(:users).by_name("Piotr").with_tasks.to_a.inspect
81
- # => [{:id=>1, :name=>"Piotr", :user_id=>1, :title=>"Be happy"}]
86
+ puts rom.relation(:users).by_name("Piotr").to_a.inspect
87
+ # => [{:id=>1, :name=>"Piotr", :user_id=>1}]
82
88
  ```
83
89
 
84
90
  ## Mapping joins to aggregates
@@ -127,6 +133,9 @@ tasks = rom.relations.tasks
127
133
  users.insert(id: 1, name: "Piotr")
128
134
  tasks.insert(user_id: 1, title: "Be happy")
129
135
 
136
+ rom.relation(:users).with_tasks.by_name("Piotr").to_a
137
+ # => [{:id=>1, :name=>"Piotr", :admin=>nil, :title=>"Be happy"}]
138
+
130
139
  rom.relation(:users).as(:model).with_tasks.by_name("Piotr").to_a
131
140
  # => [#<User:0x007fb31542a098 @id=1, @name="Piotr", @tasks=[{:title=>"Be happy"}]>]
132
141
  ```
@@ -3,6 +3,7 @@ require "rom"
3
3
 
4
4
  module ROM
5
5
  module SQL
6
+ NoAssociationError = Class.new(StandardError)
6
7
  ConstraintError = Class.new(ROM::CommandError)
7
8
 
8
9
  class DatabaseError < ROM::CommandError
@@ -27,3 +28,7 @@ if defined?(Rails)
27
28
  end
28
29
 
29
30
  ROM.register_adapter(:sql, ROM::SQL)
31
+
32
+ ROM.plugins do
33
+ register :pagination, ROM::SQL::Plugin::Pagination, type: :relation
34
+ end
@@ -3,13 +3,29 @@ require 'rom/commands/result'
3
3
  module ROM
4
4
  module SQL
5
5
  module Commands
6
+ # Adds transaction interface to commands
7
+ #
8
+ # @api private
6
9
  module Transaction
7
10
  ROM::SQL::Rollback = Class.new(Sequel::Rollback)
8
11
 
12
+ # Start a transaction
13
+ #
14
+ # @param [Hash] options The options hash supported by Sequel
15
+ #
16
+ # @return [ROM::Commands::Result::Success,ROM::Commands::Result::Failure]
17
+ #
18
+ # @api public
9
19
  def transaction(options = {}, &block)
10
- ROM::Commands::Result::Success.new(
11
- relation.dataset.db.transaction(options, &block)
12
- )
20
+ result = relation.dataset.db.transaction(options, &block)
21
+
22
+ if result
23
+ ROM::Commands::Result::Success.new(result)
24
+ else
25
+ ROM::Commands::Result::Failure.new(result)
26
+ end
27
+ rescue ROM::CommandError => e
28
+ ROM::Commands::Result::Failure.new(e)
13
29
  end
14
30
  end
15
31
  end
@@ -31,7 +31,7 @@ module ROM
31
31
  end
32
32
 
33
33
  def total_pages
34
- (total / per_page) + 1
34
+ (total / per_page.to_f).ceil
35
35
  end
36
36
 
37
37
  def at(dataset, current_page, per_page = self.per_page)
@@ -4,6 +4,8 @@ require 'rom/sql/relation/class_methods'
4
4
  require 'rom/sql/relation/inspection'
5
5
  require 'rom/sql/relation/associations'
6
6
 
7
+ require 'rom/sql/plugin/pagination'
8
+
7
9
  module ROM
8
10
  module SQL
9
11
  # Sequel-specific relation extensions
@@ -45,18 +45,30 @@ module ROM
45
45
  end
46
46
 
47
47
  # @api private
48
- def graph_join(name, join_type, options = {})
49
- assoc = model.association_reflection(name)
48
+ def graph_join(assoc_name, join_type, options = {})
49
+ assoc = model.association_reflection(assoc_name)
50
+
51
+ if assoc.nil?
52
+ raise NoAssociationError,
53
+ "Association #{assoc_name.inspect} has not been " \
54
+ "defined for relation #{name.inspect}"
55
+ end
50
56
 
51
57
  key = assoc[:key]
52
58
  type = assoc[:type]
59
+ table_name = assoc[:class].table_name
53
60
 
54
- if type == :many_to_many
55
- select = options[:select] || {}
56
- graph_join_many_to_many(name, assoc, select)
57
- else
58
- graph_join_other(name, key, type, join_type, options)
59
- end
61
+ graph_rel =
62
+ if type == :many_to_many
63
+ select = options[:select] || {}
64
+ graph_join_many_to_many(table_name, assoc, select)
65
+ else
66
+ graph_join_other(table_name, key, type, join_type, options)
67
+ end
68
+
69
+ graph_rel = graph_rel.where(assoc[:conditions]) if assoc[:conditions]
70
+
71
+ graph_rel
60
72
  end
61
73
 
62
74
  # @api private
@@ -14,11 +14,11 @@ module ROM
14
14
  end
15
15
 
16
16
  def one_to_many(name, options)
17
- associations << [__method__, name, options.merge(relation: name)]
17
+ associations << [__method__, name, { relation: name }.merge(options)]
18
18
  end
19
19
 
20
20
  def many_to_many(name, options = {})
21
- associations << [__method__, name, options.merge(relation: name)]
21
+ associations << [__method__, name, { relation: name }.merge(options)]
22
22
  end
23
23
 
24
24
  def many_to_one(name, options = {})
@@ -31,10 +31,9 @@ module ROM
31
31
  model.set_dataset(relation.dataset)
32
32
  model.dataset.naked!
33
33
 
34
- associations.each do |*args, options|
35
- model = relation.model
36
- other = relations[options.fetch(:relation)].model
37
-
34
+ associations.each do |*args, assoc_opts|
35
+ options = Hash[assoc_opts]
36
+ other = relations[options.delete(:relation) || args[1]].model
38
37
  model.public_send(*args, options.merge(class: other))
39
38
  end
40
39
 
@@ -1,5 +1,5 @@
1
1
  module ROM
2
2
  module SQL
3
- VERSION = '0.4.1'.freeze
3
+ VERSION = '0.4.3'.freeze
4
4
  end
5
5
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency "sequel", "~> 4.18"
22
22
  spec.add_runtime_dependency "equalizer", "~> 0.0", ">= 0.0.9"
23
- spec.add_runtime_dependency "rom", "~> 0.6.0"
23
+ spec.add_runtime_dependency "rom", "~> 0.7", ">= 0.7.0"
24
24
 
25
25
  spec.add_development_dependency "bundler"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Eager loading' do
4
+ include_context 'users and tasks'
5
+
6
+ before do
7
+ setup.relation(:users) do
8
+ def by_name(name)
9
+ where(name: name)
10
+ end
11
+ end
12
+
13
+ setup.relation(:tasks) do
14
+ def for_users(users)
15
+ where(user_id: users.map { |tuple| tuple[:id] })
16
+ end
17
+ end
18
+
19
+ setup.relation(:tags) do
20
+ def for_tasks(tasks)
21
+ inner_join(:task_tags, task_id: :id)
22
+ .where(task_id: tasks.map { |tuple| tuple[:id] })
23
+ end
24
+ end
25
+ end
26
+
27
+ it 'issues 3 queries for 3 combined relations' do
28
+ users = rom.relation(:users).by_name('Piotr')
29
+ tasks = rom.relation(:tasks)
30
+ tags = rom.relation(:tags)
31
+
32
+ relation = users.combine(tasks.for_users.combine(tags.for_tasks))
33
+
34
+ # TODO: figure out a way to assert correct number of issued queries
35
+ expect(relation.call).to be_instance_of(ROM::Relation::Loaded)
36
+ end
37
+ end
@@ -20,6 +20,11 @@ describe 'Commands / Create' do
20
20
  setup.commands(:users) do
21
21
  define(:create) do
22
22
  input Params
23
+
24
+ validator -> tuple {
25
+ raise ROM::CommandError.new('name cannot be empty') if tuple[:name] == ''
26
+ }
27
+
23
28
  result :one
24
29
  end
25
30
 
@@ -32,7 +37,7 @@ describe 'Commands / Create' do
32
37
  end
33
38
 
34
39
  context '#transaction' do
35
- it 'create record if nothing was raised' do
40
+ it 'creates record if nothing was raised' do
36
41
  result = users.create.transaction {
37
42
  users.create.call(name: 'Jane')
38
43
  }
@@ -50,15 +55,59 @@ describe 'Commands / Create' do
50
55
  expect(result.value).to eq(id: 1, name: 'Jane')
51
56
  end
52
57
 
53
- it 'create nothing if anything was raised' do
54
- result = users.create.transaction(rollback: :always) {
55
- users.create.call(name: 'Jane')
56
- }
58
+ it 'creates nothing if command error was raised' do
59
+ expect {
60
+ passed = false
61
+
62
+ result = users.create.transaction {
63
+ users.create.call(name: 'Jane')
64
+ users.create.call(name: '')
65
+ } >-> value {
66
+ passed = true
67
+ }
68
+
69
+ expect(result.value).to be(nil)
70
+ expect(result.error.message).to eql('name cannot be empty')
71
+ expect(passed).to be(false)
72
+ }.to_not change { rom.relations.users.count }
73
+ end
74
+
75
+ it 'creates nothing if rollback was raised' do
76
+ expect {
77
+ passed = false
57
78
 
58
- expect(result.value).to be_nil
79
+ result = users.create.transaction {
80
+ users.create.call(name: 'Jane')
81
+ users.create.call(name: 'John')
82
+ raise ROM::SQL::Rollback
83
+ } >-> value {
84
+ passed = true
85
+ }
86
+
87
+ expect(result.value).to be(nil)
88
+ expect(result.error).to be(nil)
89
+ expect(passed).to be(false)
90
+ }.to_not change { rom.relations.users.count }
91
+ end
92
+
93
+ it 'creates nothing if constraint error was raised' do
94
+ expect {
95
+ passed = false
96
+
97
+ result = users.create.transaction {
98
+ users.create.call(name: 'Jane')
99
+ users.create.call(name: 'Jane')
100
+ } >-> value {
101
+ passed = true
102
+ }
103
+
104
+ expect(result.value).to be(nil)
105
+ expect(result.error).to_not be(nil)
106
+ expect(passed).to be(false)
107
+ }.to_not change { rom.relations.users.count }
59
108
  end
60
109
 
61
- it 'create nothing if anything was raised in any nested transaction' do
110
+ it 'creates nothing if anything was raised in any nested transaction' do
62
111
  expect {
63
112
  expect {
64
113
  users.create.transaction {
@@ -5,7 +5,7 @@ describe 'Reading relations' do
5
5
  include_context 'users and tasks'
6
6
 
7
7
  before :each do
8
- class Task
8
+ class Goal
9
9
  include Virtus.value_object(coerce: true)
10
10
 
11
11
  values do
@@ -20,31 +20,34 @@ describe 'Reading relations' do
20
20
  values do
21
21
  attribute :id, Integer
22
22
  attribute :name, String
23
- attribute :tasks, Array[Task]
23
+ attribute :goals, Array[Goal]
24
24
  end
25
25
  end
26
26
 
27
- class UserTaskCount
27
+ class UserGoalCount
28
28
  include Virtus.value_object(coerce: true)
29
29
 
30
30
  values do
31
31
  attribute :id, Integer
32
32
  attribute :name, String
33
- attribute :task_count, Integer
33
+ attribute :goal_count, Integer
34
34
  end
35
35
  end
36
36
 
37
- setup.relation(:tasks)
37
+ setup.relation(:goals) do
38
+ register_as :goals
39
+ dataset :tasks
40
+ end
38
41
 
39
42
  setup.relation(:users) do
40
- one_to_many :tasks, key: :user_id
43
+ one_to_many :goals, key: :user_id
41
44
 
42
45
  def by_name(name)
43
46
  where(name: name)
44
47
  end
45
48
 
46
- def with_tasks
47
- association_left_join(:tasks, select: [:id, :title])
49
+ def with_goals
50
+ association_left_join(:goals, select: [:id, :title])
48
51
  end
49
52
 
50
53
  def all
@@ -52,19 +55,19 @@ describe 'Reading relations' do
52
55
  end
53
56
  end
54
57
 
55
- setup.relation(:user_task_counts) do
58
+ setup.relation(:user_goal_counts) do
56
59
  dataset :users
57
- register_as :user_task_counts
58
- one_to_many :tasks, key: :user_id
60
+ register_as :user_goal_counts
61
+ one_to_many :goals, key: :user_id
59
62
 
60
63
  def all
61
- with_tasks.select_group(:users__id, :users__name).select_append {
62
- count(:tasks).as(:task_count)
64
+ with_goals.select_group(:users__id, :users__name).select_append {
65
+ count(:tasks).as(:goal_count)
63
66
  }
64
67
  end
65
68
 
66
- def with_tasks
67
- association_left_join(:tasks, select: [:id, :title])
69
+ def with_goals
70
+ association_left_join(:goals, select: [:id, :title])
68
71
  end
69
72
  end
70
73
 
@@ -72,36 +75,36 @@ describe 'Reading relations' do
72
75
  define(:users) do
73
76
  model User
74
77
 
75
- group :tasks do
76
- model Task
78
+ group :goals do
79
+ model Goal
77
80
 
78
81
  attribute :id, from: :tasks_id
79
82
  attribute :title
80
83
  end
81
84
  end
82
85
 
83
- define(:user_task_counts) do
84
- model UserTaskCount
86
+ define(:user_goal_counts) do
87
+ model UserGoalCount
85
88
  end
86
89
  end
87
90
  end
88
91
 
89
92
  it 'loads domain objects' do
90
- user = rom.relation(:users).as(:users).with_tasks.by_name('Piotr').to_a.first
93
+ user = rom.relation(:users).as(:users).with_goals.by_name('Piotr').to_a.first
91
94
 
92
95
  expect(user).to eql(
93
96
  User.new(
94
- id: 1, name: 'Piotr', tasks: [Task.new(id: 1, title: 'Finish ROM')]
97
+ id: 1, name: 'Piotr', goals: [Goal.new(id: 1, title: 'Finish ROM')]
95
98
  ))
96
99
  end
97
100
 
98
101
  it 'works with grouping and aggregates' do
99
- rom.relations[:tasks].insert(id: 2, user_id: 1, title: 'Get Milk')
102
+ rom.relations[:goals].insert(id: 2, user_id: 1, title: 'Get Milk')
100
103
 
101
- users_with_task_count = rom.relation(:user_task_counts).as(:user_task_counts).all
104
+ users_with_goal_count = rom.relation(:user_goal_counts).as(:user_goal_counts).all
102
105
 
103
- expect(users_with_task_count.to_a).to eq([
104
- UserTaskCount.new(id: 1, name: "Piotr", task_count: 2)
106
+ expect(users_with_goal_count.to_a).to eq([
107
+ UserGoalCount.new(id: 1, name: "Piotr", goal_count: 2)
105
108
  ])
106
109
  end
107
110
  end
@@ -3,6 +3,7 @@ shared_context 'database setup' do
3
3
 
4
4
  let(:uri) { DB_URI }
5
5
  let(:conn) { Sequel.connect(uri) }
6
+
6
7
  let(:setup) { ROM.setup(:sql, conn) }
7
8
 
8
9
  def drop_tables
@@ -10,8 +10,11 @@ end
10
10
 
11
11
  require 'rom-sql'
12
12
  require 'rom/sql/rake_task'
13
+
13
14
  # FIXME: why do we need to require it manually??
14
15
  require 'sequel/adapters/postgres'
16
+ require 'active_support/inflector'
17
+
15
18
  require 'logger'
16
19
  begin
17
20
  require 'byebug'
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Association errors' do
4
+ include_context 'users and tasks'
5
+
6
+ describe 'accessing an undefined association' do
7
+ specify do
8
+ setup.relation(:users) do
9
+ def with_undefined
10
+ association_join(:undefined)
11
+ end
12
+ end
13
+
14
+ expect {
15
+ rom.relations.users.with_undefined
16
+ }.to raise_error ROM::SQL::NoAssociationError, 'Association :undefined has not been defined for relation :users'
17
+ end
18
+ end
19
+ end
20
+
@@ -3,6 +3,16 @@ require 'spec_helper'
3
3
  describe 'Defining one-to-many association' do
4
4
  include_context 'users and tasks'
5
5
 
6
+ before do
7
+ setup.mappers do
8
+ define(:users)
9
+
10
+ define(:with_tasks, parent: :users) do
11
+ group tasks: [:tasks_id, :title]
12
+ end
13
+ end
14
+ end
15
+
6
16
  it 'extends relation with association methods' do
7
17
  setup.relation(:users) do
8
18
  one_to_many :tasks, key: :user_id
@@ -20,22 +30,42 @@ describe 'Defining one-to-many association' do
20
30
  end
21
31
  end
22
32
 
23
- setup.mappers do
24
- define(:users)
33
+ users = rom.relations.users
25
34
 
26
- define(:with_tasks, parent: :users) do
27
- group tasks: [:tasks_id, :title]
35
+ expect(users.with_tasks.by_name("Piotr").to_a).to eql(
36
+ [{ id: 1, name: 'Piotr', tasks_id: 1, title: 'Finish ROM' }]
37
+ )
38
+
39
+ result = rom.relation(:users).map_with(:with_tasks)
40
+ .all.with_tasks.by_name("Piotr").to_a
41
+
42
+ expect(result).to eql(
43
+ [{ id: 1, name: 'Piotr', tasks: [{ tasks_id: 1, title: 'Finish ROM' }] }]
44
+ )
45
+ end
46
+
47
+ it 'allows setting :conditions' do
48
+ setup.relation(:users) do
49
+ one_to_many :piotrs_tasks, relation: :tasks, key: :user_id,
50
+ conditions: { name: 'Piotr' }
51
+
52
+ def with_piotrs_tasks
53
+ association_left_join(:piotrs_tasks, select: [:id, :title])
54
+ end
55
+
56
+ def all
57
+ select(:id, :name)
28
58
  end
29
59
  end
30
60
 
31
61
  users = rom.relations.users
32
62
 
33
- expect(users.with_tasks.by_name("Piotr").to_a).to eql(
63
+ expect(users.with_piotrs_tasks.to_a).to eql(
34
64
  [{ id: 1, name: 'Piotr', tasks_id: 1, title: 'Finish ROM' }]
35
65
  )
36
66
 
37
67
  result = rom.relation(:users).map_with(:with_tasks)
38
- .all.with_tasks.by_name("Piotr").to_a
68
+ .all.with_piotrs_tasks.to_a
39
69
 
40
70
  expect(result).to eql(
41
71
  [{ id: 1, name: 'Piotr', tasks: [{ tasks_id: 1, title: 'Finish ROM' }] }]
@@ -9,7 +9,7 @@ describe 'Plugin / Pagination' do
9
9
  9.times { |i| conn[:users].insert(name: "User #{i}") }
10
10
 
11
11
  setup.relation(:users) do
12
- include ROM::SQL::Plugin::Pagination # meh such constants not wow
12
+ use :pagination
13
13
 
14
14
  per_page 4
15
15
  end
@@ -53,6 +53,18 @@ describe 'Plugin / Pagination' do
53
53
  end
54
54
  end
55
55
 
56
+ describe '#total_pages' do
57
+ it 'returns a single page when elements are a perfect fit' do
58
+ users = rom.relation(:users).page(1).per_page(3)
59
+ expect(users.pager.total_pages).to eql(3)
60
+ end
61
+
62
+ it 'returns the exact number of pages to accommodate all elements' do
63
+ users = rom.relation(:users).per_page(9)
64
+ expect(users.pager.total_pages).to eql(1)
65
+ end
66
+ end
67
+
56
68
  describe '#pager' do
57
69
  it 'returns a pager with pagination meta-info' do
58
70
  users = rom.relation(:users).page(1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-sql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-04 00:00:00.000000000 Z
11
+ date: 2015-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -50,14 +50,20 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 0.6.0
53
+ version: '0.7'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.7.0
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - "~>"
59
62
  - !ruby/object:Gem::Version
60
- version: 0.6.0
63
+ version: '0.7'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 0.7.0
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: bundler
63
69
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +138,7 @@ files:
132
138
  - log/.gitkeep
133
139
  - rom-sql.gemspec
134
140
  - spec/fixtures/migrations/20150403090603_create_carrots.rb
141
+ - spec/integration/combine_spec.rb
135
142
  - spec/integration/commands/create_spec.rb
136
143
  - spec/integration/commands/delete_spec.rb
137
144
  - spec/integration/commands/update_spec.rb
@@ -142,6 +149,7 @@ files:
142
149
  - spec/spec_helper.rb
143
150
  - spec/support/active_support_notifications_spec.rb
144
151
  - spec/support/rails_log_subscriber_spec.rb
152
+ - spec/unit/association_errors_spec.rb
145
153
  - spec/unit/combined_associations_spec.rb
146
154
  - spec/unit/logger_spec.rb
147
155
  - spec/unit/many_to_many_spec.rb
@@ -179,6 +187,7 @@ specification_version: 4
179
187
  summary: SQL databases support for ROM
180
188
  test_files:
181
189
  - spec/fixtures/migrations/20150403090603_create_carrots.rb
190
+ - spec/integration/combine_spec.rb
182
191
  - spec/integration/commands/create_spec.rb
183
192
  - spec/integration/commands/delete_spec.rb
184
193
  - spec/integration/commands/update_spec.rb
@@ -189,6 +198,7 @@ test_files:
189
198
  - spec/spec_helper.rb
190
199
  - spec/support/active_support_notifications_spec.rb
191
200
  - spec/support/rails_log_subscriber_spec.rb
201
+ - spec/unit/association_errors_spec.rb
192
202
  - spec/unit/combined_associations_spec.rb
193
203
  - spec/unit/logger_spec.rb
194
204
  - spec/unit/many_to_many_spec.rb
@@ -200,4 +210,3 @@ test_files:
200
210
  - spec/unit/relation_spec.rb
201
211
  - spec/unit/repository_spec.rb
202
212
  - spec/unit/schema_spec.rb
203
- has_rdoc: