Class: FixtureBuilder::Namer
- Inherits:
-
Object
- Object
- FixtureBuilder::Namer
- Includes:
- Delegations::Configuration
- Defined in:
- lib/fixture_builder/namer.rb
Instance Method Summary collapse
-
#initialize(configuration) ⇒ Namer
constructor
A new instance of Namer.
- #name(custom_name, *model_objects) ⇒ Object
- #name_model_with(model_class, &block) ⇒ Object
- #populate_custom_names(created_fixtures) ⇒ Object
- #record_name(record_hash, table_name, row_index) ⇒ Object
Methods included from Delegations::Configuration
Constructor Details
#initialize(configuration) ⇒ Namer
Returns a new instance of Namer.
5 6 7 8 9 10 |
# File 'lib/fixture_builder/namer.rb', line 5 def initialize(configuration) @configuration = configuration @custom_names = {} @model_name_procs = {} @record_names = {} end |
Instance Method Details
#name(custom_name, *model_objects) ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fixture_builder/namer.rb', line 16 def name(custom_name, *model_objects) raise "Cannot name an object blank" unless custom_name.present? model_objects.each do |model_object| raise "Cannot name a blank object" unless model_object.present? key = [model_object.class.table_name, model_object.id] raise "Cannot set name for #{key.inspect} object twice" if @custom_names[key] @custom_names[key] = custom_name model_object end end |
#name_model_with(model_class, &block) ⇒ Object
12 13 14 |
# File 'lib/fixture_builder/namer.rb', line 12 def name_model_with(model_class, &block) @model_name_procs[model_class.table_name] = block end |
#populate_custom_names(created_fixtures) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/fixture_builder/namer.rb', line 27 def populate_custom_names(created_fixtures) # Rails 3.1+, create_fixtures returns an array of Fixtures objects if not created_fixtures.first.is_a? Array # merge all fixtures hashes created_fixtures = created_fixtures.inject({}) { |hash, fixtures| hash.merge(fixtures.fixtures) } end # Rails 3.0 and earlier, create_fixtures returns an array of tuples created_fixtures.each do |fixture| name = fixture[0] id = fixture[1]['id'].to_i table_name = fixture[1].model_class.table_name key = [table_name, id] @custom_names[key] = name end end |
#record_name(record_hash, table_name, row_index) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fixture_builder/namer.rb', line 44 def record_name(record_hash, table_name, row_index) key = [table_name, record_hash['id'].to_i] name = case when name_proc = @model_name_procs[table_name] name_proc.call(record_hash, row_index.succ!) when custom = @custom_names[key] custom else inferred_record_name(record_hash, table_name, row_index) end @record_names[table_name] ||= [] @record_names[table_name] << name name.to_s end |