blueprints 0.8.2 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/.gitignore +4 -1
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +82 -18
  4. data/LICENSE +1 -1
  5. data/README.rdoc +38 -8
  6. data/Rakefile +11 -35
  7. data/blueprints.gemspec +29 -123
  8. data/features/support/env.rb +7 -10
  9. data/lib/blueprints.rb +68 -12
  10. data/lib/blueprints/blueprint.rb +39 -19
  11. data/lib/blueprints/buildable.rb +92 -74
  12. data/lib/blueprints/configuration.rb +18 -4
  13. data/lib/blueprints/context.rb +148 -5
  14. data/lib/blueprints/database_cleaner_fix.rb +9 -0
  15. data/lib/blueprints/dependency.rb +32 -21
  16. data/lib/blueprints/eval_context.rb +51 -0
  17. data/lib/blueprints/extensions.rb +115 -0
  18. data/lib/blueprints/extensions/rspec.rb +3 -1
  19. data/lib/blueprints/helper.rb +52 -20
  20. data/lib/blueprints/namespace.rb +31 -12
  21. data/lib/blueprints/root_namespace.rb +24 -25
  22. data/lib/blueprints/version.rb +3 -0
  23. data/spec/{active_record/blueprint.rb → blueprint.rb} +14 -17
  24. data/spec/{active_record/blueprints_spec.rb → blueprints_spec.rb} +40 -59
  25. data/spec/spec_helper.rb +34 -0
  26. data/spec/support/active_record/database.yml.example +7 -0
  27. data/spec/support/active_record/initializer.rb +15 -0
  28. data/spec/{active_record/fixtures → support/active_record}/schema.rb +0 -0
  29. data/spec/support/dm-core/initializer.rb +31 -0
  30. data/spec/support/mongo_mapper/database.yml.example +2 -0
  31. data/spec/support/mongo_mapper/initializer.rb +20 -0
  32. data/spec/support/mongoid/database.yml.example +2 -0
  33. data/spec/support/mongoid/initializer.rb +23 -0
  34. data/spec/support/none/initializer.rb +63 -0
  35. data/spec/unit/active_record_spec.rb +1 -6
  36. data/spec/unit/blueprint_spec.rb +91 -20
  37. data/spec/unit/blueprints_spec.rb +44 -0
  38. data/spec/unit/buildable_spec.rb +37 -6
  39. data/spec/unit/configuration_spec.rb +11 -0
  40. data/spec/unit/context_spec.rb +100 -0
  41. data/spec/unit/dependency_spec.rb +24 -19
  42. data/spec/unit/eval_context_spec.rb +56 -0
  43. data/spec/unit/fixtures.rb +61 -0
  44. data/spec/unit/namespace_spec.rb +59 -11
  45. data/spec/unit/spec_helper.rb +8 -16
  46. data/test/blueprints_test.rb +40 -59
  47. data/test/test_helper.rb +6 -16
  48. data/test_all.sh +45 -0
  49. metadata +178 -61
  50. data/VERSION +0 -1
  51. data/lib/blueprints/core_ext.rb +0 -69
  52. data/lib/blueprints/file_context.rb +0 -37
  53. data/spec/active_record/fixtures/database.yml.example +0 -8
  54. data/spec/active_record/fixtures/fruit.rb +0 -3
  55. data/spec/active_record/fixtures/tree.rb +0 -4
  56. data/spec/active_record/spec_helper.rb +0 -37
  57. data/spec/no_db/blueprint.rb +0 -9
  58. data/spec/no_db/blueprints_spec.rb +0 -45
  59. data/spec/no_db/fixtures/fruit.rb +0 -15
  60. data/spec/no_db/spec_helper.rb +0 -14
  61. data/spec/test_all.sh +0 -39
@@ -1,37 +0,0 @@
1
- module Blueprints
2
- # Module that blueprints file is executed against. Defined <tt>blueprint</tt> and <tt>namespace</tt> methods.
3
- class FileContext
4
- @@current = nil
5
- cattr_accessor :current
6
- attr_reader :file
7
-
8
- def initialize(file)
9
- file = Pathname.new(file)
10
- @file = file.relative_path_from(Blueprints.config.root)
11
- FileContext.current = self
12
- instance_eval(File.read(file))
13
- FileContext.current = nil
14
- end
15
-
16
- # Creates a new blueprint by name and block passed
17
- def blueprint(name, &block)
18
- Blueprint.new(name, @file, &block)
19
- end
20
-
21
- # Creates new namespace by name, and evaluates block against it.
22
- def namespace(name)
23
- old_namespace = Namespace.root
24
- namespace = Namespace.new(name)
25
- Namespace.root = namespace
26
- yield
27
- old_namespace.add_child(namespace)
28
- Namespace.root = old_namespace
29
- namespace
30
- end
31
-
32
- # Wrapper around Blueprints::Dependency.new. See Blueprints::Dependency for more information.
33
- def d(*args)
34
- Dependency.new(*args)
35
- end
36
- end
37
- end
@@ -1,8 +0,0 @@
1
- test:
2
- adapter: mysql
3
- socket: /var/run/mysqld/mysqld.sock
4
- encoding: utf8
5
- database: blueprints_test
6
- username: root
7
- password:
8
- host: localhost
@@ -1,3 +0,0 @@
1
- class Fruit < ActiveRecord::Base
2
- belongs_to :tree
3
- end
@@ -1,4 +0,0 @@
1
- class Tree < ActiveRecord::Base
2
- attr_protected :size
3
- has_many :fruits
4
- end
@@ -1,37 +0,0 @@
1
- require 'fileutils'
2
- require 'logger'
3
- version = ENV['RAILS']
4
- gem 'activerecord', version == '3' ? '>= 3.0.0.beta' : "~> #{version}" if version
5
- require 'active_record'
6
-
7
- Dir.chdir File.join(File.dirname(__FILE__), '..', '..')
8
-
9
- ActiveRecord::Base.logger = Logger.new("debug.log")
10
-
11
- databases = YAML::load(IO.read("spec/active_record/fixtures/database.yml"))
12
- db_info = databases[ENV["DB"] || "test"]
13
- ActiveRecord::Base.establish_connection(db_info)
14
-
15
- config_class = if version.to_s[0, 1] == '3'
16
- gem 'rspec', '>= 2.0.0.beta'
17
- require 'rspec'
18
- RSpec
19
- else
20
- require 'spec'
21
- Spec::Runner
22
- end
23
-
24
- require 'lib/blueprints'
25
- require 'spec/active_record/fixtures/fruit'
26
- require 'spec/active_record/fixtures/tree'
27
-
28
- config_class.configure do |config|
29
- config.mock_with :mocha
30
- end
31
-
32
- Blueprints.enable do |config|
33
- config.root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
34
- config.filename = 'spec/active_record/blueprint.rb'
35
- config.prebuild = :big_cherry
36
- config.transactions = !ENV["NO_TRANSACTIONS"]
37
- end
@@ -1,9 +0,0 @@
1
- blueprint :cherry do
2
- Fruit.new('cherry')
3
- end
4
-
5
- blueprint :big_cherry do
6
- Fruit.new('cherry', 10)
7
- end
8
-
9
- Fruit.blueprint :apple, :species => 'apple', :size => 3
@@ -1,45 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
2
-
3
- describe Blueprints do
4
- it "should build cherry blueprint" do
5
- build :cherry
6
- @cherry.should_not be_nil
7
- @cherry.should be_instance_of(Fruit)
8
- @cherry.species.should == 'cherry'
9
- end
10
-
11
- it "should not build cherry if not asked" do
12
- @cherry.should == nil
13
- end
14
-
15
- describe "prebuilt blueprints" do
16
- it "big cherry should have size of 10 even if it was changed in test below" do
17
- @big_cherry.size.should == 10
18
- @big_cherry.size = 15
19
- end
20
-
21
- it "big cherry should have size of 10 even if it was changed in test above" do
22
- @big_cherry.size.should == 10
23
- @big_cherry.size = 13
24
- end
25
- end
26
-
27
- describe "build per describe" do
28
- build_blueprint :cherry
29
-
30
- it "should have cherry" do
31
- @cherry.should_not be_nil
32
- end
33
-
34
- it "should have correct cherry species" do
35
- @cherry.species.should == 'cherry'
36
- end
37
- end
38
-
39
- it "should allow shortened forms of blueprint for any type of object" do
40
- build :apple
41
- @apple.should_not be_nil
42
- @apple.species.should == 'apple'
43
- @apple.size.should == 3
44
- end
45
- end
@@ -1,15 +0,0 @@
1
- class Fruit
2
- attr_accessor :species, :size
3
- include Blueprints::Blueprintable
4
-
5
- def initialize(species, size = 5)
6
- @species = species
7
- @size = size
8
- end
9
-
10
- private
11
-
12
- def self.blueprint_object(attrs)
13
- new(attrs[:species], attrs[:size])
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- Dir.chdir File.join(File.dirname(__FILE__), '..', '..')
2
-
3
- require 'spec/autorun'
4
- require 'lib/blueprints'
5
- require 'spec/no_db/fixtures/fruit'
6
-
7
- Spec::Runner.configure do |config|
8
- config.mock_with :mocha
9
- end
10
-
11
- Blueprints.enable do |config|
12
- config.root = File.expand_path(File.join(File.dirname(__FILE__)))
13
- config.prebuild = :big_cherry
14
- end
@@ -1,39 +0,0 @@
1
- #!/bin/bash
2
- function e {
3
- echo ''
4
- echo '----------------------------------------'
5
- echo $1
6
- echo '----------------------------------------'
7
- }
8
-
9
- [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
10
-
11
- e "Normal spec"
12
- spec spec/active_record/blueprints_spec.rb
13
-
14
- e "Without transactions"
15
- NO_TRANSACTIONS=true spec spec/active_record/blueprints_spec.rb
16
-
17
- e "With no db"
18
- spec spec/no_db/blueprints_spec.rb
19
-
20
- e "With Test::Unit"
21
- rake rspec_to_test
22
- ruby test/blueprints_test.rb
23
-
24
- e "With Cucumber"
25
- cucumber features/blueprints.feature
26
-
27
- e "With Rails 3"
28
- rvm 1.8.7
29
- RAILS=3 rspec spec/active_record/blueprints_spec.rb
30
-
31
- e "With ruby 1.9.1"
32
- rvm 1.9.1
33
- spec spec/active_record/blueprints_spec.rb
34
-
35
- e "With ruby 1.8.6"
36
- rvm 1.8.6
37
- spec spec/active_record/blueprints_spec.rb
38
-
39
- rvm system