Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
require 'mocha' require 'spam_cannon' require 'test/unit' class SpamCannonTest < Test::Unit::TestCase def setup setup_client setup_newsletters setup_users end def setup_client SpamCannon.client = mock end def setup_newsletters Object.const_set(:FakeNewsletter, Struct.new(:list_id, :title, :summary, :frequency)) unless defined? FakeNewsletter @letters = [] @letters << [ 'n313', 'The Daily Rubyist', "A daily recap of what's hot and what's not.", 'daily' ] @letters << [ 'n421', 'Gently Mockin', "A weekly reader on mocking and related stories.", 'weekly' ] @letters.map! { |s| FakeNewsletter.new(*s) } SpamCannon.client.stubs(:getNewsletters).returns(@letters) end def setup_users Object.const_set(:FakeUser, Struct.new(:email, :vitals, :subscriptions)) unless defined? FakeUser @users = { :err => [ 'err@theblog.com', { :age => 31, :state => 'CA' }, ['n313'] ], :nic => [ 'dr@nic.com', { :age => 19, :state => 'N/A' }, %w[n313 n421] ], :evn => [ 'evan@weaver.com', { :age => 37, :state => 'PA' }, ['n421'] ] } @users = @users.inject({}) { |hash, (name, user)| hash.merge(name => FakeUser.new(*user)) } end def test_get_user_does_something user = @users[:err] SpamCannon.client.expects(:getUser).with(user.email).returns(user) assert_equal user, SpamCannon.get_user(user.email) end def test_create_user_works user = @users[:nic] SpamCannon.client.expects(:createUser).with(user.email, user.vitals, user.subscriptions).returns(true) assert SpamCannon.create_user(user.email, user.vitals, user.subscriptions) end def test_update_user_is_okay user, unsubscribe = @users[:evn], %w[e353] SpamCannon.client.expects(:updateUser).with(user.email, user.vitals, user.subscriptions, unsubscribe).returns(true) assert SpamCannon.update_user(user.email, user.vitals, user.subscriptions, unsubscribe) end def test_newsletters_returns_hash assert_equal Hash, SpamCannon.newsletters.class assert_equal 2, SpamCannon.newsletters.size end def test_newsletters_has_the_key assert_equal %w[n313 n421].sort, SpamCannon.newsletters.keys.sort end def test_newsletters_hash_is_properly_indexed assert_equal @letters.last, SpamCannon.newsletters[@letters.last.list_id] end def test_newsletters_hash_is_cached object_id = SpamCannon.newsletters.object_id assert_equal object_id, SpamCannon.newsletters.object_id assert_equal object_id, SpamCannon.newsletters.object_id end def test_user_exists_works email = 'err@theblog.com' SpamCannon.client.expects(:doesUserExist).with(email).returns(true) assert SpamCannon.user_exists?(email) end end
This paste will be private.
From the Design Piracy series on my blog: