Changeset 235
- Timestamp:
- 05/10/07 21:28:29 (1 year ago)
- Files:
-
- mrblog/trunk/dist/app/controllers/blog.rb (modified) (1 diff)
- mrblog/trunk/dist/app/controllers/files.rb (modified) (1 diff)
- mrblog/trunk/dist/public/files/files_spec.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/dsl/behaviour_factory.rb (modified) (1 diff)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb.rb (modified) (1 diff)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour.rb (modified) (1 diff)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour/base.rb (modified) (1 diff)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour/controller.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour/model.rb (modified) (1 diff)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/fakes (added)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/fakes.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/fakes/fake_request.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/dist/app/controllers/foo_controller.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/merb (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/merb/dsl (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/merb/dsl/behaviour (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/merb/dsl/behaviour/controller_spec.rb (added)
- mrblog/trunk/plugins/rspec_on_merb/spec/spec_helper.rb (modified) (1 diff)
- mrblog/trunk/test/fixtures/posts.yml (added)
- mrblog/trunk/test/spec/controllers (added)
- mrblog/trunk/test/spec/controllers/blog_spec.rb (added)
- mrblog/trunk/test/spec/controllers/files_spec.rb (added)
- mrblog/trunk/test/spec/spec_helper.rb (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mrblog/trunk/dist/app/controllers/blog.rb
r229 r235 8 8 9 9 def index 10 @pager = Merb::Paginator.new(Post.count, MrBlog::PER_PAGE) do |offset, per_page|10 @pager = Merb::Paginator.new(Post.count, ::MrBlog::PER_PAGE) do |offset, per_page| 11 11 Post.find(:all, :limit => per_page, :offset => offset) 12 12 end mrblog/trunk/dist/app/controllers/files.rb
r133 r235 11 11 12 12 def upload 13 puts params.inspect14 15 13 FileUtils.mv params[:data][:tempfile].path, 16 14 Merb::Server.config[:dist_root]+"/public/files/#{params[:data][:filename]}" mrblog/trunk/plugins/rspec_on_merb/lib/spec/dsl/behaviour_factory.rb
r230 r235 1 1 #Spec::DSL::BehaviourFactory.add_behaviour_class(:view, Spec::Merb::DSL::ViewBehaviour) 2 2 #Spec::DSL::BehaviourFactory.add_behaviour_class(:helper, Spec::Merb::DSL::HelperBehaviour) 3 #Spec::DSL::BehaviourFactory.add_behaviour_class(:controller, Spec::Merb::DSL::ControllerBehaviour)3 Spec::DSL::BehaviourFactory.add_behaviour_class(:controller, Spec::Merb::DSL::ControllerBehaviour) 4 4 Spec::DSL::BehaviourFactory.add_behaviour_class(:model, Spec::Merb::DSL::ModelBehaviour) 5 5 mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb.rb
r230 r235 9 9 10 10 require File.expand_path("#{dir}/merb/matchers") 11 require File.expand_path("#{dir}/merb/fakes") 11 12 require File.expand_path("#{dir}/merb/dsl") 12 13 mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour.rb
r230 r235 3 3 require File.expand_path("#{dir}/behaviour/base") 4 4 require File.expand_path("#{dir}/behaviour/model") 5 #require File.expand_path("#{dir}/behaviour/controller")5 require File.expand_path("#{dir}/behaviour/controller") 6 6 #require File.expand_path("#{dir}/behaviour/helper") 7 7 #require File.expand_path("#{dir}/behaviour/view") mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour/base.rb
r230 r235 72 72 end 73 73 74 class Eval Context< Spec::Merb::TestCase74 class EvalModule < Spec::Merb::TestCase 75 75 include Spec::Merb::Matchers 76 76 include Spec::Merb::DSL::AllBehaviourHelpers mrblog/trunk/plugins/rspec_on_merb/lib/spec/merb/dsl/behaviour/model.rb
r230 r235 9 9 class ModelBehaviour < Spec::DSL::Behaviour 10 10 def before_eval # :nodoc: 11 inherit Spec::Merb::DSL::Eval Context11 inherit Spec::Merb::DSL::EvalModule 12 12 configure 13 13 end mrblog/trunk/plugins/rspec_on_merb/spec/spec_helper.rb
r230 r235 4 4 require 'active_record' 5 5 6 dir = File.dirname(__FILE__) 7 $LOAD_PATH << "#{dir}/dist/app/controllers" 8 $LOAD_PATH << "#{dir}/dist/app/helpers" 9 $LOAD_PATH << "#{dir}/dist/app/models" 10 $LOAD_PATH << "#{dir}/dist/app/views" 6 class SpecInitializer 7 module ClassMethods 8 def recreate_database_called? 9 @recreate_database_called 10 end 11 11 12 require "#{dir}/../lib/spec/merb" 12 def recreate_database_called! 13 @recreate_database_called = true 14 end 15 end 16 extend ClassMethods 13 17 14 database = 'rspec_on_merb_test' 15 username = 'root' 16 password = 'password' 17 sql = "drop database if exists #{database}; create database #{database};"18 cmd = %Q|mysql -u#{username} -p#{password} -e "#{sql};"| 19 raise "Failed to recreate test database" unless system(cmd) 18 def add_load_paths 19 $LOAD_PATH << "#{dir}/dist/app/controllers" 20 $LOAD_PATH << "#{dir}/dist/app/helpers" 21 $LOAD_PATH << "#{dir}/dist/app/models" 22 $LOAD_PATH << "#{dir}/dist/app/views" 23 end 20 24 21 ActiveRecord::Base.configurations['test'] = { 22 :adapter => 'mysql', 23 :username => username, 24 :password => password, 25 :database => database, 26 :host => 'localhost' 27 } 28 ActiveRecord::Base.establish_connection('test') 25 def load_merb 26 require "#{dir}/../lib/spec/merb" 27 end 29 28 30 require "#{dir}/dist/schema/migrations/001_add_things_table" 31 AddThingsTable.up 29 def initialize_database 30 database = 'rspec_on_merb_test' 31 username = 'root' 32 password = 'password' 33 34 unless recreate_database_called? 35 sql = "drop database if exists #{database}; create database #{database};" 36 cmd = %Q|mysql -u#{username} -p#{password} -e "#{sql};"| 37 raise "Failed to recreate test database" unless system(cmd) 38 end 39 40 ActiveRecord::Base.configurations['test'] = { 41 :adapter => 'mysql', 42 :username => username, 43 :password => password, 44 :database => database, 45 :host => 'localhost' 46 } 47 ActiveRecord::Base.establish_connection('test') 48 49 unless recreate_database_called? 50 require "#{dir}/dist/schema/migrations/001_add_things_table" 51 AddThingsTable.up 52 end 53 54 recreate_database_called! unless recreate_database_called? 55 end 56 57 def require_project_files 58 require_files_from_directory "controllers" 59 require_files_from_directory "helpers" 60 require_files_from_directory "models" 61 require_files_from_directory "views" 62 end 63 64 protected 65 def require_files_from_directory(app_dir) 66 Dir["#{dir}/dist/app/#{app_dir}/*"].each do |file| 67 require file 68 end 69 end 70 71 def recreate_database_called? 72 self.class.recreate_database_called? 73 end 74 75 def recreate_database_called! 76 self.class.recreate_database_called! 77 end 78 79 def dir 80 File.dirname(__FILE__) 81 end 82 end 83 84 initializer = SpecInitializer.new 85 86 initializer.add_load_paths 87 initializer.load_merb 88 initializer.initialize_database 89 initializer.require_project_files mrblog/trunk/test/spec/spec_helper.rb
r233 r235 27 27 Dir[DIST_ROOT+"/plugins/*/init.rb"].each { |m| require m } 28 28 Dir[MERB_ROOT+"/plugins/*/init.rb"].each { |m| require m } 29 29 require DIST_ROOT+"/conf/router.rb" 30 30 $LOAD_PATH << DIST_ROOT+"/app/models/" 31 31 $LOAD_PATH << DIST_ROOT+"/app/controllers/" … … 33 33 Dir[DIST_ROOT+"/plugins/*/lib"].each { |m| $LOAD_PATH << m } 34 34 Dir[MERB_ROOT+"/plugins/*/lib"].each { |m| $LOAD_PATH << m } 35 36 module MrBlog 37 PER_PAGE = 10 38 end 35 39 36 40 require "spec/merb" … … 40 44 :adapter => 'mysql', 41 45 :username => 'root', 42 :password => 'xxxxx x',46 :password => 'xxxxx', 43 47 :database => 'mrblog_test', 44 48 :host => 'localhost' … … 50 54 51 55 require "#{dir}/fake_request" 56 57 module Multipart 58 require 'rubygems' 59 require 'mime/types' 60 61 class Param 62 attr_accessor :k, :v 63 def initialize( k, v ) 64 @k = k 65 @v = v 66 end 67 68 def to_multipart 69 return "Content-Disposition: form-data; name=\"#{k}\"\r\n\r\n#{v}\r\n" 70 end 71 end 72 73 class FileParam 74 attr_accessor :k, :filename, :content 75 def initialize( k, filename, content ) 76 @k = k 77 @filename = filename 78 @content = content 79 end 80 81 def to_multipart 82 return "Content-Disposition: form-data; name=\"#{k}\"; filename=\"#{filename}\"\r\n" + "Content-Type: #{MIME::Types.type_for(@filename)}\r\n\r\n" + content + "\r\n" 83 end 84 end 85 class Post 86 BOUNDARY = '----------0xKhTmLbOuNdArY' 87 CONTENT_TYPE = "multipart/form-data, boundary=" + BOUNDARY 88 89 def prepare_query (params) 90 fp = [] 91 params.each {|k,v| 92 if v.respond_to?(:read) 93 fp.push(FileParam.new(k, v.path, c=v.read)) 94 else 95 fp.push(Param.new(k,v)) 96 end 97 } 98 query = fp.collect {|p| "--" + BOUNDARY + "\r\n" + p.to_multipart }.join("") + "--" + BOUNDARY + "--" 99 return query, CONTENT_TYPE 100 end 101 end 102 end
