sequenced 3.1.1 → 3.2.0

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.
Files changed (81) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +3 -3
  3. data/CHANGELOG.md +14 -2
  4. data/Gemfile +1 -1
  5. data/MIT-LICENSE +1 -1
  6. data/README.md +31 -4
  7. data/lib/sequenced/generator.rb +3 -3
  8. data/lib/sequenced/version.rb +1 -1
  9. data/sequenced.gemspec +2 -3
  10. metadata +15 -161
  11. data/test/acts_as_sequenced_test.rb +0 -132
  12. data/test/concurrency_test.rb +0 -82
  13. data/test/dummy/README.rdoc +0 -261
  14. data/test/dummy/Rakefile +0 -7
  15. data/test/dummy/app/assets/javascripts/application.js +0 -15
  16. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  17. data/test/dummy/app/controllers/application_controller.rb +0 -3
  18. data/test/dummy/app/helpers/application_helper.rb +0 -2
  19. data/test/dummy/app/mailers/.gitkeep +0 -0
  20. data/test/dummy/app/models/.gitkeep +0 -0
  21. data/test/dummy/app/models/account.rb +0 -6
  22. data/test/dummy/app/models/address.rb +0 -4
  23. data/test/dummy/app/models/answer.rb +0 -4
  24. data/test/dummy/app/models/comment.rb +0 -8
  25. data/test/dummy/app/models/concurrent_badger.rb +0 -3
  26. data/test/dummy/app/models/doppelganger.rb +0 -4
  27. data/test/dummy/app/models/email.rb +0 -4
  28. data/test/dummy/app/models/invoice.rb +0 -4
  29. data/test/dummy/app/models/monster.rb +0 -3
  30. data/test/dummy/app/models/order.rb +0 -4
  31. data/test/dummy/app/models/policeman.rb +0 -5
  32. data/test/dummy/app/models/product.rb +0 -8
  33. data/test/dummy/app/models/question.rb +0 -4
  34. data/test/dummy/app/models/rating.rb +0 -3
  35. data/test/dummy/app/models/subscription.rb +0 -3
  36. data/test/dummy/app/models/user.rb +0 -4
  37. data/test/dummy/app/models/werewolf.rb +0 -2
  38. data/test/dummy/app/models/zombie.rb +0 -2
  39. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  40. data/test/dummy/config.ru +0 -4
  41. data/test/dummy/config/application.rb +0 -56
  42. data/test/dummy/config/boot.rb +0 -10
  43. data/test/dummy/config/database.yml +0 -29
  44. data/test/dummy/config/environment.rb +0 -5
  45. data/test/dummy/config/environments/development.rb +0 -33
  46. data/test/dummy/config/environments/production.rb +0 -67
  47. data/test/dummy/config/environments/test.rb +0 -43
  48. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  49. data/test/dummy/config/initializers/inflections.rb +0 -15
  50. data/test/dummy/config/initializers/mime_types.rb +0 -5
  51. data/test/dummy/config/initializers/secret_token.rb +0 -7
  52. data/test/dummy/config/initializers/session_store.rb +0 -8
  53. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  54. data/test/dummy/config/locales/en.yml +0 -5
  55. data/test/dummy/config/routes.rb +0 -58
  56. data/test/dummy/db/migrate/20120219165346_create_questions.rb +0 -10
  57. data/test/dummy/db/migrate/20120219165548_create_answers.rb +0 -13
  58. data/test/dummy/db/migrate/20120219171957_create_accounts.rb +0 -9
  59. data/test/dummy/db/migrate/20120219172039_create_invoices.rb +0 -12
  60. data/test/dummy/db/migrate/20120219172922_create_orders.rb +0 -10
  61. data/test/dummy/db/migrate/20120219174931_create_subscriptions.rb +0 -10
  62. data/test/dummy/db/migrate/20120219175744_create_users.rb +0 -12
  63. data/test/dummy/db/migrate/20120219232323_create_addresses.rb +0 -9
  64. data/test/dummy/db/migrate/20120220000804_create_comments.rb +0 -12
  65. data/test/dummy/db/migrate/20130411225444_create_emails.rb +0 -12
  66. data/test/dummy/db/migrate/20130715002029_create_ratings.rb +0 -10
  67. data/test/dummy/db/migrate/20130730004055_create_products.rb +0 -9
  68. data/test/dummy/db/migrate/20131226000000_create_monsters.rb +0 -9
  69. data/test/dummy/db/migrate/20140404195334_create_policemen.rb +0 -9
  70. data/test/dummy/db/migrate/20151120190645_create_concurrent_badgers.rb +0 -10
  71. data/test/dummy/db/migrate/20160118182655_create_doppelgangers.rb +0 -10
  72. data/test/dummy/db/schema.rb +0 -142
  73. data/test/dummy/lib/assets/.gitkeep +0 -0
  74. data/test/dummy/log/.gitkeep +0 -0
  75. data/test/dummy/public/404.html +0 -26
  76. data/test/dummy/public/422.html +0 -26
  77. data/test/dummy/public/500.html +0 -25
  78. data/test/dummy/public/favicon.ico +0 -0
  79. data/test/dummy/script/rails +0 -6
  80. data/test/multiple_sequences_test.rb +0 -20
  81. data/test/test_helper.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d72c557b133b01ba1b82aaee020a2e798f6744b5
4
- data.tar.gz: 4799ecc4ec9e791a1e0febc66acf58ab137ee361
2
+ SHA256:
3
+ metadata.gz: a27946de6bd01c2c4c7d97d929df68f4fa01a34c23f721473eb0b7f2e2c22c5e
4
+ data.tar.gz: be78bda96414d8bfdc2b45162294263f665c02f43b5135e8ed23f79fa6011b07
5
5
  SHA512:
6
- metadata.gz: 241378e6cefa16d9267b5d5ea1c7c3ccd16e9b12ff427065af94068b285af9810da608fdce7770c39534cbf06aa7edcddd29500a673c216782752c8ba06892d9
7
- data.tar.gz: 08a6e2197428200a2c6105f5d5d37a0f3b3e867531dcb0ada80666612920d27935cbad6f6ade7cf37bb7b664d20be1331bd55ace24d9dfae32fd4f1eadbd1612
6
+ metadata.gz: d7c24c3b5c4f4dcc77ea64043dc6afff72a1f2fa38642e9129c5f41f7dfccbbbf06c4438de790fdb6cfcd8695c8abcf923df67cb706f141d36815f81ca622209
7
+ data.tar.gz: d11ef41c80d7e26c696ee96553ab2b3a0cd272cb24c63880beb4b3fc5d3a4e74e6733e4e58dfbac172947971e4019f6467d811718e5d078164c08e49adb38d10
@@ -1,7 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.2.3
3
+ - 2.4.1
5
4
 
6
5
  env:
7
6
  - DB=sqlite
@@ -10,4 +9,5 @@ env:
10
9
  before_script:
11
10
  - rake db:create
12
11
 
13
- sudo: false
12
+ services:
13
+ - postgresql
@@ -1,14 +1,26 @@
1
+ 3.2.0 (January 29, 2020)
2
+ ------------------------
3
+
4
+ * Support non-default primary key columns (set via `primary_key=`) (#41)
5
+ * Fix issue with Postgres adapter check when using a subclassed adapter (#42)
6
+
7
+ 3.1.1 (January 30, 2016)
8
+ -------------------------
9
+
10
+ * Rails 3 compatibility
11
+ (samphilipd, [#22](https://github.com/derrickreimer/sequenced/pull/22))
12
+
1
13
  3.1.0 (January 23, 2016)
2
14
  -------------------------
3
15
 
4
16
  * Allow multiple sequences on one record
5
- (samphilipd, [#19](https://github.com/djreimer/sequenced/pull/19))
17
+ (samphilipd, [#19](https://github.com/derrickreimer/sequenced/pull/19))
6
18
 
7
19
  3.0.0 (November 28, 2015)
8
20
  -------------------------
9
21
 
10
22
  * Make this gem thread-safe for PostgreSQL
11
- (samphilipd, [#16](https://github.com/djreimer/sequenced/pull/16))
23
+ (samphilipd, [#16](https://github.com/derrickreimer/sequenced/pull/16))
12
24
 
13
25
  2.0.0 (October 24, 2014)
14
26
  ------------------------
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ gemspec
9
9
  gem "jquery-rails"
10
10
 
11
11
  group :development, :test do
12
- gem 'sqlite3'
12
+ gem 'sqlite3', '~> 1.3.6'
13
13
  # gem 'mysql2'
14
14
  gem 'pg'
15
15
  end
@@ -1,4 +1,4 @@
1
- Copyright 2016 Derrick Reimer
1
+ Copyright 2012-2020 Derrick Reimer
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Sequenced
2
2
 
3
- [![Build Status](https://travis-ci.org/djreimer/sequenced.png)](https://travis-ci.org/djreimer/sequenced)
4
- [![Code Climate](https://codeclimate.com/github/djreimer/sequenced.png)](https://codeclimate.com/github/djreimer/sequenced)
5
- [![Gem Version](https://badge.fury.io/rb/sequenced.png)](http://badge.fury.io/rb/sequenced)
3
+ [![Build Status](https://travis-ci.org/derrickreimer/sequenced.svg)](https://travis-ci.org/derrickreimer/sequenced)
4
+ [![Code Climate](https://codeclimate.com/github/djreimer/sequenced.svg)](https://codeclimate.com/github/djreimer/sequenced)
5
+ [![Gem Version](https://badge.fury.io/rb/sequenced.svg)](http://badge.fury.io/rb/sequenced)
6
6
 
7
7
  Sequenced is a simple gem that generates scoped sequential IDs for
8
8
  ActiveRecord models. This gem provides an `acts_as_sequenced` macro that
@@ -106,6 +106,33 @@ class CreateBadgers < ActiveRecord::Migration
106
106
  end
107
107
  ```
108
108
 
109
+ If you are adding a sequenced column to an existing table, you need to account for that in your migration.
110
+
111
+ Here is an example migration that adds and sets the `sequential_id` column based on the current database records:
112
+ ```ruby
113
+ # app/db/migrations/20151120190645_add_sequental_id_to_badgers.rb
114
+ class AddSequentalIdToBadgers < ActiveRecord::Migration
115
+ add_column :badgers, :sequential_id, :integer
116
+
117
+ execute <<~SQL
118
+ UPDATE badgers
119
+ SET sequential_id = old_badgers.next_sequential_id
120
+ FROM (
121
+ SELECT id, ROW_NUMBER()
122
+ OVER(
123
+ PARTITION BY burrow_id
124
+ ORDER BY id
125
+ ) AS next_sequential_id
126
+ FROM badgers
127
+ ) old_badgers
128
+ WHERE badgers.id = old_badgers.id
129
+ SQL
130
+
131
+ change_column :badgers, :sequential_id, :integer, null: false
132
+ add_index :badgers, [:sequential_id, :burrow_id], unique: true
133
+ end
134
+ ```
135
+
109
136
  ## Configuration
110
137
 
111
138
  ### Overriding the default sequential ID column
@@ -166,7 +193,7 @@ class Answer < ActiveRecord::Base
166
193
 
167
194
  # Automatically use the sequential ID in URLs
168
195
  def to_param
169
- self.sequential_id
196
+ self.sequential_id.to_s
170
197
  end
171
198
  end
172
199
 
@@ -11,7 +11,7 @@ module Sequenced
11
11
  end
12
12
 
13
13
  def set
14
- return if id_set? || skip?
14
+ return if skip? || id_set?
15
15
  lock_table
16
16
  record.send(:"#{column}=", next_id)
17
17
  end
@@ -39,7 +39,7 @@ module Sequenced
39
39
  def unique?(id)
40
40
  build_scope(*scope) do
41
41
  rel = base_relation
42
- rel = rel.where("NOT id = ?", record.id) if record.persisted?
42
+ rel = rel.where.not(record.class.primary_key => record.id) if record.persisted?
43
43
  rel.where(column => id)
44
44
  end.count == 0
45
45
  end
@@ -54,7 +54,7 @@ module Sequenced
54
54
 
55
55
  def postgresql?
56
56
  defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) &&
57
- record.class.connection.instance_of?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
57
+ record.class.connection.kind_of?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
58
58
  end
59
59
 
60
60
  def base_relation
@@ -1,3 +1,3 @@
1
1
  module Sequenced
2
- VERSION = "3.1.1"
2
+ VERSION = "3.2.0"
3
3
  end
@@ -7,12 +7,11 @@ Gem::Specification.new do |s|
7
7
  s.authors = ["Derrick Reimer"]
8
8
  s.licenses = ['MIT']
9
9
  s.email = ["derrickreimer@gmail.com"]
10
- s.homepage = "https://github.com/djreimer/sequenced"
10
+ s.homepage = "https://github.com/derrickreimer/sequenced"
11
11
  s.summary = "Generate scoped sequential IDs for ActiveRecord models"
12
12
  s.description = "Sequenced is a gem that generates scoped sequential IDs for ActiveRecord models."
13
13
 
14
- s.files = `git ls-files`.split("\n")
15
- s.test_files = Dir["test/**/*"]
14
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
15
 
17
16
  s.add_dependency "activesupport", ">= 3.0"
18
17
  s.add_dependency "activerecord", ">= 3.0"
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequenced
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derrick Reimer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-30 00:00:00.000000000 Z
11
+ date: 2020-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  description: Sequenced is a gem that generates scoped sequential IDs for ActiveRecord
@@ -60,8 +60,8 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
- - .gitignore
64
- - .travis.yml
63
+ - ".gitignore"
64
+ - ".travis.yml"
65
65
  - CHANGELOG.md
66
66
  - Gemfile
67
67
  - MIT-LICENSE
@@ -72,82 +72,7 @@ files:
72
72
  - lib/sequenced/generator.rb
73
73
  - lib/sequenced/version.rb
74
74
  - sequenced.gemspec
75
- - test/acts_as_sequenced_test.rb
76
- - test/concurrency_test.rb
77
- - test/dummy/README.rdoc
78
- - test/dummy/Rakefile
79
- - test/dummy/app/assets/javascripts/application.js
80
- - test/dummy/app/assets/stylesheets/application.css
81
- - test/dummy/app/controllers/application_controller.rb
82
- - test/dummy/app/helpers/application_helper.rb
83
- - test/dummy/app/mailers/.gitkeep
84
- - test/dummy/app/models/.gitkeep
85
- - test/dummy/app/models/account.rb
86
- - test/dummy/app/models/address.rb
87
- - test/dummy/app/models/answer.rb
88
- - test/dummy/app/models/comment.rb
89
- - test/dummy/app/models/concurrent_badger.rb
90
- - test/dummy/app/models/doppelganger.rb
91
- - test/dummy/app/models/email.rb
92
- - test/dummy/app/models/invoice.rb
93
- - test/dummy/app/models/monster.rb
94
- - test/dummy/app/models/order.rb
95
- - test/dummy/app/models/policeman.rb
96
- - test/dummy/app/models/product.rb
97
- - test/dummy/app/models/question.rb
98
- - test/dummy/app/models/rating.rb
99
- - test/dummy/app/models/subscription.rb
100
- - test/dummy/app/models/user.rb
101
- - test/dummy/app/models/werewolf.rb
102
- - test/dummy/app/models/zombie.rb
103
- - test/dummy/app/views/layouts/application.html.erb
104
- - test/dummy/config.ru
105
- - test/dummy/config/application.rb
106
- - test/dummy/config/boot.rb
107
- - test/dummy/config/database.yml
108
- - test/dummy/config/environment.rb
109
- - test/dummy/config/environments/development.rb
110
- - test/dummy/config/environments/production.rb
111
- - test/dummy/config/environments/test.rb
112
- - test/dummy/config/initializers/backtrace_silencers.rb
113
- - test/dummy/config/initializers/inflections.rb
114
- - test/dummy/config/initializers/mime_types.rb
115
- - test/dummy/config/initializers/secret_token.rb
116
- - test/dummy/config/initializers/session_store.rb
117
- - test/dummy/config/initializers/wrap_parameters.rb
118
- - test/dummy/config/locales/en.yml
119
- - test/dummy/config/routes.rb
120
- - test/dummy/db/development.sqlite3
121
- - test/dummy/db/migrate/20120219165346_create_questions.rb
122
- - test/dummy/db/migrate/20120219165548_create_answers.rb
123
- - test/dummy/db/migrate/20120219171957_create_accounts.rb
124
- - test/dummy/db/migrate/20120219172039_create_invoices.rb
125
- - test/dummy/db/migrate/20120219172922_create_orders.rb
126
- - test/dummy/db/migrate/20120219174931_create_subscriptions.rb
127
- - test/dummy/db/migrate/20120219175744_create_users.rb
128
- - test/dummy/db/migrate/20120219232323_create_addresses.rb
129
- - test/dummy/db/migrate/20120220000804_create_comments.rb
130
- - test/dummy/db/migrate/20130411225444_create_emails.rb
131
- - test/dummy/db/migrate/20130715002029_create_ratings.rb
132
- - test/dummy/db/migrate/20130730004055_create_products.rb
133
- - test/dummy/db/migrate/20131226000000_create_monsters.rb
134
- - test/dummy/db/migrate/20140404195334_create_policemen.rb
135
- - test/dummy/db/migrate/20151120190645_create_concurrent_badgers.rb
136
- - test/dummy/db/migrate/20160118182655_create_doppelgangers.rb
137
- - test/dummy/db/schema.rb
138
- - test/dummy/db/test.sqlite3
139
- - test/dummy/lib/assets/.gitkeep
140
- - test/dummy/log/.gitkeep
141
- - test/dummy/log/development.log
142
- - test/dummy/log/test.log
143
- - test/dummy/public/404.html
144
- - test/dummy/public/422.html
145
- - test/dummy/public/500.html
146
- - test/dummy/public/favicon.ico
147
- - test/dummy/script/rails
148
- - test/multiple_sequences_test.rb
149
- - test/test_helper.rb
150
- homepage: https://github.com/djreimer/sequenced
75
+ homepage: https://github.com/derrickreimer/sequenced
151
76
  licenses:
152
77
  - MIT
153
78
  metadata: {}
@@ -157,89 +82,18 @@ require_paths:
157
82
  - lib
158
83
  required_ruby_version: !ruby/object:Gem::Requirement
159
84
  requirements:
160
- - - '>='
85
+ - - ">="
161
86
  - !ruby/object:Gem::Version
162
87
  version: '0'
163
88
  required_rubygems_version: !ruby/object:Gem::Requirement
164
89
  requirements:
165
- - - '>='
90
+ - - ">="
166
91
  - !ruby/object:Gem::Version
167
92
  version: '0'
168
93
  requirements: []
169
94
  rubyforge_project:
170
- rubygems_version: 2.3.0
95
+ rubygems_version: 2.7.3
171
96
  signing_key:
172
97
  specification_version: 4
173
98
  summary: Generate scoped sequential IDs for ActiveRecord models
174
- test_files:
175
- - test/acts_as_sequenced_test.rb
176
- - test/concurrency_test.rb
177
- - test/dummy/app/assets/javascripts/application.js
178
- - test/dummy/app/assets/stylesheets/application.css
179
- - test/dummy/app/controllers/application_controller.rb
180
- - test/dummy/app/helpers/application_helper.rb
181
- - test/dummy/app/models/account.rb
182
- - test/dummy/app/models/address.rb
183
- - test/dummy/app/models/answer.rb
184
- - test/dummy/app/models/comment.rb
185
- - test/dummy/app/models/concurrent_badger.rb
186
- - test/dummy/app/models/doppelganger.rb
187
- - test/dummy/app/models/email.rb
188
- - test/dummy/app/models/invoice.rb
189
- - test/dummy/app/models/monster.rb
190
- - test/dummy/app/models/order.rb
191
- - test/dummy/app/models/policeman.rb
192
- - test/dummy/app/models/product.rb
193
- - test/dummy/app/models/question.rb
194
- - test/dummy/app/models/rating.rb
195
- - test/dummy/app/models/subscription.rb
196
- - test/dummy/app/models/user.rb
197
- - test/dummy/app/models/werewolf.rb
198
- - test/dummy/app/models/zombie.rb
199
- - test/dummy/app/views/layouts/application.html.erb
200
- - test/dummy/config/application.rb
201
- - test/dummy/config/boot.rb
202
- - test/dummy/config/database.yml
203
- - test/dummy/config/environment.rb
204
- - test/dummy/config/environments/development.rb
205
- - test/dummy/config/environments/production.rb
206
- - test/dummy/config/environments/test.rb
207
- - test/dummy/config/initializers/backtrace_silencers.rb
208
- - test/dummy/config/initializers/inflections.rb
209
- - test/dummy/config/initializers/mime_types.rb
210
- - test/dummy/config/initializers/secret_token.rb
211
- - test/dummy/config/initializers/session_store.rb
212
- - test/dummy/config/initializers/wrap_parameters.rb
213
- - test/dummy/config/locales/en.yml
214
- - test/dummy/config/routes.rb
215
- - test/dummy/config.ru
216
- - test/dummy/db/development.sqlite3
217
- - test/dummy/db/migrate/20120219165346_create_questions.rb
218
- - test/dummy/db/migrate/20120219165548_create_answers.rb
219
- - test/dummy/db/migrate/20120219171957_create_accounts.rb
220
- - test/dummy/db/migrate/20120219172039_create_invoices.rb
221
- - test/dummy/db/migrate/20120219172922_create_orders.rb
222
- - test/dummy/db/migrate/20120219174931_create_subscriptions.rb
223
- - test/dummy/db/migrate/20120219175744_create_users.rb
224
- - test/dummy/db/migrate/20120219232323_create_addresses.rb
225
- - test/dummy/db/migrate/20120220000804_create_comments.rb
226
- - test/dummy/db/migrate/20130411225444_create_emails.rb
227
- - test/dummy/db/migrate/20130715002029_create_ratings.rb
228
- - test/dummy/db/migrate/20130730004055_create_products.rb
229
- - test/dummy/db/migrate/20131226000000_create_monsters.rb
230
- - test/dummy/db/migrate/20140404195334_create_policemen.rb
231
- - test/dummy/db/migrate/20151120190645_create_concurrent_badgers.rb
232
- - test/dummy/db/migrate/20160118182655_create_doppelgangers.rb
233
- - test/dummy/db/schema.rb
234
- - test/dummy/db/test.sqlite3
235
- - test/dummy/log/development.log
236
- - test/dummy/log/test.log
237
- - test/dummy/public/404.html
238
- - test/dummy/public/422.html
239
- - test/dummy/public/500.html
240
- - test/dummy/public/favicon.ico
241
- - test/dummy/Rakefile
242
- - test/dummy/README.rdoc
243
- - test/dummy/script/rails
244
- - test/multiple_sequences_test.rb
245
- - test/test_helper.rb
99
+ test_files: []
@@ -1,132 +0,0 @@
1
- require 'test_helper'
2
-
3
- # Test Models:
4
- #
5
- # Answer - :scope => :question_id
6
- # Comment - :scope => :question_id (with an AR default scope)
7
- # Invoice - :scope => :account_id, :start_at => 1000
8
- # Product - :scope => :account_id, :start_at => lambda { |r| r.computed_start_value }
9
- # Order - :scope => :non_existent_column
10
- # User - :scope => :account_id, :column => :custom_sequential_id
11
- # Address - :scope => :account_id ('sequential_id' does not exist)
12
- # Email - :scope => [:emailable_id, :emailable_type]
13
- # Subscription - no options
14
- # Rating - :scope => :comment_id, skip: { |r| r.score == 0 }
15
- # Monster - no options
16
- # Zombie - STI, inherits from Monster
17
- # Werewolf - STI, inherits from Monster
18
-
19
- class ActsAsSequencedTest < ActiveSupport::TestCase
20
- test "default start_at" do
21
- question = Question.create
22
- answer = question.answers.create
23
- assert_equal 1, answer.sequential_id
24
- end
25
-
26
- test "custom start_at" do
27
- account = Account.create
28
- invoice = account.invoices.create
29
- assert_equal 1000, invoice.sequential_id
30
-
31
- another_invoice = account.invoices.create
32
- assert_equal 1001, another_invoice.sequential_id
33
- end
34
-
35
- test "lambda start_at" do
36
- account = Account.create
37
- product = Product.create(:account_id => account.id)
38
- assert_equal 3, product.sequential_id
39
-
40
- another_product = Product.create(:account_id => account.id)
41
- assert_equal 4, another_product.sequential_id
42
- end
43
-
44
- test "custom start_at with populated table" do
45
- account = Account.create
46
- account.invoices.create(:sequential_id => 1)
47
- invoice = account.invoices.create
48
- assert_equal 1000, invoice.sequential_id
49
- end
50
-
51
- test "sequential id increment" do
52
- question = Question.create
53
- question.answers.create(:sequential_id => 10)
54
- another_answer = question.answers.create
55
- assert_equal 11, another_answer.sequential_id
56
- end
57
-
58
- test "default scope" do
59
- Subscription.create(:sequential_id => 1)
60
- subscription = Subscription.create
61
- assert_equal 2, subscription.sequential_id
62
- end
63
-
64
- test "undefined scope method" do
65
- account = Account.create
66
- order = account.orders.build
67
- assert_raises(NoMethodError) { order.save }
68
- end
69
-
70
- test "custom sequential id column" do
71
- account = Account.create
72
- user = account.users.create
73
- assert_equal 1, user.custom_sequential_id
74
- end
75
-
76
- test "sequential id remains on save" do
77
- question = Question.create
78
- answer = question.answers.create
79
- assert_equal 1, answer.sequential_id
80
-
81
- answer.reload
82
- answer.body = "Updated body"
83
- answer.save
84
- assert_equal 1, answer.sequential_id
85
- end
86
-
87
- test "undefined sequential id column" do
88
- account = Account.create
89
- address = account.addresses.build
90
- assert_raises(NoMethodError) { address.save }
91
- end
92
-
93
- test "manually setting sequential id" do
94
- question = Question.create
95
- answer = question.answers.build(:sequential_id => 10)
96
- another_answer = question.answers.build(:sequential_id => 10)
97
- answer.save
98
- another_answer.save
99
-
100
- assert_equal 10, answer.sequential_id
101
- assert_equal 10, another_answer.sequential_id
102
- end
103
-
104
- test "model with a default scope for sorting" do
105
- question = Question.create
106
- (1..3).each { |id| question.comments.create(:sequential_id => id) }
107
- comment = question.comments.create
108
- assert_equal 4, comment.sequential_id
109
- end
110
-
111
- test "multi-column scopes" do
112
- Email.create(:emailable_id => 1, :emailable_type => "User", :sequential_id => 2)
113
- Email.create(:emailable_id => 1, :emailable_type => "Question", :sequential_id => 3)
114
- email = Email.create(:emailable_id => 1, :emailable_type => "User")
115
- assert_equal 3, email.sequential_id
116
- end
117
-
118
- test "skip option" do
119
- rating = Rating.create(:comment_id => 1, :score => 1)
120
- assert_equal 1, rating.sequential_id
121
-
122
- rating = Rating.create(:comment_id => 1, :score => 0)
123
- assert_equal nil, rating.sequential_id
124
- end
125
-
126
- test "STI" do
127
- zombie = Zombie.create
128
- werewolf = Werewolf.create
129
- assert_equal 1, zombie.sequential_id
130
- assert_equal 2, werewolf.sequential_id
131
- end
132
- end