Module: SimpleCrud::RSpec::Helpers::Models

Included in:
SimpleCrud::RSpec::Helpers
Defined in:
lib/simple_crud/rspec/helpers/models.rb

Overview

Building the record under test and the params used to persist it.

Instance Method Summary collapse

Instance Method Details

#create_record(klass, attributes) ⇒ Object



40
41
42
# File 'lib/simple_crud/rspec/helpers/models.rb', line 40

def create_record(klass, attributes)
  instance_exec(klass, attributes, &setting(:create_record))
end

#create_records(klass, count, attributes) ⇒ Object



44
45
46
# File 'lib/simple_crud/rspec/helpers/models.rb', line 44

def create_records(klass, count, attributes)
  instance_exec(klass, count, attributes, &setting(:create_records))
end

#modelObject



17
18
19
20
21
22
# File 'lib/simple_crud/rspec/helpers/models.rb', line 17

def model
  @model ||= begin
    validate_owner_association!
    create_record(model_class, model_attributes)
  end
end

#model_attributesObject



36
37
38
# File 'lib/simple_crud/rspec/helpers/models.rb', line 36

def model_attributes
  resolve(setting(:model_attributes))
end

#model_classObject



8
9
10
11
# File 'lib/simple_crud/rspec/helpers/models.rb', line 8

def model_class
  described_class.to_s.split('::')
                 .last.sub('Controller', '').singularize.underscore
end

#model_class_objectObject



13
14
15
# File 'lib/simple_crud/rspec/helpers/models.rb', line 13

def model_class_object
  model_class.classify.constantize
end

#model_paramsObject



52
53
54
# File 'lib/simple_crud/rspec/helpers/models.rb', line 52

def model_params
  @model_params ||= params_for(model_class)
end

#model_serializerObject



56
57
58
# File 'lib/simple_crud/rspec/helpers/models.rb', line 56

def model_serializer
  defined?(serializer) ? serializer : instance_exec(model, &setting(:serializer_class))
end

#params_for(klass) ⇒ Object



48
49
50
# File 'lib/simple_crud/rspec/helpers/models.rb', line 48

def params_for(klass)
  instance_exec(klass, &setting(:params_for))
end

#rendered_recordObject



60
61
62
# File 'lib/simple_crud/rspec/helpers/models.rb', line 60

def rendered_record
  controller.instance_variable_get(:@record)
end

#rendered_recordsObject



64
65
66
# File 'lib/simple_crud/rspec/helpers/models.rb', line 64

def rendered_records
  controller.instance_variable_get(:@records)
end

#validate_owner_association!Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/simple_crud/rspec/helpers/models.rb', line 24

def validate_owner_association!
  assoc = owner_association
  return unless assoc

  klass = model_class_object
  return if klass.method_defined?("#{assoc}=") || klass.column_names.include?(assoc.to_s)

  raise "simple_crud: owner_association is :#{assoc} but #{klass} has no #{assoc}= setter. " \
        'Set `simple_crud: { owner_association: nil }` in your describe block or ' \
        'override model_attributes directly.'
end