Skip to content

Instantly share code, notes, and snippets.

View jdudek's full-sized avatar

Jan Dudek jdudek

View GitHub Profile
@jdudek
jdudek / game_screen_controller_spec.js.coffee
Created November 5, 2011 14:44
Given/when/then in Jasmine
test = (suite) ->
self = {}
steps = []
last = null
run = (suite, steps) ->
return if steps.length == 0
[step, msg, fn] = steps.shift()
if step == describe
describe.call suite, msg, ->
@jdudek
jdudek / testing-rich-client-v2-pub.coffee
Created November 24, 2011 22:27
A few thoughts on testing rich-client applications (meet.js)
# A few thoughts on testing rich-client applications
# Jan Dudek, Arkency
# We've created a game that has some animations, uses Facebook API. Almost no rendering on the server. Client-server communication through JSON REST API.
require 'gtk2'
require 'rubygems'
require 'dbi'
class Person
DB_FILE = 'db.sqlite'
@@db = nil
@@instances = []
require File.dirname(__FILE__) + "/../test_helper"
class PlayingGameTest < Bbq::TestCase
include Bbq::SessionPool
background do
@admin = session_pool.create_user(TestUser, :driver => :selenium)
@admin.roles(:admin)
@admin.prepare_game_data
@jdudek
jdudek / gist:1485824
Created December 16, 2011 12:11
wait_for_server in Bbq
class TestUser
def wait(seconds)
sleep seconds.to_i
end
def wait_for_server(timeout = 10.seconds)
page.wait_until(timeout.to_i) do
page.evaluate_script 'jQuery.active == 0'
end
end
#!/bin/sh
git "$@"
@jdudek
jdudek / gist:1539919
Created December 30, 2011 13:43
Clock in JS tests
class Countdown
constructor: (@clock, @seconds) ->
$.extend(this, new Observable)
@finished = false
start: =>
fn = =>
this.trigger("updated", @seconds)
@seconds--
if @seconds >= 0
@jdudek
jdudek / bbq_java.rb
Created February 8, 2012 00:20 — forked from paneq/bbq_java.rb
bbq factories
class Session
# some kind of delegator is needed here
# delegate everything to @session
def initialize(options)
@session = Capybara::Session.new(options[:driver], Bbq.app)
end
def kill
page.driver.quit if page.driver.browser?
jasmine.Spy.prototype.andReturnDeferred = ->
@deferreds = []
@resolve = =>
unless @deferreds.length > 0
throw "Cannot resolve, #{@identity} was not called"
dfr = @deferreds.shift()
dfr.resolve()
@reject = =>
unless @deferreds.length > 0
throw "Cannot reject, #{@identity} was not called"
@jdudek
jdudek / gist:2136360
Created March 20, 2012 14:45
Jasmine: suite [] instead of nested describe
# suite ["shooter", "acceptance"], -> ...
# is equivalent to:
# describe "shooter", ->
# describe "acceptance", -> ...
window.suite = (names, block) ->
name = names.shift()
if names.length > 0
describe(name, -> suite(names, block))
else