blueprints_boy 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +20 -0
  5. data/Appraisals +37 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +20 -0
  8. data/README.md +26 -0
  9. data/Rakefile +76 -0
  10. data/blueprints_boy.gemspec +27 -0
  11. data/gemfiles/ar3.1.gemfile +8 -0
  12. data/gemfiles/ar3.2.gemfile +8 -0
  13. data/gemfiles/ar4.0.gemfile +8 -0
  14. data/gemfiles/ar4.1.gemfile +8 -0
  15. data/gemfiles/mongoid2.gemfile +8 -0
  16. data/gemfiles/mongoid3.gemfile +8 -0
  17. data/gemfiles/mongoid4.gemfile +8 -0
  18. data/gemfiles/noorm.gemfile +5 -0
  19. data/integration/active_record/active_record_spec.rb +38 -0
  20. data/integration/active_record/active_record_truncation_spec.rb +26 -0
  21. data/integration/active_record/blueprints.rb +1 -0
  22. data/integration/active_record/setup.rb +8 -0
  23. data/integration/cucumber/blueprints.feature +20 -0
  24. data/integration/cucumber/step_definitions/blueprints_steps.rb +17 -0
  25. data/integration/cucumber/support/env.rb +11 -0
  26. data/integration/minitest/blueprints.rb +11 -0
  27. data/integration/minitest/test_minispec.rb +41 -0
  28. data/integration/minitest/test_minitest.rb +28 -0
  29. data/integration/mongoid/blueprints.rb +1 -0
  30. data/integration/mongoid/mongoid_spec.rb +50 -0
  31. data/integration/rspec/blueprints.rb +13 -0
  32. data/integration/rspec/rspec_spec.rb +113 -0
  33. data/integration/shared.rb +9 -0
  34. data/lib/blueprints_boy/blueprint.rb +59 -0
  35. data/lib/blueprints_boy/configuration.rb +48 -0
  36. data/lib/blueprints_boy/context.rb +53 -0
  37. data/lib/blueprints_boy/dependency.rb +23 -0
  38. data/lib/blueprints_boy/errors.rb +10 -0
  39. data/lib/blueprints_boy/factories.rb +18 -0
  40. data/lib/blueprints_boy/helper.rb +47 -0
  41. data/lib/blueprints_boy/integration/active_record.rb +11 -0
  42. data/lib/blueprints_boy/integration/cucumber.rb +9 -0
  43. data/lib/blueprints_boy/integration/minitest.rb +23 -0
  44. data/lib/blueprints_boy/integration/mongoid.rb +11 -0
  45. data/lib/blueprints_boy/integration/rspec.rb +20 -0
  46. data/lib/blueprints_boy/manager.rb +87 -0
  47. data/lib/blueprints_boy/railtie.rb +24 -0
  48. data/lib/blueprints_boy/registry.rb +28 -0
  49. data/lib/blueprints_boy/version.rb +3 -0
  50. data/lib/blueprints_boy.rb +62 -0
  51. data/spec/spec_helper.rb +25 -0
  52. data/spec/support/empty_file.rb +0 -0
  53. data/spec/support/fixtures.rb +41 -0
  54. data/spec/support/manager_fixture.rb +3 -0
  55. data/spec/unit/blueprint_spec.rb +102 -0
  56. data/spec/unit/blueprints_boy_spec.rb +15 -0
  57. data/spec/unit/configuration_spec.rb +41 -0
  58. data/spec/unit/context_spec.rb +145 -0
  59. data/spec/unit/dependency_spec.rb +56 -0
  60. data/spec/unit/factories_spec.rb +27 -0
  61. data/spec/unit/manager_spec.rb +122 -0
  62. data/spec/unit/registry_spec.rb +47 -0
  63. metadata +189 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a3ca13ff47fec410475c77e1185dbb93aad17785
4
+ data.tar.gz: 24d8f27acfd26e20dec56e97b5d9aebcaf84d854
5
+ SHA512:
6
+ metadata.gz: be15bd8f770fec456edf7f999c52d4fe88546a798f45d6a9d4cf96a0ec2282b6dbbc868fc4b2973144d6909f68196d450148cfb2c71b748087960549aa3b80e2
7
+ data.tar.gz: 3edd975c2a024aab7720c9e6253b9b2d31c93d4705cf56e3109e5dcb898d7415dd3df8b7de11c6a588dd105a77502b2128a87946298fbeeb8f563fbfbbceaf37
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ /gemfiles/*.gemfile.lock
5
+ pkg/*
6
+ /integration/*/*.log
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --tty
2
+ --colour
data/.travis.yml ADDED
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.3
6
+ - rbx
7
+ gemfile:
8
+ - Gemfile
9
+ - gemfiles/ar3.1.gemfile
10
+ - gemfiles/ar3.2.gemfile
11
+ - gemfiles/ar4.0.gemfile
12
+ - gemfiles/ar4.1.gemfile
13
+ - gemfiles/mongoid2.gemfile
14
+ - gemfiles/mongoid3.gemfile
15
+ - gemfiles/mongoid4.gemfile
16
+ - gemfiles/noorm.gemfile
17
+ services:
18
+ - mongodb
19
+ before_script:
20
+ - mysql -e 'create database blueprints_boy_test;'
data/Appraisals ADDED
@@ -0,0 +1,37 @@
1
+ appraise "ar3.1" do
2
+ gem "activerecord", "~> 3.1.12"
3
+ gem 'mysql2'
4
+ end
5
+
6
+ appraise "ar3.2" do
7
+ gem "activerecord", "~> 3.2.15"
8
+ gem 'mysql2'
9
+ end
10
+
11
+ appraise "ar4.0" do
12
+ gem "activerecord", "~> 4.0.0"
13
+ gem 'mysql2'
14
+ end
15
+
16
+ appraise "ar4.1" do
17
+ gem "activerecord", "~> 4.1.0"
18
+ gem 'mysql2'
19
+ end
20
+
21
+ appraise "mongoid2" do
22
+ gem "mongoid", "~> 2.0"
23
+ gem 'bson_ext'
24
+ end
25
+
26
+ appraise "mongoid3" do
27
+ gem "mongoid", "~> 3.0"
28
+ gem 'bson_ext'
29
+ end
30
+
31
+ appraise "mongoid4" do
32
+ gem "mongoid", "~> 4.0"
33
+ gem 'bson_ext'
34
+ end
35
+
36
+ appraise "noorm" do
37
+ end
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in blueprints_boy.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Andrius Chamentauskas
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,26 @@
1
+ BlueprintsBoy
2
+ ========
3
+
4
+ [![Build Status](https://travis-ci.org/andriusch/blueprints_boy.png?branch=master)](https://travis-ci.org/andriusch/blueprints_boy)
5
+ [![Code Climate](https://codeclimate.com/repos/52744bde13d6377312003e29/badges/f31c3b20808152bc89a4/gpa.png)](https://codeclimate.com/repos/52744bde13d6377312003e29/feed)
6
+
7
+ The ultimate DRY and fast solution to loading test data in Ruby and Rails. Blueprints allows you to create and manage
8
+ data for tests in simple but powerful ways.
9
+
10
+ Documentation
11
+ -------------
12
+
13
+ For documentation please visit [andriusch.github.com/blueprints_boy](http://andriusch.github.com/blueprints_boy)
14
+
15
+ Credits
16
+ -------
17
+
18
+ Andrius Chamentauskas <andrius.chamentauskas@gmail.com>
19
+
20
+ Some ideas are based on hornsby scenario plugin by Lachie Cox, which was based on code found on
21
+ [errtheblog.com/posts/61-fixin-fixtures](http://errtheblog.com/posts/61-fixin-fixtures)
22
+
23
+ License
24
+ -------
25
+
26
+ MIT, see LICENCE
data/Rakefile ADDED
@@ -0,0 +1,76 @@
1
+ require "bundler/setup"
2
+ require 'appraisal'
3
+ require "bundler/gem_tasks"
4
+
5
+ require 'rspec/core/rake_task'
6
+ require 'rake/testtask'
7
+ require 'cucumber/rake/task'
8
+
9
+ namespace :spec do
10
+ RSpec::Core::RakeTask.new(:unit) do |t|
11
+ t.pattern = "spec/unit/**/*_spec.rb"
12
+ end
13
+ RSpec::Core::RakeTask.new(:rspec) do |t|
14
+ t.pattern = "integration/rspec/rspec_spec.rb"
15
+ end
16
+
17
+ RSpec::Core::RakeTask.new(:active_record => 'prepare:active_record') do |t|
18
+ t.pattern = "integration/active_record/active_record_spec.rb"
19
+ end
20
+ RSpec::Core::RakeTask.new(:active_record_truncation => 'prepare:active_record') do |t|
21
+ t.pattern = "integration/active_record/active_record_truncation_spec.rb"
22
+ end
23
+
24
+ RSpec::Core::RakeTask.new(:mongoid) do |t|
25
+ t.pattern = "integration/mongoid/mongoid_spec.rb"
26
+ end
27
+
28
+ Rake::TestTask.new(:minitest) do |t|
29
+ t.pattern = "integration/minitest/test_*.rb"
30
+ end
31
+
32
+ Cucumber::Rake::Task.new(:cucumber) do |t|
33
+ t.cucumber_opts = "integration/cucumber --format pretty"
34
+ end
35
+ end
36
+
37
+ namespace :prepare do
38
+ desc "Prepare database schema for active record"
39
+ task :active_record do
40
+ require_relative 'integration/active_record/setup'
41
+ ActiveRecord::Schema.define(:version => 0) do
42
+ create_table :fruits, :force => true do |t|
43
+ t.string :species
44
+ t.integer :size
45
+ t.belongs_to :parent
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ desc 'Run all specs'
52
+ task :spec do
53
+ def find_gem(name)
54
+ Bundler.setup.specs.find { |spec| spec.name == name }
55
+ end
56
+
57
+ def run(task)
58
+ puts "Running #{task}"
59
+ Rake::Task[task].invoke
60
+ puts "\n\n"
61
+ end
62
+
63
+ if find_gem('activerecord')
64
+ run 'spec:active_record'
65
+ run 'spec:active_record_truncation'
66
+ elsif find_gem('mongoid')
67
+ run 'spec:mongoid'
68
+ else
69
+ run 'spec:rspec'
70
+ run 'spec:minitest'
71
+ run 'spec:unit'
72
+ run 'spec:cucumber'
73
+ end
74
+ end
75
+
76
+ task :default => :spec
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "blueprints_boy/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "blueprints_boy"
7
+ s.version = BlueprintsBoy::VERSION
8
+ s.authors = ["Andrius Chamentauskas"]
9
+ s.email = ["andrius.chamentauskas@gmail.com"]
10
+ s.homepage = "http://andriusch.github.io/blueprints_boy/"
11
+ s.summary = %q{The ultimate solution to managing test data.}
12
+ s.description = %q{The ultimate DRY and fast solution to managing any kind of test data. Based on Blueprints.}
13
+
14
+ s.rubyforge_project = "blueprints_boy"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_development_dependency "rake"
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "cucumber"
24
+ s.add_development_dependency "appraisal"
25
+ s.add_runtime_dependency "activesupport", ">= 3.0.0"
26
+ s.add_runtime_dependency "database_cleaner"
27
+ end
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activerecord", "~> 3.1.12"
6
+ gem "mysql2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activerecord", "~> 3.2.15"
6
+ gem "mysql2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activerecord", "~> 4.0.0"
6
+ gem "mysql2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "activerecord", "~> 4.1.0"
6
+ gem "mysql2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "mongoid", "~> 2.0"
6
+ gem "bson_ext"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "mongoid", "~> 3.0"
6
+ gem "bson_ext"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "mongoid", "~> 4.0"
6
+ gem "bson_ext"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,5 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gemspec :path => "../"
@@ -0,0 +1,38 @@
1
+ require_relative 'setup'
2
+ require 'rspec'
3
+ require 'blueprints_boy'
4
+ require_relative '../shared'
5
+
6
+ BlueprintsBoy.enable do |config|
7
+ config.root = File.dirname(__FILE__)
8
+ end
9
+
10
+ describe ActiveRecord::Base do
11
+ it "should create record in database" do
12
+ build :apple
13
+ apple.should be_a(ARFruit)
14
+ apple.should be_persisted
15
+ apple.species.should == 'apple'
16
+ end
17
+
18
+ it "should clean database before each test" do
19
+ ARFruit.all.should == []
20
+ end
21
+
22
+ it "should use transactions for cleaning database" do
23
+ ActiveRecord::Base.connection.open_transactions.should == 1
24
+ end
25
+
26
+ it "should allow building using :new strategy" do
27
+ build_with :new, :apple
28
+ apple.should be_a(ARFruit)
29
+ apple.should be_new_record
30
+ apple.species.should == 'apple'
31
+ end
32
+
33
+ it "should allow updating built blueprint" do
34
+ build :apple
35
+ build :apple => {species: 'orange'}
36
+ apple.reload.species.should == 'orange'
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ require_relative 'setup'
2
+ require 'rspec'
3
+ require 'blueprints_boy'
4
+ require_relative '../shared'
5
+
6
+ BlueprintsBoy.enable do |config|
7
+ config.root = File.dirname(__FILE__)
8
+ config.transactions = false
9
+ end
10
+
11
+ describe ActiveRecord::Base do
12
+ it "should create record in database" do
13
+ build :apple
14
+ apple.should be_a(ARFruit)
15
+ apple.should be_persisted
16
+ apple.species.should == 'apple'
17
+ end
18
+
19
+ it "should clean database before each test" do
20
+ ARFruit.all.should == []
21
+ end
22
+
23
+ it "should use transactions for cleaning database" do
24
+ ActiveRecord::Base.connection.open_transactions.should == 0
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ factory(ARFruit).blueprint :apple, species: 'apple'
@@ -0,0 +1,8 @@
1
+ require 'active_record'
2
+ require 'mysql2'
3
+ ActiveRecord::Base.establish_connection(adapter: 'mysql2', database: 'blueprints_boy_test')
4
+
5
+ class ARFruit < ActiveRecord::Base
6
+ self.table_name = 'fruits'
7
+ attr_protected :species if ActiveRecord::VERSION::MAJOR < 4
8
+ end
@@ -0,0 +1,20 @@
1
+ Feature: blueprints
2
+ In order to use blueprints with cucumber
3
+ As a developer
4
+ I should be able build blueprints with correct data
5
+
6
+ Scenario: build cherry
7
+ Given I have apple
8
+ Then apple should be available
9
+ And apple should equal "apple"
10
+
11
+ Scenario: no cherry
12
+ Then apple should NOT be available
13
+
14
+ Scenario: global cherry prebuild
15
+ When global_cherry should equal "cherry"
16
+ Then I change global_cherry
17
+
18
+ Scenario: global cherry another prebuild
19
+ When global_cherry should equal "cherry"
20
+ Then I change global_cherry
@@ -0,0 +1,17 @@
1
+ Given /^I have (\w+)$/ do |name|
2
+ build name.to_sym
3
+ end
4
+ Then /^(\w+) should (NOT )?be available$/ do |name, negative|
5
+ data = blueprint_data(name.to_sym)
6
+ if negative
7
+ expect(data).to be_nil
8
+ else
9
+ expect(data).not_to be_nil
10
+ end
11
+ end
12
+ When /^(\w+) should equal "([^\"]*)"/ do |name, value|
13
+ expect(send(name)).to eq(value)
14
+ end
15
+ Then /^I change global_cherry$/ do
16
+ global_cherry << ' modified'
17
+ end
@@ -0,0 +1,11 @@
1
+ require 'bundler/setup'
2
+ require 'cucumber'
3
+ require 'blueprints_boy'
4
+
5
+ # Comment out the next two lines if you're not using RSpec's matchers (should / should_not) in your steps.
6
+ #require 'cucumber/rspec'
7
+
8
+ BlueprintsBoy.enable do |config|
9
+ config.root = File.expand_path("../../../rspec", __FILE__)
10
+ config.global = :global_cherry
11
+ end
@@ -0,0 +1,11 @@
1
+ blueprint :apple do
2
+ 'apple'
3
+ end
4
+
5
+ attributes(name: 'orange').blueprint :orange do |data|
6
+ data.attributes[:name]
7
+ end
8
+
9
+ blueprint :global_cherry, name: 'cherry' do |data|
10
+ data.attributes[:name]
11
+ end
@@ -0,0 +1,41 @@
1
+ require 'bundler/setup'
2
+ require 'minitest/spec'
3
+ require 'minitest/autorun'
4
+ require 'blueprints_boy'
5
+
6
+ BlueprintsBoy.enable do |config|
7
+ config.root = File.dirname(__FILE__)
8
+ config.global = :global_cherry
9
+ end
10
+
11
+ describe BlueprintsBoy do
12
+ describe "build" do
13
+ it "allows building blueprint" do
14
+ build :apple
15
+ apple.must_equal 'apple'
16
+ end
17
+
18
+ it "should not allow to reach blueprints from previous specs" do
19
+ blueprint_data(:apple).must_be_nil
20
+ end
21
+
22
+ it "allows building same blueprint in another spec" do
23
+ build :apple
24
+ apple.must_equal 'apple'
25
+ end
26
+ end
27
+
28
+ describe "class level set" do
29
+ build :apple
30
+
31
+ it "should build blueprints in before filter" do
32
+ apple.must_equal 'apple'
33
+ end
34
+ end
35
+
36
+ describe "global" do
37
+ it "should build global blueprints" do
38
+ global_cherry.must_equal 'cherry'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ require 'bundler/setup'
2
+ require 'minitest/autorun'
3
+ require 'blueprints_boy'
4
+
5
+ BlueprintsBoy.enable do |config|
6
+ config.root = File.dirname(__FILE__)
7
+ config.global = :global_cherry
8
+ end
9
+
10
+ class TestMinitest < MiniTest::Test
11
+ def test_build
12
+ build :apple
13
+ assert_equal 'apple', apple
14
+ end
15
+
16
+ def test_clearup
17
+ assert_nil blueprint_data(:apple)
18
+ end
19
+
20
+ def test_build_again
21
+ build :apple
22
+ assert_equal 'apple', apple
23
+ end
24
+
25
+ def test_global
26
+ assert_equal 'cherry', global_cherry
27
+ end
28
+ end
@@ -0,0 +1 @@
1
+ factory(MongoidFruit).blueprint :apple, species: 'apple'
@@ -0,0 +1,50 @@
1
+ require 'rspec'
2
+ require 'mongoid'
3
+ require_relative '../shared'
4
+
5
+ class MongoidFruit
6
+ include Mongoid::Document
7
+
8
+ field :species
9
+ field :size, :type => Integer
10
+
11
+ attr_protected :species if Mongoid::VERSION.to_i < 4
12
+ end
13
+
14
+ Mongoid.configure.logger = Logger.new(File.expand_path('../debug.log', __FILE__))
15
+ if Mongoid.configure.respond_to?(:connect_to)
16
+ Mongoid.configure.connect_to 'blueprints_test'
17
+ else
18
+ Mongoid.configure.from_hash 'database' => 'blueprints_test'
19
+ end
20
+
21
+ require 'blueprints_boy'
22
+ BlueprintsBoy.enable do |config|
23
+ config.root = File.dirname(__FILE__)
24
+ end
25
+
26
+ describe Mongoid do
27
+ it "should create record in database" do
28
+ build :apple
29
+ apple.should be_a(MongoidFruit)
30
+ apple.should be_persisted
31
+ apple.species.should == 'apple'
32
+ end
33
+
34
+ it "should clean database before each test" do
35
+ MongoidFruit.all.to_a.should == []
36
+ end
37
+
38
+ it "should allow building using :new strategy" do
39
+ build_with :new, :apple
40
+ apple.should be_a(MongoidFruit)
41
+ apple.should be_new_record
42
+ apple.species.should == 'apple'
43
+ end
44
+
45
+ it "should allow updating built blueprint" do
46
+ build :apple
47
+ build :apple => {species: 'orange'}
48
+ apple.reload.species.should == 'orange'
49
+ end
50
+ end
@@ -0,0 +1,13 @@
1
+ blueprint :apple do
2
+ 'apple'
3
+ end
4
+
5
+ attributes(name: 'orange').blueprint(:orange) do |data|
6
+ data.attributes[:name]
7
+ end.blueprint(:new) do |data|
8
+ "new #{data.attributes[:name]}"
9
+ end
10
+
11
+ blueprint :global_cherry, name: 'cherry' do |data|
12
+ data.attributes[:name]
13
+ end