Module: Synthra::FactoryBotBridge
- Defined in:
- lib/synthra/engine.rb
Overview
Factory Bot bridge for automatic integration
Defined Under Namespace
Classes: FakeDataStrategy
Class Method Summary collapse
Class Method Details
.define_factory_for(schema_name) ⇒ Object
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/synthra/engine.rb', line 175 def define_factory_for(schema_name) factory_name = schema_name.underscore.to_sym schema = Synthra.registry.schema(schema_name) FactoryBot.define do factory factory_name, class: OpenStruct do transient do fake_data_seed { nil } fake_data_mode { :random } end initialize_with do data = Synthra.registry.schema(schema_name.to_s).generate( seed: fake_data_seed, mode: fake_data_mode ) OpenStruct.new(data) end end end rescue FactoryBot::DuplicateDefinitionError # Factory already exists, skip end |
.integrate! ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/synthra/engine.rb', line 163 def integrate! return unless defined?(FactoryBot) # Add Synthra strategy to Factory Bot FactoryBot.register_strategy(:fake_data, FakeDataStrategy) # Auto-define factories for all schemas Synthra.registry.names.each do |name| define_factory_for(name) end end |