Skip to content

Instantly share code, notes, and snippets.

View vsavkin's full-sized avatar

Victor Savkin vsavkin

View GitHub Profile
@vsavkin
vsavkin / book_user_address.rb
Created April 21, 2012 00:36
Book, User, Address
class Book
include DataMapper::Resource
property :id, Serial
property :title, String
property :author, String
property :price, Decimal
end
class User
@vsavkin
vsavkin / order_item_payment.rb
Created April 21, 2012 00:37
Order Item Payment
class Order
include DataMapper::Resource
property :id, Serial, key: true
property :status, Enum[:new, :ready, :paid, :shipped, :closed, :canceled]
belongs_to :buyer, 'User'
has n, :items
has 1, :payment
@vsavkin
vsavkin / create_order_with_items.rb
Created April 21, 2012 00:38
Create Order with Items
buyer = current_user
order = Order.make buyer
#At this moment:
#order.shipping_address == buyers_address
#order.status == :new
order.make_item book1, 2
order.make_item book2, 3
order.mark_as_ready
@vsavkin
vsavkin / getting_order_from_db.rb
Created April 21, 2012 00:39
Getting Order from DB
order = Order.get(buyer, params[:id])
@vsavkin
vsavkin / active_orders1.rb
Created April 21, 2012 00:39
Active Orders
@all_orders = current_user.orders.active
@vsavkin
vsavkin / active_orders2.rb
Created April 21, 2012 00:40
Active Orders
@all_orders = Order.active_orders(user)
@vsavkin
vsavkin / stubbing_active_orders_1.rb
Created April 21, 2012 00:41
Stubbing Active Orders
order = ...
stub(orders = Object.new).active {[order]}
stub(user = Object.new).orders {orders}
stub(UserSession).current_user {user}
@vsavkin
vsavkin / stubbing_active_orders_2.rb
Created April 21, 2012 00:42
Stubbing Active Orders
order = ...
stub(UserSession).current_user {user}
stub(Order).active_orders(user){[order]}
@vsavkin
vsavkin / order_presenter.rb
Created April 21, 2012 00:42
Order Presenter
class OrderPresenter < Struct.new(:order)
def render_items
order.items.map do |item|
item_row item
end.join("")
end
private
def item_row item
@vsavkin
vsavkin / payment_service.rb
Created April 21, 2012 00:43
Payment Service
module PaymentService
def self.process order, credit_card
with_transaction do
order.make_payment mask_card(credit_card)
make_remote_call credit_card, order.payment
end
end
...
end