low_card_tables 1.0.1 → 1.0.2

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTlmZmY0NDI1ZDJhNmY4Yzg4YjNmMmE4ZmQ1OWJkZTc3YjUzMjc1NA==
4
+ OGE2MGZlMWQ4YzViMjI3OWNmYjU2ZTUwN2Y0YjJiMzVhMGM3MTVmMQ==
5
5
  data.tar.gz: !binary |-
6
- NTM5ZjFjOGZhYmMwNDVkYmI4YTUyNjQ1NmI4ZjM4NDZmZmJhNzA5Mg==
6
+ MzY1YzdhODVlZmJmMzQ3MWQ3MjA0OTcyNGI1YjE5ZTU2NzhmYjRhNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTBlNTdkODc3NzdhMDU1MDA1N2JjNjAzM2RmZjRjM2NiYTI3OTVlNzgzNjgx
10
- OGM2ODQ4MmJlNDhkOTRiZGJiNGIzZjFmNzc5MzVjNGQyMzI3MWVmODA3NjA0
11
- ZWViNzE0YjQ3YTExMjg4YWE1MzAwZTI0MWFmZWNjOGQxNjUxYmY=
9
+ MGM4YTRiMWMzODdjODQ5OTZiZmRjYmZhMzAzZWJlNTZhNGQwOGYyZTQyOTFm
10
+ MmIxOThiMTFhYzMzMGNlZDg0YmViODE0MGM3YzJiNTU0YjA2YTJmOGYwNDNk
11
+ NmZjMWJjNmY4NGE5Y2M5NTAzZjkyNTBiNDIxYTA3NWY2ZTM1ZmQ=
12
12
  data.tar.gz: !binary |-
13
- NTUxNzgwODA1NmY0NzljOGY4ZDViY2NkMjFhOTYyZTFkOTVlNzRlMzU3NWE1
14
- MGM5MWY4ZWQzMWI3NmZhNzgwNjBlYjdhZDllNTk4OGMzNGRkMDhkNDQ3MzM3
15
- MTRmNTE3NTM0OTcyMzA1ZWRhNWUxNjcxYzQzODFjN2I2M2FjMmE=
13
+ NzAxN2RmZDJiOGZkOTNhNDM0NjRjNzI1NDBjN2I0MzhiOWIxYzczYjVmNThh
14
+ ZmFlZWNmNThkNGFhZGJlZWU0MTg0MTNjMjA3MTBmZWMzYWI1NTE5YWRhYzBi
15
+ M2ZkZWMyZjc4YjI0ZjcwM2FlYzFmNDVkYzU2MDNhYjFkMjY1MmY=
data/CHANGES.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # `low_card_tables` Changelog
2
2
 
3
- ## 1.0.1, <pending>
3
+ ## 1.0.2, 2014-07-24
4
+
5
+ * Fixed an issue where, if someone had defined an `ActiveRecord::Base` subclass with a `nil` `table_name`, migrations
6
+ would fail.
7
+
8
+ ## 1.0.1, 2014-07-07
4
9
 
5
10
  * Fixed an issue where you couldn't migrate a low-card column into existence with a migration &mdash; because if you
6
11
  declared a low-card column that didn't exist, you'd immediately receive an error. Now this works properly.
@@ -210,7 +210,8 @@ module LowCardTables
210
210
  # Make sure we load all models
211
211
  ::Rails.application.eager_load! if defined?(::Rails) && ::Rails.respond_to?(:application) && ::Rails.application && ::Rails.application.respond_to?(:eager_load!)
212
212
  out = ::ActiveRecord::Base.descendants.detect do |klass|
213
- klass.table_name.strip.downcase == table_name.to_s.strip.downcase &&
213
+ klass.table_name &&
214
+ klass.table_name.strip.downcase == table_name.to_s.strip.downcase &&
214
215
  klass.is_low_card_table? &&
215
216
  klass.name && klass.name.strip.length > 0
216
217
  end
@@ -1,4 +1,4 @@
1
1
  # Defines the current version of +low_card_tables+.
2
2
  module LowCardTables
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.2"
4
4
  end
@@ -59,6 +59,18 @@ describe "LowCardTables migration support" do
59
59
  end
60
60
  end
61
61
 
62
+ it "should not blow up if there's an ActiveRecord subclass around that has no table name" do
63
+ define_model_class(:TableWithoutName, nil) { }
64
+
65
+ migrate do
66
+ create_table :non_low_card_table do |t|
67
+ t.string :name
68
+ end
69
+
70
+ drop_table :non_low_card_table
71
+ end
72
+ end
73
+
62
74
  it "should handle schema changes to the low-card table" do
63
75
  tn = @table_name
64
76
  migrate do
@@ -80,16 +80,16 @@ describe LowCardTables::ActiveRecord::Migrations do
80
80
 
81
81
  context "with mock low-card model" do
82
82
  before :each do
83
- non_low_card_class = Object.new
83
+ @non_low_card_class = Object.new
84
84
  @low_card_class = Object.new
85
85
 
86
- expect(non_low_card_class).to receive(:table_name).and_return('bar')
87
- expect(@low_card_class).to receive(:table_name).and_return('foo')
86
+ allow(@non_low_card_class).to receive(:table_name).and_return('bar')
87
+ allow(@low_card_class).to receive(:table_name).and_return('foo')
88
88
 
89
89
  expect(@low_card_class).to receive(:is_low_card_table?).and_return(true)
90
90
  expect(@low_card_class).to receive(:name).at_least(:once).and_return('Whatever')
91
91
 
92
- expect(::ActiveRecord::Base).to receive(:descendants).and_return([ non_low_card_class, @low_card_class ])
92
+ expect(::ActiveRecord::Base).to receive(:descendants).and_return([ @non_low_card_class, @low_card_class ])
93
93
  end
94
94
 
95
95
  %w{add_column remove_column create_table change_table}.each do |method_name|
@@ -127,6 +127,22 @@ describe LowCardTables::ActiveRecord::Migrations do
127
127
  out
128
128
  end
129
129
 
130
+ it "should not fail if there's an ActiveRecord subclass around with no table_name" do
131
+ allow(@non_low_card_class).to receive(:table_name).and_return(nil)
132
+
133
+ expect(@low_card_class).to receive(:low_card_remove_unique_index!).once.ordered
134
+
135
+ expect(@low_card_class).to receive(:reset_column_information).at_least(2).times.ordered
136
+ expect(@low_card_class).to receive(:low_card_value_column_names).twice.ordered.and_return([ 'x', 'y' ])
137
+
138
+ expect(LowCardTables::VersionSupport).to receive(:clear_schema_cache!).once.ordered.with(@low_card_class)
139
+
140
+ expect(@low_card_class).to receive(:low_card_ensure_has_unique_index!).once.with(true).ordered
141
+
142
+ @migration.send(@method, *@args, &@proc)
143
+ @migration.calls.should == [ { :name => @method, :args => @args, :block => @proc } ]
144
+ end
145
+
130
146
  it "should call #eager_load, pick up an AR descendant properly, and enforce the index" do
131
147
  expect(@low_card_class).to receive(:low_card_remove_unique_index!).once.ordered
132
148
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: low_card_tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Geweke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler