Skip to content

Instantly share code, notes, and snippets.

View bhserna's full-sized avatar

Benito Serna bhserna

View GitHub Profile
def portfolio_with(*projects, current_date)
projects_finder = FakeProjectFinder.new(*(projects + [refunded_project]))
UserPortfolio.portfolio_for_user(user, current_date, projects_finder)
end
describe "implements investments value interface" do
subject { portfolio_with(project) }
it_behaves_like "investments value interface"
end
RSpec.shared_examples "investments value interface" do
it { expect(subject).to respond_to(:principal_invested) }
it { expect(subject).to respond_to(:generated_value) }
it { expect(subject).to respond_to(:current_value) }
it { expect(subject).to respond_to(:has_current_value_with_adjustment?) }
it { expect(subject).to respond_to(:value_of_received_payments) }
it { expect(subject).to respond_to(:count_of_received_payments) }
end
@bhserna
bhserna / test.rb
Created November 11, 2016 17:58
5 Rules - Tests without active record
before do
@user = user_with(first_name: "Maria")
@project_one = project_with(
fixed_annual_rate: 11,
execution_date: Date.new(2015, 10, 8),
investments: [investment_with(amount: 100_000, user: user)])
end
def project_with(attrs)
FakeProject.new({ fixed_annual_rate: 11 }.merge(attrs))
@bhserna
bhserna / test.rb
Created November 11, 2016 17:48
5 Rules - Test through module functions
it "(when project is refunded)" do
portfolio = portfolio_on(Date.new(2018, 2, 4))
date = next_payment_date_for_project(
portfolio,
refunded_project,
formatter: ->(date) { "My date: #{date}" },
not_executed_message: "No se ha ejecutado",
no_payments_left_message: "No hay más pagos",
project_refunded_message: "No aplica"
)
@bhserna
bhserna / controller.rb
Created November 11, 2016 17:43
5 Rules - Inject dependencies
class Admin::ProjectFundingTerminationsController < Admin::BaseController
def destroy
Projects.revert_funding_termination(
find_project,
projects_store: Project,
receipts_cancelator: ReceiptsCancelator
)
redirect_to admin_projects_path
end
@bhserna
bhserna / controller.rb
Created November 11, 2016 17:37
5 Rules - Call Module functions on Rails components
class Admin::ProjectFundingTerminationsController < Admin::BaseController
def new
project = find_project
form = Projects.terminate_funding_form(project)
render locals: { project: project, form: form }, layout: false
end
def create
termination = Projects.terminate_funding(
find_project.id,
@bhserna
bhserna / projects.rb
Last active November 11, 2016 17:26
5 Rules - Module functions
module Projects
def self.publish_project
end
def self.add_termination_date_form
end
def self.add_termination_date
end
def self.details_page_for_project
end
def self.terminate_funding_form
@bhserna
bhserna / find_records.rb
Last active October 26, 2016 22:42
Rails no es mi app…. pero ¿Que tanto debería delegar al modelo?
class User < ActiveRecord::Base
def self.last_registered(number)
order(id: :desc).limit(number)
end
end
class Admin::UsersExportsController < Admin::BaseController
def create
export = Users.export_users(User, params[:users_export], Date.current)
# other stuff...
require 'json'
require 'yaml'
all = [{:id=>1, :label=>"floral", :color=>"#F5F058", :parent_id=>nil, :label_es=>"floral", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>2, :label=>"fruit", :color=>"#AA274E", :parent_id=>nil, :label_es=>"frutal", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>3, :label=>"chocolate", :color=>"#6F5740", :parent_id=>nil, :label_es=>"chocolate", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>4, :label=>"sweet", :color=>"#FAF8A9", :parent_id=>nil, :label_es=>"dulce", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>5, :label=>"nut", :color=>"#F38546", :parent_id=>nil, :label_es=>"nuez", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>6, :label=>"grain/cereal", :color=>"#AB9566", :parent_id=>nil, :label_es=>"granos/cereal", :open=>1, :zoomed=>1, :selected=>1, :flavor_type=>"flavor", :positive=>1}, {:id=>7, :label=>"roa
@bhserna
bhserna / 150920-1-status.md
Last active September 21, 2015 18:08
Flap Status

Estado actual del sistema

Pueden visitar un ambiente de prueba de la aplicación en https://flap-staging.herokuapp.com/.

Hasta ahora se ha realizado la integración con el diseño y la plataforma tcm, en las siguientes acciónes.

  • Pantalla de inicio
  • Registro de usuario
  • Estado de espera de confirmación de correo
  • Confirmación de correo (sin diseño)