Skip to content

Instantly share code, notes, and snippets.

View ClayShentrup's full-sized avatar
🏗️
🗳️🌱🌷🌐🏗️🏓☢️

Clay Shentrup ClayShentrup

🏗️
🗳️🌱🌷🌐🏗️🏓☢️
View GitHub Profile
@ClayShentrup
ClayShentrup / gist:2528600
Created April 29, 2012 03:16
Devil's advocate argument for having the case statement in Ruby
case some_value
when 1..10
"do some stuff here"
when 11..20
"do something else here"
else
"out of range"
end
# compared to
@ClayShentrup
ClayShentrup / wrap.rb
Created June 26, 2012 05:04 — forked from garybernhardt/wrap.rb
Probably a really bad implementation of word wrapping
class Wrap < Struct.new(:string, :max_length)
def self.wrap(s, max_length)
raise ArgumentError.new("Maximum wrap length can't be 0") if max_length == 0
new(s, max_length).wrap
end
def wrap
return [""] if blank?
string.scan(regexp)
end
@ClayShentrup
ClayShentrup / whale_test.rb
Created July 20, 2012 05:12
Whale question
require 'test/unit'
class Whale
def self.attr_validated(method_name, &validation)
# Enter code here to make all tests pass.
end
attr_validated :num_teeth do |v|
v <= 4
end
@ClayShentrup
ClayShentrup / beget.js
Created July 20, 2012 06:59
beget question
function beget(parent, child){
// put code here to make test() return true
};
function test(){
function Parent(){
throw 'exception';
};
Parent.prototype = {code: Math.random()};
@ClayShentrup
ClayShentrup / spec_example.rb
Created December 2, 2015 20:48
Testing that code executes within a block, e.g. transaction or time zone
it('uses the client time zone') do
allow(described_class).to receive(:delete_cache) do
fail unless Time.zone == client_time_zone
end
allow(described_class).to receive(:create_cache) do
fail unless Time.zone == client_time_zone
end
update_for_year
end
@ClayShentrup
ClayShentrup / buckets_controller_spec.rb
Created December 16, 2012 08:58
Pristine RSpec controller spec using latest syntax and general minimalism
require 'spec_helper'
describe BucketsController do
render_views
login_admin
def valid_attributes
FactoryGirl.attributes_for(:bucket)
end
@ClayShentrup
ClayShentrup / original.rb
Created November 16, 2013 20:25
Trying to understand the point of Gary Bernhardt's "Boundaries" talk
describe Sweeper do
context 'a subscription is expired' do
let(:bob) { double(active?: true, paid_at: 2.months.ago) }
let(:users) { [bob] }
before { allow(User).to receive(:all).and_return(users) }
it 'emails the user' do
expect(UserMailer).to receive(:billing_problem).with(bob)
described_class.sweep
end
expected collection contained: [#<User id: 1, email: "user1@example.com", ...a bunch of attributes...>]
actual collection contained: [#<User id: 1, email: "user1@example.com", ...a bunch of attributes...>,
#<User id: 2, email: "user2@example.com", ...a bunch of attributes...>]
@ClayShentrup
ClayShentrup / names_for_let_object.rb
Last active June 23, 2016 00:51
names_for_let_objects 2
module NamesForLetObject
def names_for_let_objects(objects)
objects.map { |object| name_for_let_object(object) }
end
def name_for_let_object(object)
__memoized.instance_variable_get(:@memoized).key(object)
end
end
RSpec.shared_examples('a foreign_key constraint association') do
specify do
expect do
build(described_model, "#{association}_id" => 0).save(validate: false)
end.to raise_error(ActiveRecord::InvalidForeignKey)
end
end