Hey everyone,
For a long time I've been writing boilerplate classes that have basically the same structure of initialization:
class UserRegistrationForm
def initialize(access_code)
@access_code = access_code
end
require "rails_helper" | |
RSpec.describe PokemonsController do | |
describe "GET #index" do | |
it "renders the index template" do | |
get :index | |
expect(response.status).to eq(200) | |
expect(response).to render_template('index) | |
end | |
end |
Hey everyone,
For a long time I've been writing boilerplate classes that have basically the same structure of initialization:
class UserRegistrationForm
def initialize(access_code)
@access_code = access_code
end
class MemberEligibleForTierRule | |
attr_reader :member, :tier | |
def initialize(member:, tier:) | |
@member, @tier = member, tier | |
end | |
def satisfied? | |
(flew_enough_miles? || flew_enough_segments?) && spent_enough_money? | |
end |
module Workflows | |
class ProductionEntity < BaseEntity | |
attribute :id, AttrType::Strict::Integer | |
attribute :title, AttrType::Strict::String | |
attribute :logline, AttrType::Strict::String.optional | |
end | |
end |
class ProductionRepo < BaseRepo | |
entity_class ProductionEntity | |
def initialize(data_source: MovieProduction) | |
super | |
end | |
def find_by_id(id) | |
wrap(data_source.find_by_id(id)) | |
end |
class MovieProduction < ApplicationRecord | |
def self.search_by_title(title) | |
where('title ILIKE ?', "#{sanitize_sql_like(title)}%") } | |
end | |
end |
class MovieProductionAPI | |
def self.search_by_title(title) | |
SwaggerClient::MovieProductionsApi.advanced_search( | |
search_param: title, | |
headers: { ... }, | |
... | |
) | |
end | |
end |
# using the default data source | |
repo = ProductionRepo.new | |
# swapping for a REST API data source | |
repo = ProductionRepo.new(data_source: MovieProductionAPI) |
module Workflows | |
class OnboardProduction | |
include NetflixInteractor | |
def self.call(production_id:, repo: ProductionRepo.new) | |
super | |
end | |
def call | |
# validate inputs to check if it's okay to onboard a production? |