rlafranchi/system_tester

View on GitHub
app/controllers/system_tester/scenarios_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
require_dependency "system_tester/application_controller"

module SystemTester
  class ScenariosController < ApplicationController
    def index
      render json: Scenario.all.to_json(scenario_json_options)
    end

    def show
      scenario = Scenario.find(params[:id])
      render json: scenario.to_json(scenario_json_options)
    end

    def create
      scenario = Scenario.new(scenario_params)
      if scenario.save
        render json: scenario.to_json(scenario_json_options)
      else
        render json: { errors: scenario.errors }, status: :unprocessable_entity
      end
    end

    def update
      scenario = Scenario.find(params[:id])
      if scenario.update(scenario_params)
        render json: scenario.to_json(scenario_json_options)
      else
        render json: { errors: scenario.errors }, status: :unprocessable_entity
      end
    end

    def destroy
      Scenario.find(params[:id]).destroy!
      render json: {}
    end

    private

    def scenario_params
      params.require(:scenario).permit(:title, :system_tester_feature_id)
    end

    def scenario_json_options
      {
        include: {
          scenario_steps: {
            include: {
              step: {
                methods: [:friendly_type, :parent_type, :bg_css, :text_css, :icon]
              }
            }
          },
          feature: {}
        },
        methods: [:to_s]
      }
    end

  end
end