Class: HasHelpers::FactoryController
- Inherits:
-
ActionController::API
- Object
- ActionController::API
- HasHelpers::FactoryController
- Defined in:
- app/controllers/has_helpers/factory_controller.rb
Overview
Test-only API for exercising ::FactoryBot factories from e2e suites.
Instance Method Summary collapse
Instance Method Details
#build ⇒ Object
20 21 22 23 24 |
# File 'app/controllers/has_helpers/factory_controller.rb', line 20 def build config = factory_request_config record = build_record(config[:factory], config[:traits], config[:overrides]) render json: serialize(record, config[:includes]).merge(persisted: record.persisted?), status: :ok end |
#create ⇒ Object
14 15 16 17 18 |
# File 'app/controllers/has_helpers/factory_controller.rb', line 14 def create config = factory_request_config record = create_record(config[:factory], config[:traits], config[:overrides]) render json: serialize(record, config[:includes]), status: :created end |
#scenario ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/controllers/has_helpers/factory_controller.rb', line 46 def scenario scenario_def = ::HasHelpers::FactoryScenario.registry.fetch(params.require(:scenario)) return head :not_found unless scenario_def runner = ::HasHelpers::FactoryScenario::Runner.new( scenario_def, params[:objects] || {}, params[:activate] || [], params[:response] || [] ) result_objects = runner.run render json: serialize_scenario_payload(result_objects, runner.explicit_keys), status: :ok rescue StandardError => e handle_error(e) end |
#seed ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'app/controllers/has_helpers/factory_controller.rb', line 26 def seed config = factory_request_config count = params.require(:count).to_i raise ArgumentError, "count must be greater than 0" unless count.positive? records = create_records(config[:factory], count, config[:traits], config[:overrides]) render json: records.map { |record| serialize(record, config[:includes]) }, status: :created end |
#show ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'app/controllers/has_helpers/factory_controller.rb', line 35 def show record = find_record(params.require(:resource).to_sym, params.require(:id)) return head :not_found unless record render json: serialize(record, parse_includes(params[:include])), status: :ok rescue ::FactoryBot::FactoryNotRegisteredError, NameError => e render json: { error: e. }, status: :bad_request rescue ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid head :not_found end |