require 'test_helper' require 'faker'
class {{ NAMESPACE }}ControllerTest < ActionDispatch::IntegrationTest
def model "{{ MODEL }}".singularize.camelize.constantize end def get_columns model.columns_hash.map { |k, v| { key: k.to_sym, data_type: v.type } } end def data_types val lookup = { string: Faker::Lorem.sentence.to_s, datetime: DateTime.now, integer: 1, boolean: false, text: Faker::Lorem.paragraph.to_s, } lookup[val] || nil end def black_list_keys { id: true, created_at: true, updated_at: true, } end def set_data_values get_columns.each_with_object({}) do |e, acc| key = e[:key] val = e[:data_type] if !black_list_keys[key] acc[key] = data_types(val) end acc end end def random_params set_data_values end setup do @data = model.create(random_params) end test "should create {{ NAMESPACE_SNAKECASE }}" do post '{{ ROUTE }}', params: random_params assert_response :created end test "should get index {{ NAMESPACE_SNAKECASE }}" do get '{{ ROUTE }}' assert_response :success end test "should show {{ NAMESPACE_SNAKECASE }}" do get "{{ ROUTE }}/#{@data.id}" assert_response :success end test "should put update {{ NAMESPACE_SNAKECASE }}" do put "{{ ROUTE }}/#{@data.id}", params: random_params assert_response :success end test "should patch update {{ NAMESPACE_SNAKECASE }}" do patch "{{ ROUTE }}/#{@data.id}", params: random_params assert_response :success end test "should destroy {{ NAMESPACE_SNAKECASE }}" do delete "{{ ROUTE }}/#{@data.id}" assert_response :no_content end
end