Skip to content

Instantly share code, notes, and snippets.

@apeckham
apeckham / capybara_helper.rb
Created April 7, 2010 17:41
capybara + rails + selenium + test::unit + jammit
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
require 'capybara/rails'
Jammit.load_configuration(Jammit::DEFAULT_CONFIG_PATH)
Jammit.packager.force = true
Jammit.packager.precache_all
class CapybaraTest < ActionController::IntegrationTest
fixtures :all
@apeckham
apeckham / location_hash.js
Created April 26, 2010 17:53
location.hash history for prototype
var LocationHash = Class.create({
currentHash: "",
initialize: function(proxy) {
this.proxy = proxy || {
get: function() {
return location.hash;
},
set: function(value) {
@apeckham
apeckham / mock_dialogs.js
Created May 17, 2010 20:08
mock javascript alert, confirm, prompt
var MockPrompt = {
install: function() {
MockPrompt.message = undefined;
MockPrompt.value = undefined;
MockPrompt.returnValue = undefined;
MockPrompt.originalPrompt = window.prompt;
window.prompt = function(message, value) {
MockPrompt.message = message;
MockPrompt.value = value;
@apeckham
apeckham / monit_for_capistrano.rb
Created May 21, 2010 22:53
capistrano monit tasks
namespace :monit do
task :install, :roles => :app do
raise "ENV[PLUGIN] is missing" unless ENV['PLUGIN']
sudo "ln -sf #{current_path}/etc/monit.d/#{ENV['PLUGIN']} /etc/monit.d/#{ENV['PLUGIN']}"
end
task :list, :roles => :app do
sudo "ls -al /etc/monit.d"
end
@apeckham
apeckham / convert.rake
Created May 30, 2010 18:56
rake task to convert jsunit tests to jasmine
task :convert do
require 'nokogiri'
Dir.glob("public/javascripts/test-pages/**/*_test.html").each do |file|
doc = Nokogiri::HTML(File.read(file))
name = File.basename(file, "_test.html")
script = doc.css("script").find { |tag| tag[:src].blank? }
if body = doc.at("body")
File.open("spec/javascripts/fixtures/#{name}.html", "w") do |out|
@apeckham
apeckham / jsunit assertions for jasmine.js
Created May 30, 2010 18:58
jsunit assertions for jasmine
function assertEquals(expected, actual) {
expect(expected).toEqual(actual);
}
function assertNotEquals(expected, actual) {
expect(expected).toNotEqual(actual);
}
function assertTrue(value) {
expect(value).toBeTruthy();
@apeckham
apeckham / jasmine fixtures.js
Created May 30, 2010 19:00
rake task to create jasmine fixtures from HTML files
namespace :jasmine do
task :fixtures do
blobs = {}
Dir.glob("spec/javascripts/fixtures/*.html").each do |file|
blobs[File.basename(file, ".html")] = File.read(file)
end
File.open("spec/javascripts/helpers/fixtures.js", "w") do |file|
file << <<END
var Fixtures = {
class Delayed::Worker
def handle_failed_job_with_hoptoad(job, error)
HoptoadNotifier.notify(error)
handle_failed_job_without_hoptoad(job, error)
end
alias_method_chain :handle_failed_job, :hoptoad
end
TIMINGS = Hash.new(0)
module Capistrano::Configuration::Execution
def execute_task_with_timing(task)
start = Time.now
execute_task_without_timing(task)
ensure
TIMINGS[task.fully_qualified_name] += Time.now - start
end
@apeckham
apeckham / gist:1205497
Created September 9, 2011 04:26
jasmine fakes for titanium (first pass, pretty rough)
var fake = function(methods) {
methods = methods || [];
var object = {listeners: {}};
for (var i = 0; i < methods.length; i++) {
object[methods[i]] = jasmine.createSpy();
};
object.addEventListener = function(event, callback) {
object.listeners[event] = callback;