module WCC::Contentful::RSpec
Public Instance Methods
contentful_stub(content_type, **attrs)
click to toggle source
Builds out a fake Contentful
entry for the given content type, and then stubs the Model
API to return that content type for `.find` and `.find_by` query methods.
# File lib/wcc/contentful/rspec.rb, line 15 def contentful_stub(content_type, **attrs) const = WCC::Contentful::Model.resolve_constant(content_type.to_s) instance = contentful_create(content_type, **attrs) # mimic what's going on inside model_singleton_methods.rb # find, find_by, etc always return a new instance from the same raw allow(WCC::Contentful::Model).to receive(:find) .with(instance.id, any_args) do |_id, keyword_params| options = keyword_params && keyword_params[:options] contentful_create(content_type, options, raw: instance.raw, **attrs) end allow(const).to receive(:find) { |id, options| WCC::Contentful::Model.find(id, **(options || {})) } attrs.each do |k, v| allow(const).to receive(:find_by) .with(hash_including(k => v)) do |filter| filter = filter&.dup options = filter&.delete(:options) || {} contentful_create(content_type, options, raw: instance.raw, **attrs) end end instance end