Skip to content

Instantly share code, notes, and snippets.

View yukas's full-sized avatar

Yury Kaspiarovich yukas

View GitHub Profile
require "spec_helper"
describe OrderReport do
subject { Traver.create(:order_report) }
describe "#update_order_report" do
before do
calculator = instance_double("OrderCalculator", total: 1.0, fee: 0.01)
expect(subject).to recieve(:calculator).and_return(calculator)
end
require "spec_helper"
describe OrderCalculator do
let(:order) {
Traver.create(order: {
items: [{ price: 1.0 }, { price: 2.0 }]
})
}
subject { OrderCalculator.new(order) }
class OrderReport < ActiveRecord::Base
belongs_to :order
def update_order_report
this.total = calculator.total
this.fee = calculator.fee
save!
end
class ReportsController < ApplicationController
def index
raise "Can't operate without event date" if params[:event_date_id].blank?
# ...
end
end
# order.rb
class Order < ActiveRecord::Base
delegate :email, to: :real_user, prefix: :user
belogns_to :user
def real_user
user || AnonymousUser.new
end
end
@yukas
yukas / order_canceller.rb
Last active June 24, 2016 09:59
Ugly way to organize methods in Ruby class
class OrderCanceller
attr_reader :order
def initialize(order)
@order = order
end
def send_notification
OrderMailer.cancel_emal(order).deliver
end
@yukas
yukas / order_canceller_(refined).rb
Last active June 24, 2016 10:14
Better way to arrange methods in a Ruby class
class OrderCanceller
attr_reader :order
def initialize(order)
@order = order
end
def cancel_order
change_status
log_cancellation
import AVFoundation
class BarcodeCapturer: NSObject, AVCaptureMetadataOutputObjectsDelegate {
var bounds: CGRect
var delegate: BarcodeCapturerDelegate
var previewLayer: AVCaptureVideoPreviewLayer!
private var captureSession: AVCaptureSession!
private var previousScannedValue: String?
import AVFoundation
import UIKit
class ScanViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!
var previousScannedValue: String?
override func viewDidLoad() {
import AVFoundation
import UIKit
class ScanViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!
var previousScannedValue: String?
override func viewDidLoad() {