diff --git a/app/models/todo.rb b/app/models/todo.rb
index df7aca4f..82c19cb2 100644
--- a/app/models/todo.rb
+++ b/app/models/todo.rb
@@ -17,7 +17,7 @@ class Todo < ActiveRecord::Base
after_save :save_predecessors
named_scope :active, :conditions => { :state => 'active' }
- named_scope :not_completed, :conditions => ['NOT (state = ? )', 'completed']
+ named_scope :not_completed, :conditions => ['NOT (todos.state = ? )', 'completed']
named_scope :are_due, :conditions => ['NOT (todos.due IS NULL)']
STARRED_TAG_NAME = "starred"
diff --git a/spec/fixtures/todos.yml b/spec/fixtures/todos.yml
index 412feac8..b8af3088 100644
--- a/spec/fixtures/todos.yml
+++ b/spec/fixtures/todos.yml
@@ -55,3 +55,14 @@ buymilk:
due: ~
completed_at: <%= today %>
user: admin_user
+
+callmom:
+ id: 5
+ context_id: 3 # call
+ project_id: ~
+ description: Call mom
+ notes: Remember her birthday
+ state: active
+ due: ~
+ completed_at: ~
+ user: admin_user
diff --git a/spec/models/context_spec.rb b/spec/models/context_spec.rb
index 5ed233d5..320c889b 100644
--- a/spec/models/context_spec.rb
+++ b/spec/models/context_spec.rb
@@ -51,37 +51,37 @@ describe Context do
end
describe 'when finding by namepart' do
- scenario :todos
+ fixtures :todos, :contexts
it 'finds with exact match' do
- Context.find_by_namepart('errand').should == contexts(:errand)
+ Context.find_by_namepart('agenda').should == contexts(:agenda)
end
it 'finds with partial match' do
- Context.find_by_namepart('err').should == contexts(:errand)
+ Context.find_by_namepart('age').should == contexts(:agenda)
end
it 'deletes todos within context when context deleted' do
- contexts(:call).should have(2).todos
- call_todos = contexts(:call).todos
- contexts(:call).destroy
+ contexts(:agenda).should have(3).todos
+ call_todos = contexts(:agenda).todos
+ contexts(:agenda).destroy
Todo.find(:all).should_not include(call_todos)
end
end
describe 'when counting todos' do
- scenario :todos
+ fixtures :todos, :contexts, :users, :preferences
it 'returns correct number of completed todos' do
- contexts(:call).should_not have(:any).done_todos
+ contexts(:call).done_todos.should_not have(:any).items
contexts(:call).todos.first.complete!
- contexts(:call).should have(1).done_todos
+ Context.find(contexts(:call).id).done_todos.should have(1).items
end
it 'returns correct number of not done todos' do
- contexts(:call).should have(2).not_done_todos
- contexts(:call).todos.last.complete!
- contexts(:call).should have(1).not_done_todos
+ contexts(:agenda).todos.not_completed.should have(2).items
+ contexts(:agenda).todos.last.complete!
+ contexts(:agenda).todos.not_completed.should have(1).items
end
end
end
diff --git a/spec/scenarios/contexts_scenario.rb b/spec/scenarios/contexts_scenario.rb
deleted file mode 100644
index 719da5db..00000000
--- a/spec/scenarios/contexts_scenario.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-class ContextsScenario < Scenario::Base
- uses :users
-
- def load
- %w(Call Email Errand Someday).each_with_index do |context, index|
- create_context context, index+1
- end
- end
-
- def create_context(name, position)
- create_model :context, name.downcase.to_sym,
- :name => name,
- :position => position,
- :hide => name == 'Someday' ? true : false,
- :created_at => Time.now,
- :updated_at => Time.now,
- :user_id => user_id(:sean)
- end
-end
diff --git a/spec/scenarios/projects_scenario.rb b/spec/scenarios/projects_scenario.rb
deleted file mode 100644
index 3b5624f1..00000000
--- a/spec/scenarios/projects_scenario.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-class ProjectsScenario < Scenario::Base
- def load
- create_project :build_time_machine, 'Build a working time machine'
- create_project :make_more_money, 'Make more money than Billy Gates'
- create_project :evict_dinosaurs, 'Evict dinosaurs from the garden'
- create_project :attend_railsconf, 'Attend RailsConf'
- end
-
- def create_project(identifier, name)
- attributes = {
- :name => name,
- :state => 'active',
- :created_at => 4.day.ago,
- :updated_at => 1.minute.ago
- }
- create_model :project,
- identifier || attributes[:name].split.first.downcase.to_sym,
- attributes
- end
-end
diff --git a/spec/scenarios/todos_scenario.rb b/spec/scenarios/todos_scenario.rb
deleted file mode 100644
index ddaa7f93..00000000
--- a/spec/scenarios/todos_scenario.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-class TodosScenario < Scenario::Base
- uses :contexts, :projects, :users
-
- def load
- create_todo :bill,
- :description => 'Call Bill Gates to find out how much he makes per day',
- :user => :sean,
- :context => :call,
- :project => :make_more_money
- create_todo :bank,
- :description => 'Call my bank',
- :user => :sean,
- :context => :call,
- :project => :make_more_money
- end
-
- def create_todo(identifier, options={})
- context = options.delete(:context)
- project = options.delete(:project)
- user = options.delete(:user)
- attributes = {
- :state => 'active',
- :created_at => 1.week.ago,
- :context_id => context_id(context),
- :project_id => project_id(project),
- :user_id => user_id(user)
- }.merge(options)
- create_model :todo, identifier, attributes
- end
-end
diff --git a/spec/scenarios/users_scenario.rb b/spec/scenarios/users_scenario.rb
deleted file mode 100644
index 5ed73b83..00000000
--- a/spec/scenarios/users_scenario.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-class UsersScenario < Scenario::Base
- def load
- create_user :login => 'johnny', :first_name => 'Johnny', :last_name => 'Smith'
- create_user :login => 'jane', :first_name => 'Jane', :last_name => 'Pilbeam'
- create_user :login => 'sean', :first_name => 'Sean', :last_name => 'Pallmer'
- end
-
- def create_user(attributes={})
- password = attributes[:login] + Time.now.to_s
- attributes = {
- :password => password,
- :password_confirmation => password,
- :is_admin => attributes[:is_admin] || false,
- }.merge(attributes)
- identifier = attributes[:login].downcase.to_sym
- user = create_model :user, identifier, attributes
- Preference.create(:show_number_completed => 5, :user => user)
- end
-end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 1860a16a..fdf7e12c 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -5,7 +5,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'spec'
require 'spec/rails'
require 'skinny_spec'
-require 'scenarios'
module LuckySneaks
module ModelSpecHelpers
diff --git a/vendor/plugins/scenarios/.gitignore b/vendor/plugins/scenarios/.gitignore
deleted file mode 100644
index e8edc4ed..00000000
--- a/vendor/plugins/scenarios/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-environments
-*.log
-tmp
-vendor
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/LICENSE b/vendor/plugins/scenarios/LICENSE
deleted file mode 100644
index 0c9f55a0..00000000
--- a/vendor/plugins/scenarios/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2007, Adam Williams and John W. Long.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/README b/vendor/plugins/scenarios/README
deleted file mode 100644
index 971472e8..00000000
--- a/vendor/plugins/scenarios/README
+++ /dev/null
@@ -1,262 +0,0 @@
-== Rails Scenarios Plugin
-
-Who hasn't experienced the pain of dozens of YAML files filled with hundreds
-of inter-related data structures? When do you look at People of an
-Organization and not have to look at the organization_id, open the
-organizations.yml file, and search for 'id: X'?
-
-In a nutshell, scenarios are a drop in replacement for YAML fixtures. Instead
-of encouraging you to create a mindless amount of raw data in the form of
-YAML, scenarios encourage you to create code that populates your tables with
-the appropriate records.
-
-How is it different from other solutions? A few things:
-
- * It continues to provide a fundamental, fast insertion method using attributes
- written directly to a table. This is the
- Scenarios::TableMethods#create_record method.
-
- * It allows you to create records using validations if you prefer, or if it's
- important to have all your callbacks be invoked. See
- Scenarios::TableMethods#create_model. Both create_record and create_model
- allow you to name your instances for retrieval by the instance and id reader
- methods (more below).
-
- * Nothing stops you from simply invoking YouModel.create!, etc. We'll still
- keep track of the tables the scenario modifies and clean things up afterward.
-
- * It allows you to create re-usable scenarios as classes. These classes are
- like any other class - they may include modules, subclass, and be composed of
- other scenarios. See Scenarios::Base.uses. This also means that you can load
- any scenario into any Rails environment. That's what the 'rake
- db:scenario:load' task is good for (more below). Very handy for re-using all
- that test support code to create populated demos!
-
-=== Quick Start
-
-Since Scenarios is a Rails plugin at this time, you should get it installed,
-using the appropriate method (script/plugin, svn, piston) into your
-vendor/plugins directory. Once you have this, in your spec_helper.rb or
-test_helper.rb, add the following line after the spec requires:
-
- require 'scenarios'
-
-The Scenarios you write should be placed in the spec/scenarios directory of your
-Rails project if you're using RSpec, or the test/scenarios directory of your
-Rails project if you're using Test::Unit. Scenario file names always end in
-"_scenario.rb" and classes end in "Scenario".
-
-A simple scenario looks like this:
-
- # in spec/scenarios/users_scenario.rb or test/scenarios/users_scenario.rb
- class UsersScenario < Scenario::Base
- def load
- create_record :user, :john, :name => 'John', :password => 'doodaht'
- create_record :user, :cindy, :name => 'Cindy', :password => 'whoot!'
- end
- end
-
-In the example above, I'm using the create_record instance method to
-create two users: John and Cindy. Notice the calls to create_record.
-There are three parameters. The first is the singular name of the table to
-insert the record into, the second is the symbolic name of the record (more on
-that later), and the third is a hash of the attributes of the record.
-
-To use the UsersScenario in a description, you should declare it using
-the scenario method. Here it is within a spec file (RSpec):
-
- # in spec/models/user_spec.rb
- describe User do
- scenario :users
-
- it "should allow me to do something with John" do
- user = users(:john)
- user.password.should == "doodaht"
- end
- end
-
-and here it is within a standard Test::Unit test:
-
- # in test/unit/user_test.rb
- class UserTest < Test::Unit::TestCase
-
- scenario :users
-
- def test_do_something
- user = users(:john)
- assert_equal "doodaht", user.password
- end
- end
-
-Notice that it is easy to load an instance of a model object using its
-symbolic name with a reader method, similar to that of Rails' fixtures. In the
-example above, I loaded John with the reader method users and the
-symbolic name :john. (Remember that in the Users scenario I declared
-that John should be accessible through the symbolic name :john.)
-
-I could also have retrieved an array of user fixtures by passing in
-multiple symbolic names to the reader method:
-
- # in spec/models/user_spec.rb
- describe User do
- scenario :users
-
- it "should allow me to get all admins" do
- admins = users(:john, :ryan)
- User.admins.should eql(admins)
- end
- end
-
-=== Composition
-
-In real life your scenarios will probably grow quite complicated. The
-scenarios plugin allows you to deal with this complexity through composition.
-
-Here's a simple example:
-
- # in spec/scenarios/posts_scenario.rb or test/scenarios/posts_scenario.rb
- class PostsScenario < Scenario::Base
- def load
- create_record :post, :first, :title => "First Post"
- create_record :post, :second, :title => "Second Post"
- end
- end
-
- # in spec/scenarios/comments_scenario.rb or test/scenarios/comments_scenario.rb
- class CommentsScenario < Scenario::Base
- uses :posts
-
- def load
- create_record :comment, :first, :body => "Nice post!", :post_id => post_id(:first)
- create_record :comment, :second, :body => "I like it.", :post_id => post_id(:first)
- create_record :comment, :third, :body => "I thoroughly disagree.", :post_id => post_id(:second)
- end
- end
-
-In the example above, the CommentsScenario declares that it depends on the
-Posts scenario with the uses class method. This means that if you
-load the CommentsScenario, the PostsScenario will be loaded first and the
-CommentsScenario will have access to all the data loaded by the PostsScenario
-in its own load method. Note that inside the load method I'm using
-another form of reader methed which simply gives you the id for a symbolic
-name (in this case: post_id). This is most useful for making
-associations, as done here with comments and posts.
-
-=== Helper Methods
-
-Another way of simplifying your scenarios and specs/tests is through helper
-methods. The Scenarios plugin provides a handy way to declare helper methods
-that are accessible from inside the scenario and also from inside related
-RSpec/Test::Unit examples:
-
- # in spec/scenarios/users_scenario.rb or test/scenarios/users_scenario.rb
- class UsersScenario < Scenario::Base
- def load
- create_user :name => "John"
- end
-
- helpers do
- def create_user(attributes={})
- create_record :user, attributes[:name].downcase.intern, attributes
- end
- def login_as(user)
- @request.session[:user_id] = user.id
- end
- end
- end
-
-Helper methods declared inside the helpers block are mixed into the scenario
-when it is instantiated and mixed into examples that declare that they are using
-the scenario. Also, in the case where one scenario uses another, the
-using scenario will have the helper methods of the used scenario.
-
- # in spec/controllers/projects_controller_spec.rb
- describe "Projects screen" do
- scenario :users
-
- it "should show active projects" do
- login_as(users(:john))
- get :projects
- @response.should have_tag('#active_projects')
- end
- end
-
- # in test/functional/projects_controller_test.rb
- class PeopleControllerTest < Test::Unit::TestCase
- scenario :users
-
- def test_index
- login_as(users(:john))
- get :projects
- assert_tag('#active_projects')
- end
- end
-
-Notice that within my specs/tests I have access to the login_as helper method
-declared inside the helpers block of the UsersScenario. Scenario
-helpers are a great way to share helper methods between specs/tests that use a
-specific scenario.
-
-=== Built-in Scenario
-
-There is a scenario named 'blank' that comes with the plugin. This scenario is
-useful when you want to express, and guarantee, that the database is empty. It
-works by using your db/schema.rb, so if the table isn't created in there, it
-won't be cleaned up.
-
-Scenario.load_paths is an array of the locations to look for scenario
-definitions. The built-in scenarios directory is consulted last, so if you'd
-like to re-define, for instance, the 'blank' scenario, simply create
-'blank_scenario.rb' in your spec/scenarios or test/scenarios directory.
-
-=== Load Rake Task
-
-The Scenarios plugin provides a single Rake task, db:scenario:load,
-which you may use in a fashion similar to Rails fixtures'
-db:fixtures:load.
-
- rake db:scenario:load SCENARIO=comments
-
-When invoked, this task will populate the development database with the named
-scenario.
-
-If you do not specify SCENARIO, the task will expect to find a default scenario
-(a file 'default_scenario.rb' having DefaultScenario defined in it). It is our
-practice to have it such that this scenario uses a number of our other
-scenarios, thereby:
-
-* encouraging us to use test data that looks good in the running development
- application
-
-* allowing us to troubleshoot failing tests in the running development
- application
-
-=== More Information
-
-For more information, be sure to look through the documentation over at RubyForge:
-
-* http://faithfulcode.rubyforge.org/docs/scenarios
-
-You might also enjoy taking a look at the specs for the plugin and the example
-scenarios:
-
-* http://faithfulcode.rubyforge.org/svn/plugins/trunk/scenarios/spec/scenarios_spec.rb
-* http://faithfulcode.rubyforge.org/svn/plugins/trunk/scenarios/spec/scenarios
-
-Browse the complete source code:
-
-* http://faithfulcode.rubyforge.org/svn/plugins/trunk/scenarios
-
-=== Running Tests
-
-You should be able to simply run rake. Notice in testing/environment.rb the
-revisions under which this project will work. If you intend to test against
-HEAD, you will need to delete the directory testing/tmp/trunk/HEAD. At some
-point, it would be nice to have the script track the revision of HEAD that we
-have, and update the directory automatically.
-
-=== License
-
-The Scenarios plugin is released under the MIT-License and is Copyright (c)
-2007, Adam Williams and John W. Long. Special thanks to Chris Redinger for his
-part in helping us get this plugin ready for the public.
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/Rakefile b/vendor/plugins/scenarios/Rakefile
deleted file mode 100644
index bd0deb95..00000000
--- a/vendor/plugins/scenarios/Rakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/testing/plugit_descriptor')
-
-require 'rake/rdoctask'
-Rake::RDocTask.new(:doc) do |r|
- r.title = "Rails Scenarios Plugin"
- r.main = "README"
- r.options << "--line-numbers"
- r.rdoc_files.include("README", "LICENSE", "lib/**/*.rb")
- r.rdoc_dir = "doc"
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/TODO b/vendor/plugins/scenarios/TODO
deleted file mode 100644
index 9be8fb9d..00000000
--- a/vendor/plugins/scenarios/TODO
+++ /dev/null
@@ -1 +0,0 @@
-Make sure before :all's that use scenario methods work. They don't right now.
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/helpers.diff b/vendor/plugins/scenarios/helpers.diff
deleted file mode 100644
index 340068bb..00000000
--- a/vendor/plugins/scenarios/helpers.diff
+++ /dev/null
@@ -1,127 +0,0 @@
-Only in /Users/aiwilliams/Workspaces/faithfulcode/scenarios/: .git
-Only in scenarios/: .svn
-Only in scenarios/: .tm_last_run_ruby
-diff -r scenarios/Rakefile /Users/aiwilliams/Workspaces/faithfulcode/scenarios/Rakefile
-3c3
-< TESTING_ENVIRONMENTS["rspec_3317_rails_8956"].load
----
-> TESTING_ENVIRONMENTS["rspec_3119_rails_8375"].load
-Only in /Users/aiwilliams/Workspaces/faithfulcode/scenarios/: helpers.diff
-Only in scenarios/lib: .svn
-Only in scenarios/lib/scenarios: .svn
-diff -r scenarios/lib/scenarios/base.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/lib/scenarios/base.rb
-11,14c11,12
-< # be included into the scenario and all specs that include the scenario.
-< # You may also provide names of helpers from your scenarios/helpers
-< # directory, or any other module you'd like included in your Scenario.
-< def helpers(helper_names_or_modules = [], &block)
----
-> # be included into the scenario and all specs that include the scenario
-> def helpers(&block)
-17,19d14
-< mod.module_eval do
-< [helper_names_or_modules].flatten.each {|h| include h.is_a?(Module) ? h : h.to_scenario_helper}
-< end
-Only in scenarios/lib/scenarios/builtin: .svn
-Only in scenarios/lib/scenarios/extensions: .svn
-diff -r scenarios/lib/scenarios/extensions/string.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/lib/scenarios/extensions/string.rb
-22,39d21
-< # Convert a string into the associated scenario helper module:
-< #
-< # "basic".to_scenario_helper #=> BasicScenarioHelper
-< # "basic_scenario".to_scenario_helper #=> BasicScenarioHelper
-< #
-< # Raises Scenario::NameError if the the helper cannot be loacated as
-< # 'helpers/_helper' in Scenario.load_paths.
-< def to_scenario_helper
-< class_name = "#{self.strip.camelize.sub(/ScenarioHelper$/, '')}ScenarioHelper"
-< Scenario.load_paths.each do |path|
-< filename = "#{path}/#{class_name.underscore}.rb"
-< if File.file?(filename)
-< require filename
-< break
-< end
-< end
-< class_name.constantize rescue raise Scenario::NameError, "Expected to find #{class_name} in #{Scenario.load_paths.inspect}"
-< end
-diff -r scenarios/lib/scenarios/extensions/symbol.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/lib/scenarios/extensions/symbol.rb
-14,23d13
-< # Convert a symbol into the associated scenario helper module:
-< #
-< # :basic.to_scenario_helper #=> BasicScenarioHelper
-< # :basic_scenario.to_scenario_helper #=> BasicScenarioHelper
-< #
-< # Raises Scenario::NameError if the the helper cannot be loacated as
-< # 'helpers/_helper' in Scenario.load_paths.
-< def to_scenario_helper
-< to_s.to_scenario_helper
-< end
-Only in scenarios/spec: .svn
-Only in scenarios/spec: environments.rb
-Only in scenarios/spec/scenarios: .svn
-Only in scenarios/spec/scenarios: helpers
-diff -r scenarios/spec/scenarios_spec.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/spec/scenarios_spec.rb
-23,27d22
-< it 'should allow us to have helpers in scenarios/helpers directory which we can get through the helpers class method' do
-< klass = :empty.to_scenario
-< klass.helpers :myown
-< end
-<
-diff -r scenarios/spec/spec_helper.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/spec/spec_helper.rb
-1,20c1,6
-< $LOAD_PATH << File.dirname(__FILE__) + '/../testing'
-<
-< require File.dirname(__FILE__) + "/environments"
-<
-< require 'active_support'
-< require 'active_record'
-< require 'action_controller'
-< require 'action_view'
-<
-< module Spec
-< module Rails
-< module Example
-< end
-< end
-< end
-<
-< require 'spec/rails'
-< require 'scenarios'
-<
-< require 'models'
-\ No newline at end of file
----
-> require File.expand_path(File.dirname(__FILE__) + "/../testing/environment")
-> TESTING_ENVIRONMENTS[TESTING_ENVIRONMENT].load(DATABASE_ADAPTER)
-> require "models"
-> require "spec"
-> require "spec/rails"
-> require "scenarios"
-Only in scenarios/tasks: .svn
-Only in scenarios/test: .svn
-Only in scenarios/testing: .svn
-diff -r scenarios/testing/environment.rb /Users/aiwilliams/Workspaces/faithfulcode/scenarios/testing/environment.rb
-15c15
-< TESTING_ENVIRONMENT = "rspec_3317_rails_8956" unless defined?(TESTING_ENVIRONMENT)
----
-> TESTING_ENVIRONMENT = "rspec_3119_rails_8375" unless defined?(TESTING_ENVIRONMENT)
-31c31
-< # system "cd #{lib.support_directory} && patch -p0 < #{File.join(TESTING_ROOT, "rspec_on_rails_3119.patch")}"
----
-> system "cd #{lib.support_directory} && patch -p0 < #{File.join(TESTING_ROOT, "rspec_on_rails_3119.patch")}"
-36,38c36,38
-< TESTING_ENVIRONMENTS << TestingLibrary::Environment.new("rspec_3317_rails_8956", SUPPORT_TEMP, DB_CONFIG_FILE, DB_SCHEMA_FILE) do |env|
-< env.package "rails", "http://svn.rubyonrails.org/rails", "trunk", "8956", &rails_package
-< env.package "rspec", "http://rspec.rubyforge.org/svn", "trunk", "3317", &rspec_package
----
-> TESTING_ENVIRONMENTS << TestingLibrary::Environment.new("rspec_3119_rails_8375", SUPPORT_TEMP, DB_CONFIG_FILE, DB_SCHEMA_FILE) do |env|
-> env.package "rails", "http://svn.rubyonrails.org/rails", "trunk", "8375", &rails_package
-> env.package "rspec", "http://rspec.rubyforge.org/svn", "trunk", "3119", &rspec_package
-40c40
-< TESTING_ENVIRONMENTS << TestingLibrary::Environment.new("rspec_3317_rails_1_2_6", SUPPORT_TEMP, DB_CONFIG_FILE, DB_SCHEMA_FILE) do |env|
----
-> TESTING_ENVIRONMENTS << TestingLibrary::Environment.new("rspec_3119_rails_1_2_6", SUPPORT_TEMP, DB_CONFIG_FILE, DB_SCHEMA_FILE) do |env|
-42c42
-< env.package "rspec", "http://rspec.rubyforge.org/svn", "trunk", "3317", &rspec_package
----
-> env.package "rspec", "http://rspec.rubyforge.org/svn", "trunk", "3119", &rspec_package
diff --git a/vendor/plugins/scenarios/lib/scenarios.rb b/vendor/plugins/scenarios/lib/scenarios.rb
deleted file mode 100644
index 5950e8ec..00000000
--- a/vendor/plugins/scenarios/lib/scenarios.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-module Scenarios
- # Thrown by Scenario.load when it cannot find a specific senario.
- class NameError < ::NameError; end
-
- class << self
- # The locations from which scenarios will be loaded.
- mattr_accessor :load_paths
- self.load_paths = ["#{RAILS_ROOT}/spec/scenarios", "#{RAILS_ROOT}/test/scenarios", "#{File.dirname(__FILE__)}/scenarios/builtin"]
-
- # Load a scenario by name. scenario_name can be a string, symbol,
- # or the scenario class.
- def load(scenario_name)
- klass = scenario_name.to_scenario
- klass.load
- klass
- end
- end
-end
-
-# The Scenario namespace makes for Scenario::Base
-Scenario = Scenarios
-
-# For Rails 1.2 compatibility
-unless Class.instance_methods.include?(:superclass_delegating_reader)
- require File.dirname(__FILE__) + "/scenarios/extensions/delegating_attributes"
-end
-
-require 'active_record/fixtures'
-require 'scenarios/configuration'
-require 'scenarios/table_blasting'
-require 'scenarios/table_methods'
-require 'scenarios/loading'
-require 'scenarios/base'
-require 'scenarios/extensions'
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/base.rb b/vendor/plugins/scenarios/lib/scenarios/base.rb
deleted file mode 100644
index 3885af3c..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/base.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-module Scenarios
- class Base
- class << self
- # Class method to load the scenario. Used internally by the Scenarios
- # plugin.
- def load
- new.load_scenarios(used_scenarios + [self])
- end
-
- # Class method for your own scenario to define helper methods that will
- # be included into the scenario and all specs that include the scenario
- def helpers(&block)
- mod = (const_get(:Helpers) rescue const_set(:Helpers, Module.new))
- mod.module_eval(&block) if block_given?
- mod
- end
-
- # Class method for your own scenario to define the scenarios that it
- # depends on. If your scenario depends on other scenarios those
- # scenarios will be loaded before the load method on your scenario is
- # executed.
- def uses(*scenarios)
- names = scenarios.map(&:to_scenario).reject { |n| used_scenarios.include?(n) }
- used_scenarios.concat(names)
- end
-
- # Class method that returns the scenarios used by your scenario.
- def used_scenarios # :nodoc:
- @used_scenarios ||= []
- @used_scenarios = (@used_scenarios.collect(&:used_scenarios) + @used_scenarios).flatten.uniq
- end
-
- # Returns the scenario class.
- def to_scenario
- self
- end
- end
-
- include TableMethods
- include Loading
-
- attr_reader :table_config
-
- # Initialize a scenario with a Configuration. Used internally by the
- # Scenarios plugin.
- def initialize(config = Configuration.new)
- @table_config = config
- table_config.update_scenario_helpers self.class
- self.extend table_config.table_readers
- self.extend table_config.scenario_helpers
- end
-
- # This method should be implemented in your scenarios. You may also have
- # scenarios that simply use other scenarios, so it is not required that
- # this be overridden.
- def load
- end
-
- # Unload a scenario, sort of. This really only deletes the records, all of
- # them, of every table this scenario modified. The goal is to maintain a
- # clean database for successive runs. Used internally by the Scenarios
- # plugin.
- def unload
- return if unloaded?
- record_metas.each_value { |meta| blast_table(meta.table_name) }
- @unloaded = true
- end
-
- def unloaded?
- @unloaded == true
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/builtin/blank_scenario.rb b/vendor/plugins/scenarios/lib/scenarios/builtin/blank_scenario.rb
deleted file mode 100644
index 1ab74d3c..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/builtin/blank_scenario.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class BlankScenario < Scenarios::Base
- def load
- table_names.each do |table|
- blast_table(table)
- end
- end
-
- def table_names
- self.class.table_names
- end
-
- def self.table_names
- @table_names ||= begin
- schema = (open(RAILS_ROOT + '/db/schema.rb') { |f| f.read } rescue '')
- schema.grep(/create_table\s+(['"])(.+?)\1/m) { $2 }
- end
- end
-end
diff --git a/vendor/plugins/scenarios/lib/scenarios/configuration.rb b/vendor/plugins/scenarios/lib/scenarios/configuration.rb
deleted file mode 100644
index 6becffcf..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/configuration.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-module Scenarios
- class Configuration # :nodoc:
- attr_reader :blasted_tables, :loaded_scenarios, :record_metas, :table_readers, :scenario_helpers, :symbolic_names_to_id
-
- def initialize
- @blasted_tables = Set.new
- @record_metas = Hash.new
- @table_readers = Module.new
- @scenario_helpers = Module.new
- @symbolic_names_to_id = Hash.new {|h,k| h[k] = Hash.new}
- @loaded_scenarios = Array.new
- end
-
- # Given a created record (currently ScenarioModel or ScenarioRecord),
- # update the table readers module appropriately such that this record and
- # it's id are findable via methods like 'people(symbolic_name)' and
- # 'person_id(symbolic_name)'.
- def update_table_readers(record)
- ids, record_meta = symbolic_names_to_id, record.record_meta # scoping assignments
-
- ids[record_meta.table_name][record.symbolic_name] = record.id
- table_readers.send :define_method, record_meta.id_reader do |*symbolic_names|
- record_ids = symbolic_names.flatten.collect do |symbolic_name|
- if symbolic_name.kind_of?(ActiveRecord::Base)
- symbolic_name.id
- else
- record_id = ids[record_meta.table_name][symbolic_name.to_sym]
- raise ActiveRecord::RecordNotFound, "No object is associated with #{record_meta.table_name}(:#{symbolic_name})" unless record_id
- record_id
- end
- end
- record_ids.size > 1 ? record_ids : record_ids.first
- end
-
- table_readers.send :define_method, record_meta.record_reader do |*symbolic_names|
- results = symbolic_names.flatten.collect do |symbolic_name|
- symbolic_name.kind_of?(ActiveRecord::Base) ?
- symbolic_name :
- record_meta.record_class.find(send(record_meta.id_reader, symbolic_name))
- end
- results.size > 1 ? results : results.first
- end
- end
-
- def update_scenario_helpers(scenario_class)
- scenario_helpers.module_eval do
- include scenario_class.helpers
- end
- end
-
- def scenarios_loaded?
- !loaded_scenarios.blank?
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions.rb b/vendor/plugins/scenarios/lib/scenarios/extensions.rb
deleted file mode 100644
index f442786e..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.dirname(__FILE__) + "/extensions/object"
-require File.dirname(__FILE__) + "/extensions/string"
-require File.dirname(__FILE__) + "/extensions/symbol"
-require File.dirname(__FILE__) + "/extensions/active_record"
-require File.dirname(__FILE__) + "/extensions/test_case" rescue nil
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/active_record.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/active_record.rb
deleted file mode 100644
index 509abd27..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/active_record.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module ActiveRecord
- class Base
- cattr_accessor :table_config
- include Scenarios::TableBlasting
-
- # In order to guarantee that tables are tracked when _create_model_ is
- # used, and those models cause other models to be created...
- def create_with_table_blasting
- prepare_table(self.class.table_name)
- create_without_table_blasting
- end
- alias_method_chain :create, :table_blasting
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/delegating_attributes.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/delegating_attributes.rb
deleted file mode 100644
index f5f0ef87..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/delegating_attributes.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# These class attributes behave something like the class
-# inheritable accessors. But instead of copying the hash over at
-# the time the subclass is first defined, the accessors simply
-# delegate to their superclass unless they have been given a
-# specific value. This stops the strange situation where values
-# set after class definition don't get applied to subclasses.
-class Class
- def superclass_delegating_reader(*names)
- class_name_to_stop_searching_on = self.superclass.name.blank? ? "Object" : self.superclass.name
- names.each do |name|
- class_eval <<-EOS
- def self.#{name}
- if defined?(@#{name})
- @#{name}
- elsif superclass < #{class_name_to_stop_searching_on} && superclass.respond_to?(:#{name})
- superclass.#{name}
- end
- end
- def #{name}
- self.class.#{name}
- end
- EOS
- end
- end
-
- def superclass_delegating_writer(*names)
- names.each do |name|
- class_eval <<-EOS
- def self.#{name}=(value)
- @#{name} = value
- end
- EOS
- end
- end
-
- def superclass_delegating_accessor(*names)
- superclass_delegating_reader(*names)
- superclass_delegating_writer(*names)
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/object.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/object.rb
deleted file mode 100644
index efd28197..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/object.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class Object
- def metaclass
- (class << self; self; end)
- end unless method_defined?(:metaclass)
-end
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/string.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/string.rb
deleted file mode 100644
index 830aa791..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/string.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class String
-
- # Convert a string into the associated scenario class:
- #
- # "basic".to_scenario #=> BasicScenario
- # "basic_scenario".to_scenario #=> BasicScenario
- #
- # Raises Scenario::NameError if the the scenario cannot be loacated in
- # Scenario.load_paths.
- def to_scenario
- class_name = "#{self.strip.camelize.sub(/Scenario$/, '')}Scenario"
- Scenario.load_paths.each do |path|
- filename = "#{path}/#{class_name.underscore}.rb"
- if File.file?(filename)
- require filename
- break
- end
- end
- class_name.constantize rescue raise Scenario::NameError, "Expected to find #{class_name} in #{Scenario.load_paths.inspect}"
- end
-
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/symbol.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/symbol.rb
deleted file mode 100644
index 35e5f090..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/symbol.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class Symbol
-
- # Convert a symbol into the associated scenario class:
- #
- # :basic.to_scenario #=> BasicScenario
- # :basic_scenario.to_scenario #=> BasicScenario
- #
- # Raises Scenario::NameError if the the scenario cannot be located in
- # Scenario.load_paths.
- def to_scenario
- to_s.to_scenario
- end
-
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/extensions/test_case.rb b/vendor/plugins/scenarios/lib/scenarios/extensions/test_case.rb
deleted file mode 100644
index a9f0ef6a..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/extensions/test_case.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-module Test #:nodoc:
- module Unit #:nodoc:
- class TestCase #:nodoc:
- superclass_delegating_accessor :scenario_classes
- superclass_delegating_accessor :table_config
-
- # Changing either of these is not supported at this time.
- self.use_transactional_fixtures = true
- self.use_instantiated_fixtures = false
-
- include Scenarios::TableMethods
- include Scenarios::Loading
-
- class << self
- # This class method is mixed into RSpec and allows you to declare that
- # you are using a given scenario or set of scenarios within a spec:
- #
- # scenario :basic # loads BasicScenario and any dependencies
- # scenario :posts, :comments # loads PostsScenario and CommentsScenario
- #
- # It accepts an array of scenarios (strings, symbols, or classes) and
- # will load them roughly in the order that they are specified.
- def scenario(*names)
- self.scenario_classes = []
- names.each do |name|
- scenario_class = name.to_scenario
- scenario_classes.concat(scenario_class.used_scenarios + [scenario_class])
- end
- scenario_classes.uniq!
- end
-
- # Overridden to provide before all and after all code which sets up and
- # tears down scenarios
- def suite_with_scenarios
- suite = suite_without_scenarios
- class << suite
- attr_accessor :test_class
- def run_with_scenarios(*args, &block)
- debugger
- run_without_scenarios(*args, &block)
- test_class.table_config.loaded_scenarios.each { |s| s.unload } if test_class.table_config
- end
- alias_method_chain :run, :scenarios
- end
- suite.test_class = self
- suite
- end
- alias_method_chain :suite, :scenarios
- end
-
- # Hook into fixtures loading lifecycle to instead load scenarios. This
- # is expected to be called in a fashion respective of
- # use_transactional_fixtures. I feel like a leech.
- def load_fixtures
- if !scenarios_loaded? || !use_transactional_fixtures?
- self.class.table_config = Scenarios::Configuration.new if !use_transactional_fixtures? || table_config.nil?
- load_scenarios(scenario_classes)
- end
- self.extend scenario_helpers
- self.extend table_readers
- end
-
- # Here we are counting on existing logic to allow teardown method
- # overriding as done in fixtures.rb. Only if transaction fixtures are
- # not being used do we unload scenarios after a test. Otherwise, we wait
- # until the end of the run of all tests on this test_case (collection of
- # tests, right!). See the TestSuite extension done in _suite_ for
- # behaviour when using transaction fixtures.
- def teardown_with_scenarios
- teardown_without_scenarios
- loaded_scenarios.each { |s| s.unload } unless use_transactional_fixtures?
- end
- alias_method_chain :teardown, :scenarios
-
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/loading.rb b/vendor/plugins/scenarios/lib/scenarios/loading.rb
deleted file mode 100644
index b369196e..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/loading.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module Scenarios
- # Provides scenario loading and convenience methods around the Configuration
- # that must be made available through a method _table_config_.
- module Loading # :nodoc:
- def load_scenarios(scenario_classes)
- install_active_record_tracking_hook
- scenario_classes.each do |scenario_class|
- scenario = scenario_class.new(table_config)
- scenario.load
- table_config.loaded_scenarios << scenario
- end if scenario_classes
- end
-
- def loaded_scenarios
- table_config.loaded_scenarios
- end
-
- def scenarios_loaded?
- table_config && table_config.scenarios_loaded?
- end
-
- # The sum of all the loaded scenario's helper methods. These can be mixed
- # into anything you like to gain access to them.
- def scenario_helpers
- table_config.scenario_helpers
- end
-
- # The sum of all the available table reading methods. These will only
- # include readers for which data has been placed into the table. These can
- # be mixed into anything you like to gain access to them.
- def table_readers
- table_config.table_readers
- end
-
- # # This understand nesting descriptions one deep
- # def table_config
- # on_my_class = self.class.instance_variable_get("@table_config")
- # return on_my_class if on_my_class
- #
- # if self.class.superclass
- # on_super_class = self.class.superclass.instance_variable_get("@table_config")
- # return on_super_class if on_super_class
- # end
- # end
-
- private
- def install_active_record_tracking_hook
- ActiveRecord::Base.table_config = table_config
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/table_blasting.rb b/vendor/plugins/scenarios/lib/scenarios/table_blasting.rb
deleted file mode 100644
index 9b2efc3d..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/table_blasting.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-module Scenarios
- module TableBlasting
- def self.included(base)
- base.module_eval do
- delegate :blasted_tables, :to => :table_config
- end
- end
-
- def blast_table(name) # :nodoc:
- ActiveRecord::Base.silence do
- ActiveRecord::Base.connection.delete "DELETE FROM #{name}", "Scenario Delete"
- end
- blasted_tables << name
- end
-
- def prepare_table(name)
- blast_table(name) unless blasted_tables.include?(name)
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/lib/scenarios/table_methods.rb b/vendor/plugins/scenarios/lib/scenarios/table_methods.rb
deleted file mode 100644
index a9f2be34..00000000
--- a/vendor/plugins/scenarios/lib/scenarios/table_methods.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-module Scenarios
- # This helper module contains the #create_record method. It is made
- # available to all Scenario instances, test and example classes, and test
- # and example instances.
- module TableMethods
- include TableBlasting
-
- delegate :record_metas, :to => :table_config
-
- # Insert a record into the database, add the appropriate helper methods
- # into the scenario and spec, and return the ID of the inserted record:
- #
- # create_record :event, :name => "Ruby Hoedown"
- # create_record Event, :hoedown, :name => "Ruby Hoedown"
- #
- # The first form will create a new record in the given class identifier
- # and no symbolic name (essentially).
- #
- # The second form is exactly like the first, except for that it provides a
- # symbolic name as the second parameter. The symbolic name will allow you
- # to access the record through a couple of helper methods:
- #
- # events(:hoedown) # The hoedown event
- # event_id(:hoedown) # The ID of the hoedown event
- #
- # These helper methods are only accessible for a particular table after
- # you have inserted a record into that table using create_record.
- def create_record(class_identifier, *args)
- insert(ScenarioRecord, class_identifier, *args) do |record|
- meta = record.record_meta
- fixture = record.to_fixture
- begin
- meta.connection.insert_fixture(fixture, record.record_meta.table_name)
- rescue # Rails 1.2 compatible!
- meta.connection.execute "INSERT INTO #{meta.table_name} (#{fixture.key_list}) VALUES (#{fixture.value_list})"
- end
- record.id
- end
- end
-
- # Instantiate and save! a model, add the appropriate helper methods into
- # the scenario and spec, and return the new model instance:
- #
- # create_model :event, :name => "Ruby Hoedown"
- # create_model Event, :hoedown, :name => "Ruby Hoedown"
- #
- # The first form will create a new model with no symbolic name
- # (essentially).
- #
- # The second form is exactly like the first, except for that it provides a
- # symbolic name as the second parameter. The symbolic name will allow you
- # to access the record through a couple of helper methods:
- #
- # events(:hoedown) # The hoedown event
- # event_id(:hoedown) # The ID of the hoedown event
- #
- # These helper methods are only accessible for a particular table after
- # you have inserted a record into that table using create_model.
- def create_model(class_identifier, *args)
- insert(ScenarioModel, class_identifier, *args) do |record|
- model = record.to_model
- model.save!
- model
- end
- end
-
- private
- def insert(record_or_model, class_identifier, *args, &insertion)
- symbolic_name, attributes = extract_creation_arguments(args)
- record_meta = (record_metas[class_identifier] ||= RecordMeta.new(class_identifier))
- record = record_or_model.new(record_meta, attributes, symbolic_name)
- return_value = nil
- ActiveRecord::Base.silence do
- prepare_table(record_meta.table_name)
- return_value = insertion.call record
- table_config.update_table_readers(record)
- self.extend table_config.table_readers
- end
- return_value
- end
-
- def extract_creation_arguments(arguments)
- if arguments.size == 2 && arguments.last.kind_of?(Hash)
- arguments
- elsif arguments.size == 1 && arguments.last.kind_of?(Hash)
- [nil, arguments[0]]
- else
- [nil, Hash.new]
- end
- end
-
- class RecordMeta # :nodoc:
- attr_reader :class_name, :record_class, :table_name
-
- def initialize(class_identifier)
- @class_identifier = class_identifier
- @class_name = resolve_class_name(class_identifier)
- @record_class = class_name.constantize
- @table_name = record_class.table_name
- end
-
- def timestamp_columns
- @timestamp_columns ||= begin
- timestamps = %w(created_at created_on updated_at updated_on)
- columns.select do |column|
- timestamps.include?(column.name)
- end
- end
- end
-
- def columns
- @columns ||= connection.columns(table_name)
- end
-
- def connection
- record_class.connection
- end
-
- def id_reader
- @id_reader ||= begin
- reader = ActiveRecord::Base.pluralize_table_names ? table_name.singularize : table_name
- "#{reader}_id".to_sym
- end
- end
-
- def record_reader
- table_name.to_sym
- end
-
- def resolve_class_name(class_identifier)
- case class_identifier
- when Symbol
- class_identifier.to_s.singularize.camelize
- when Class
- class_identifier.name
- when String
- class_identifier
- end
- end
-
- def to_s
- "#"
- end
- end
-
- class ScenarioModel # :nodoc:
- attr_reader :attributes, :model, :record_meta, :symbolic_name
- delegate :id, :to => :model
-
- def initialize(record_meta, attributes, symbolic_name = nil)
- @record_meta = record_meta
- @attributes = attributes.stringify_keys
- @symbolic_name = symbolic_name || object_id
- end
-
- def to_hash
- to_model.attributes
- end
-
- def to_model
- @model ||= record_meta.record_class.new(attributes)
- end
- end
-
- class ScenarioRecord # :nodoc:
- attr_reader :record_meta, :symbolic_name
-
- def initialize(record_meta, attributes, symbolic_name = nil)
- @record_meta = record_meta
- @attributes = attributes.stringify_keys
- @symbolic_name = symbolic_name || object_id
-
- install_default_attributes!
- end
-
- def id
- @attributes['id']
- end
-
- def to_hash
- @attributes
- end
-
- def to_fixture
- Fixture.new(to_hash, record_meta.class_name)
- end
-
- def install_default_attributes!
- @attributes['id'] ||= symbolic_name.to_s.hash.abs
- install_timestamps!
- end
-
- def install_timestamps!
- record_meta.timestamp_columns.each do |column|
- @attributes[column.name] = now(column) unless @attributes.key?(column.name)
- end
- end
-
- def now(column)
- now = ActiveRecord::Base.default_timezone == :utc ? column.klass.now.utc : column.klass.now
- now.to_s(:db)
- end
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/scenarios/complex_composite_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/complex_composite_scenario.rb
deleted file mode 100644
index 1d3c3318..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/complex_composite_scenario.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class ComplexCompositeScenario < Scenario::Base
- uses :composite, :places
-
- helpers do
- def method_from_complex_composite_scenario
- :method_from_complex_composite_scenario
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/scenarios/composite_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/composite_scenario.rb
deleted file mode 100644
index 09903b28..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/composite_scenario.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class CompositeScenario < Scenario::Base
- uses :people, :things
-
- helpers do
- def method_from_composite_scenario
- :method_from_composite_scenario
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/scenarios/empty_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/empty_scenario.rb
deleted file mode 100644
index 0ea2ba64..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/empty_scenario.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class EmptyScenario < Scenario::Base
- def load
- end
-end
diff --git a/vendor/plugins/scenarios/spec/scenarios/people_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/people_scenario.rb
deleted file mode 100644
index 792e0f4a..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/people_scenario.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class PeopleScenario < Scenario::Base
-
- def load
- create_person "John Long"
- create_person "Adam Williams"
- end
-
- helpers do
- def create_person(attributes = {})
- if attributes.kind_of?(String)
- first, last = attributes.split(/\s+/)
- attributes = { :first_name => first, :last_name => last }
- end
- attributes = person_params(attributes)
- create_record(:person, attributes[:first_name].strip.gsub(' ', '_').underscore.to_sym, attributes)
- end
-
- def person_params(attributes = {})
- attributes = {
- :first_name => "John",
- :last_name => "Q."
- }.update(attributes)
- end
- end
-
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/scenarios/places_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/places_scenario.rb
deleted file mode 100644
index 50d7ddf9..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/places_scenario.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class PlacesScenario < Scenario::Base
-
- def load
- create_place "Taj Mahal", "India"
- create_place "Whitehouse", "Washington DC"
- end
-
- helpers do
- def create_place(name, location)
- attributes = place_params(:name => name, :location => location)
- create_record(:place, name.strip.gsub(' ', '_').underscore.to_sym, attributes)
- end
-
- def place_params(attributes = {})
- attributes = {
- :name => "Noplace",
- :location => "Nowhere"
- }.update(attributes)
- end
- end
-
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/scenarios/things_scenario.rb b/vendor/plugins/scenarios/spec/scenarios/things_scenario.rb
deleted file mode 100644
index d37abd39..00000000
--- a/vendor/plugins/scenarios/spec/scenarios/things_scenario.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class ThingsScenario < Scenario::Base
-
- def load
- create_thing "one"
- create_thing "two"
- end
-
- helpers do
- def create_thing(attributes = {})
- attributes = { :name => attributes } if attributes.kind_of?(String)
- attributes = thing_params(attributes)
- create_record(:thing, attributes[:name].strip.gsub(' ', '_').underscore.to_sym, attributes)
- end
-
- def thing_params(attributes = {})
- attributes = {
- :name => "Unnamed Thing",
- :description => "I'm not sure what this is."
- }.update(attributes)
- end
- end
-end
diff --git a/vendor/plugins/scenarios/spec/scenarios_spec.rb b/vendor/plugins/scenarios/spec/scenarios_spec.rb
deleted file mode 100644
index c74fd5e0..00000000
--- a/vendor/plugins/scenarios/spec/scenarios_spec.rb
+++ /dev/null
@@ -1,185 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
-
-class ExplodesOnSecondInstantiationScenario < Scenario::Base
- cattr_accessor :instance
- def initialize(*args)
- raise "Should only be created once" if self.class.instance
- self.class.instance = super(*args)
- end
-end
-
-describe "Scenario loading" do
- scenario :explodes_on_second_instantiation
-
- it "should work" do
- end
-
- it 'should work again' do
- end
-end
-
-describe "Scenario loading" do
- it "should load from configured directories" do
- Scenario.load(:empty)
- EmptyScenario
- end
-
- it "should raise Scenario::NameError when the scenario does not exist" do
- lambda { Scenario.load(:whatcha_talkin_bout) }.should raise_error(Scenario::NameError)
- end
-
- it "should allow us to add helper methods through the helpers class method" do
- klass = :empty.to_scenario
- klass.helpers do
- def hello
- "Hello World"
- end
- end
- klass.new.methods.should include('hello')
- end
-
- it "should provide a built-in scenario named :blank which clears all tables found in schema.rb" do
- Scenario.load(:blank)
- BlankScenario
- end
-end
-
-describe Scenarios::TableMethods do
- scenario :things
-
- it "should understand namespaced models" do
- create_record "ModelModule::Model", :raking, :name => "Raking", :description => "Moving leaves around"
- models(:raking).should_not be_nil
- end
-
- it "should include record creation methods" do
- create_record(:thing, :three, :name => "Three")
- things(:three).name.should == "Three"
- end
-
- it "should include other example helper methods" do
- create_thing("The Thing")
- things(:the_thing).name.should == "The Thing"
- end
-
- describe "for retrieving objects" do
- it "should have a pluralized name" do
- should respond_to("things")
- should_not respond_to("thing")
- end
-
- it "should answer a single object given a single name" do
- things(:one).should be_kind_of(Thing)
- things("one").should be_kind_of(Thing)
- things(:two).name.should == "two"
- end
-
- it "should answer an array of objects given multiple names" do
- things(:one, :two).should be_kind_of(Array)
- things(:one, :two).should eql([things(:one), things(:two)])
- end
-
- it "should just return the argument if an AR instance is given" do
- thing = things(:one)
- things(thing).should eql(thing)
- end
- end
-
- describe "for retrieving ids" do
- it "should have a singular name" do
- should respond_to("thing_id")
- should_not respond_to("thing_ids")
- should_not respond_to("things_id")
- end
-
- it "should answer a single id given a single name" do
- thing_id(:one).should be_kind_of(Fixnum)
- thing_id("one").should be_kind_of(Fixnum)
- end
-
- it "should answer an array of ids given multiple names" do
- thing_id(:one, :two).should be_kind_of(Array)
- thing_id(:one, :two).should eql([thing_id(:one), thing_id(:two)])
- thing_id("one", "two").should eql([thing_id(:one), thing_id(:two)])
- end
-
- it "should answer the id of the argument if an AR instance id given" do
- thing = things(:one)
- thing_id(thing).should == thing.id
- end
- end
-end
-
-describe "it uses people and things scenarios", :shared => true do
- it "should have reader helper methods for each used scenario" do
- should respond_to(:things)
- should respond_to(:people)
- end
-
- it "should allow us to use helper methods from each scenario inside an example" do
- should respond_to(:create_thing)
- should respond_to(:create_person)
- end
-end
-
-describe "A composite scenario" do
- scenario :composite
-
- it_should_behave_like "it uses people and things scenarios"
-
- it "should allow us to use helper methods scenario" do
- should respond_to(:method_from_composite_scenario)
- end
-end
-
-describe "Multiple scenarios" do
- scenario :things, :people
-
- it_should_behave_like "it uses people and things scenarios"
-end
-
-describe "A complex composite scenario" do
- scenario :complex_composite
-
- it_should_behave_like "it uses people and things scenarios"
-
- it "should have correct reader helper methods" do
- should respond_to(:places)
- end
-
- it "should allow us to use correct helper methods" do
- should respond_to(:create_place)
- end
-end
-
-describe "Overlapping scenarios" do
- scenario :composite, :things, :people
-
- it "should not cause scenarios to be loaded twice" do
- Person.find_all_by_first_name("John").size.should == 1
- end
-end
-
-describe "create_record table method" do
- scenario :empty
-
- it "should automatically set timestamps" do
- create_record :note, :first, :content => "first note"
- note = notes(:first)
- note.created_at.should be_instance_of(Time)
- end
-end
-
-describe "create_model table method" do
- scenario :empty
-
- it "should support symbolic names" do
- thing = create_model Thing, :mything, :name => "My Thing", :description => "For testing"
- things(:mything).should == thing
- end
-
- it "should blast any table touched as a side effect of creating a model (callbacks, observers, etc.)" do
- create_model SideEffectyThing
- blasted_tables.should include(Thing.table_name)
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/spec.opts b/vendor/plugins/scenarios/spec/spec.opts
deleted file mode 100644
index 2144705e..00000000
--- a/vendor/plugins/scenarios/spec/spec.opts
+++ /dev/null
@@ -1,7 +0,0 @@
---colour
---format
-progress
---loadby
-mtime
---reverse
---backtrace
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/spec/spec_helper.rb b/vendor/plugins/scenarios/spec/spec_helper.rb
deleted file mode 100644
index b641894f..00000000
--- a/vendor/plugins/scenarios/spec/spec_helper.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/../testing/plugit_descriptor')
-
-TESTING_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../testing")
-TESTING_TMP = "#{TESTING_ROOT}/tmp"
-
-require 'fileutils'
-FileUtils.mkdir_p(TESTING_TMP)
-FileUtils.touch("#{TESTING_TMP}/test.log")
-
-require 'logger'
-RAILS_DEFAULT_LOGGER = Logger.new("#{TESTING_TMP}/test.log")
-RAILS_DEFAULT_LOGGER.level = Logger::DEBUG
-
-ActiveRecord::Base.silence do
- ActiveRecord::Base.configurations = {'sqlite3' => {
- 'adapter' => 'sqlite3',
- 'database' => "#{TESTING_TMP}/sqlite3.db"
- }}
- ActiveRecord::Base.establish_connection 'sqlite3'
- load "#{TESTING_ROOT}/schema.rb"
-end
-
-require "models"
-require "scenarios"
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/tasks/scenario.rake b/vendor/plugins/scenarios/tasks/scenario.rake
deleted file mode 100644
index 37b56ebb..00000000
--- a/vendor/plugins/scenarios/tasks/scenario.rake
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace :db do
- namespace :scenario do
- desc "Load a scenario into the current environment's database using SCENARIO=scenario_name"
- task :load => 'db:reset' do
- scenario_name = ENV['SCENARIO'] || 'default'
- begin
- klass = Scenarios.load(scenario_name)
- puts "Loaded #{klass.name.underscore.gsub('_', ' ')}."
- rescue Scenarios::NameError => e
- if scenario_name == 'default'
- puts "Error! Set the SCENARIO environment variable or define a DefaultScenario class."
- else
- puts "Error! Invalid scenario name [#{scenario_name}]."
- end
- exit(1)
- end
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/testing/application.rb b/vendor/plugins/scenarios/testing/application.rb
deleted file mode 100644
index 87f91f64..00000000
--- a/vendor/plugins/scenarios/testing/application.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ApplicationController < ActionController::Base
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/testing/models.rb b/vendor/plugins/scenarios/testing/models.rb
deleted file mode 100644
index 34801db4..00000000
--- a/vendor/plugins/scenarios/testing/models.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class Person < ActiveRecord::Base; end
-class Place < ActiveRecord::Base; end
-class Thing < ActiveRecord::Base; end
-class Note < ActiveRecord::Base; end
-
-class SideEffectyThing < ActiveRecord::Base
- after_create do
- Thing.create!
- end
-end
-
-module ModelModule
- class Model < ActiveRecord::Base; end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/testing/plugit_descriptor.rb b/vendor/plugins/scenarios/testing/plugit_descriptor.rb
deleted file mode 100644
index 17b19e67..00000000
--- a/vendor/plugins/scenarios/testing/plugit_descriptor.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'rubygems'
-gem 'plugit'
-require 'plugit'
-
-$LOAD_PATH << File.expand_path("#{File.dirname(__FILE__)}/../lib")
-$LOAD_PATH << File.expand_path(File.dirname(__FILE__))
-RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..")
-
-Plugit.describe do |scenarios|
- scenarios.environments_root_path = File.dirname(__FILE__) + '/environments'
- vendor_directory = File.expand_path(File.dirname(__FILE__) + '/../vendor/plugins')
-
- scenarios.environment :default, 'Released versions of Rails and RSpec' do |env|
- env.library :rails, :export => "git clone git://github.com/rails/rails.git" do |rails|
- rails.after_update { `git co v2.1.0_RC1` }
- rails.load_paths = %w{/activesupport/lib /activerecord/lib /actionpack/lib}
- rails.requires = %w{active_support active_record action_controller action_view}
- end
- env.library :rspec, :export => "git clone git://github.com/dchelimsky/rspec.git" do |rspec|
- rspec.after_update { `git co 1.1.4 && mkdir -p #{vendor_directory} && ln -sF #{File.expand_path('.')} #{vendor_directory + '/rspec'}` }
- rspec.requires = %w{spec}
- end
- env.library :rspec_rails, :export => "git clone git://github.com/dchelimsky/rspec-rails.git" do |rspec_rails|
- rspec_rails.after_update { `git co 1.1.4` }
- rspec_rails.requires = %w{spec/rails}
- end
- end
-
- scenarios.environment :edge, 'Edge versions of Rails and RSpec' do |env|
- env.library :rails, :export => "git clone git://github.com/rails/rails.git --depth 1" do |rails|
- rails.before_install { `git pull` }
- rails.load_paths = %w{/activesupport/lib /activerecord/lib /actionpack/lib}
- rails.requires = %w{active_support active_record action_controller action_view}
- end
- env.library :rspec, :export => "git clone git://github.com/dchelimsky/rspec.git --depth 1" do |rspec|
- rspec.after_update { `git pull && mkdir -p #{vendor_directory} && ln -sF #{File.expand_path('.')} #{vendor_directory + '/rspec'}` }
- rspec.requires = %w{spec}
- end
- env.library :rspec_rails, :export => "git clone git://github.com/dchelimsky/rspec-rails.git --depth 1" do |rspec_rails|
- rspec_rails.after_update { `git pull` }
- rspec_rails.requires = %w{spec/rails}
- end
- end
-end
\ No newline at end of file
diff --git a/vendor/plugins/scenarios/testing/schema.rb b/vendor/plugins/scenarios/testing/schema.rb
deleted file mode 100644
index 30a1326c..00000000
--- a/vendor/plugins/scenarios/testing/schema.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-ActiveRecord::Schema.define do
- create_table :people, :force => true do |t|
- t.column :first_name, :string
- t.column :last_name, :string
- end
-
- create_table :places, :force => true do |t|
- t.column :name, :string
- t.column :location, :string
- end
-
- create_table :things, :force => true do |t|
- t.column :name, :string
- t.column :description, :string
- end
-
- create_table :side_effecty_things, :force => true do |t|
- end
-
- create_table :models, :force => true do |t|
- t.column :name, :string
- t.column :description, :string
- end
-
- create_table :notes, :force => true do |t|
- t.column :content, :string
- t.column :created_at, :datetime
- t.column :updated_at, :datetime
- end
-end
-
\ No newline at end of file