selections 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ ## 0.1.12
2
+
3
+ * https://github.com/nigelr/selections/issues/6 - #label_to_id feature to allow quick ID lookups within factories (speed enhancement)
4
+
1
5
  ## 0.1.11
2
6
 
3
7
  * https://github.com/nigelr/selections/issues/2 - Added feature of radios for radio_buttons
data/README.md CHANGED
@@ -202,6 +202,28 @@ tell selections so by adding the following to a new file, `config/initializers/s
202
202
  Selections.model { YourSelectionModel }
203
203
  ```
204
204
 
205
+ ## Fast Factories
206
+ ### label_to_id
207
+
208
+ When using fixtures with the label same as the system_code, use this method to return the ID of the of the fixture and use this in Factories instead of using a lookup as it does not need a DB search.
209
+
210
+ eg:
211
+ Fixture File
212
+ ----------------------------------------
213
+ priority_high:
214
+ name: Priorities
215
+ system_code: priority_high
216
+ parent: priority
217
+ ----------------------------------------
218
+
219
+ #### in Factory
220
+ ---------------------------------------
221
+ priority: { Selection.priority_high } <== Don't do this as it will need a DB lookup
222
+
223
+ priority_id: { Selection.label_to_id(:priority_high) } <== This will be much quicker
224
+
225
+
226
+
205
227
  # TODO
206
228
 
207
229
  * Add model generators
@@ -52,8 +52,32 @@ module Selections
52
52
  end
53
53
  end
54
54
 
55
+ # label_to_id
56
+ #
57
+ # When using fixtures with the label same as the system_code, use this method to return the ID of the of the fixture
58
+ # and use this in Factories instead of using a lookup as it does not need a DB search.
59
+ #
60
+ # eg:
61
+ # Fixture File
62
+ #----------------------------------------
63
+ # priority_high:
64
+ # name: Priorities
65
+ # system_code: priority_high
66
+ # parent: priority
67
+ #----------------------------------------
68
+ #
69
+ # in Factory
70
+ # ---------------------------------------
71
+ # priority: { Selection.priority_high } <== Don't do this as it will need a DB lookup
72
+ #
73
+ # priority_id: { Selection.label_to_id(:priority_high) } <== This will be much quicker
74
+ #
75
+ def label_to_id(label)
76
+ ActiveRecord::Fixtures.identify(label)
77
+ end
55
78
  end
56
79
 
80
+
57
81
  def to_s #:nodoc:
58
82
  name.to_s
59
83
  end
@@ -1,3 +1,3 @@
1
1
  module Selections
2
- VERSION = '0.1.11'
2
+ VERSION = '0.1.12'
3
3
  end
@@ -40,6 +40,12 @@ describe Selections do
40
40
  end
41
41
  end
42
42
 
43
+ describe '#fixture_id' do
44
+ context 'returns ID without DB access' do
45
+ it { expect(Selection.label_to_id('priority_high')).to eq ActiveRecord::Fixtures.identify(:priority_high) }
46
+ it { expect(Selection.label_to_id(:priority_high)).to eq ActiveRecord::Fixtures.identify(:priority_high) }
47
+ end
48
+ end
43
49
 
44
50
  describe ".leaf?" do
45
51
  it { selection_1; expect(parent.leaf?).to be_false }
@@ -1,5 +1,6 @@
1
1
  require 'selections'
2
2
  require "nokogiri"
3
+ require 'active_record/fixtures'
3
4
 
4
5
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
5
6
  ActiveRecord::Migration.create_table :selections do |t|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selections
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-06 00:00:00.000000000 Z
12
+ date: 2013-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord