Skip to content

Instantly share code, notes, and snippets.

Tod.configure do |config|
config.repo = TasksRepository::ActiveRecord
end
class TasksRepository::ActiveRecord
def persist(task_entity)
task = Task.create({ title: task_entity.title })
serialize task
end
def count
Task.count
end
module Tod
module TasksRepository
class InMemory
def initialize
@tasks = {}
@id = 0
end
def persist(task)
@id += 1
module Tod
module Entities
class Task
attr_accessor :id
attr_reader :title
def initialize(title: '')
@title = title
end
module Tod
module UseCases
class AddTask
def self.add(title)
task = Entities::Task.new(title: title)
if task.valid?
Tod.repo.persist(task)
else
false
module Tod
class << self
attr_accessor :repo
def configure
yield self
end
def repo
@repo ||= TasksRepository::InMemory.new
require 'spec_helper'
describe Tod do
describe '.add_task' do
let(:repo) { Tod.repo }
it 'adds a new task' do
expect { Tod.add_task('speak @ Guru-SP') }.
to change{ repo.count }.by(1)
end
Tod.add_task('write about clean architecture')