floor_manager 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.txt ADDED
@@ -0,0 +1,17 @@
1
+
2
+ == 0.1.2 / 2011-09-28
3
+
4
+ * Lots of small bugfixes and small error reporting improvements. Anniversary
5
+ release.
6
+
7
+ == 0.1.1 / 2010-09-21
8
+
9
+ * Now uses rspec2 for tests.
10
+ * Correct version constraint on activesupport
11
+
12
+ == 0.1.0 / 2010-06-18
13
+
14
+ * initial version
15
+ - random string generation
16
+ - any / one object linking
17
+ - in memory build or database creation
data/README CHANGED
@@ -43,8 +43,7 @@ Then just require it atop of your floor definitions as follows:
43
43
 
44
44
  COMPATIBILITY
45
45
 
46
- This has only been tested with rails 2. Both Ruby 1.8 and Ruby 1.9 should
47
- work.
46
+ Has been tested with Ruby 1.9.2 and ActiveRecord/DataMapper.
48
47
 
49
48
  STATUS
50
49
 
@@ -42,7 +42,8 @@ module FloorManager::Employee
42
42
  @create_args = create_args
43
43
  end
44
44
  def apply(obj, floor, employee)
45
- set(obj, floor.build(*@create_args))
45
+ assoc_obj = floor.build(*@create_args)
46
+ set(obj, assoc_obj)
46
47
  end
47
48
  end
48
49
 
@@ -1,3 +1,5 @@
1
+ require 'blankslate'
2
+
1
3
  module FloorManager::Employee
2
4
  class DSL < BlankSlate
3
5
  # A proxy that is the receiver of #set and #append in a construct like this:
@@ -6,7 +8,7 @@ module FloorManager::Employee
6
8
  # relationship.set :gun
7
9
  # end
8
10
  #
9
- class AssocProxy < Struct.new(:employee, :field, :dsl)
11
+ class AssocProxy < ::Struct.new(:employee, :field, :dsl)
10
12
  def set(*create_args)
11
13
  dsl._add_attribute AttributeAction::AssocSet.new(field, create_args)
12
14
  end
@@ -18,6 +20,11 @@ module FloorManager::Employee
18
20
  (0...chars).map{ ('a'..'z').to_a[rand(26)] }.join
19
21
  })
20
22
  end
23
+ def integer(range)
24
+ dsl._add_attribute AttributeAction::Block.new(field, proc {
25
+ range.first + rand(range.last-range.first)
26
+ })
27
+ end
21
28
  end
22
29
 
23
30
  def initialize(employee, filter=:none, &block)
@@ -30,7 +37,7 @@ module FloorManager::Employee
30
37
  # Register actions to be taken if the object gets saved (floor#create)
31
38
  #
32
39
  def after_create(&block)
33
- FloorManager::Employee::DSL.new(@employee, :after_create, &block)
40
+ DSL.new(@employee, :after_create, &block)
34
41
  end
35
42
 
36
43
  # This method missing handles several magic incantations:
@@ -1,7 +1,4 @@
1
1
 
2
- require 'active_support/core_ext/string/inflections'
3
- require 'blankslate'
4
-
5
2
  module FloorManager::Employee
6
3
 
7
4
  # Base class for employees. No instances of this should be created.
@@ -18,7 +15,8 @@ module FloorManager::Employee
18
15
  # Build this employee in memory.
19
16
  #
20
17
  def build(floor, overrides)
21
- produce_instance.tap { |i| apply_attributes(i, :none, floor, overrides) }
18
+ produce_instance.tap { |i|
19
+ apply_attributes(i, :none, floor, overrides) }
22
20
  end
23
21
 
24
22
  # Create this employee in the database.
@@ -26,11 +24,12 @@ module FloorManager::Employee
26
24
  def create(floor, overrides)
27
25
  produce_instance.tap { |i|
28
26
  apply_attributes(i, :none, floor, overrides)
29
- i.save!
27
+
28
+ i.save or fail "Could not create instance of #{@klass_name.inspect}."
30
29
 
31
30
  unless @attributes[:after_create].empty?
32
31
  apply_attributes(i, :after_create, floor)
33
- i.save!
32
+ i.save or fail "Could not save after_create."
34
33
  end
35
34
  }
36
35
  end
@@ -54,12 +53,13 @@ module FloorManager::Employee
54
53
  def add_attribute filter, action
55
54
  @attributes[filter] << action
56
55
  end
57
- protected
56
+
58
57
  def produce_instance
59
- @klass_name.to_s.
60
- camelcase.
61
- constantize.
62
- new
58
+ name = camelcase(@klass_name.to_s)
59
+ Object.const_get(name).new
60
+ end
61
+ def camelcase(str)
62
+ str.gsub(%r((^|_)\w)) { |match| match[-1].upcase }
63
63
  end
64
64
 
65
65
  # Modify attribute values in +instance+, setting them to what was
metadata CHANGED
@@ -1,112 +1,69 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: floor_manager
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Kaspar Schiess
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-09-21 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: activesupport
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-09-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: blankslate
16
+ requirement: &70363139380420 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 2
30
- - 3
31
- - 5
32
- version: 2.3.5
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.1.2.4
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: rspec
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
- version: "0"
46
- type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: flexmock
50
23
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- version: "0"
59
- type: :development
60
- version_requirements: *id003
24
+ version_requirements: *70363139380420
61
25
  description:
62
26
  email: kaspar.schiess@absurd.li
63
27
  executables: []
64
-
65
28
  extensions: []
66
-
67
- extra_rdoc_files:
29
+ extra_rdoc_files:
68
30
  - README
69
- files:
31
+ files:
32
+ - HISTORY.txt
70
33
  - LICENSE
71
- - Rakefile
72
34
  - README
73
35
  - lib/floor_manager/employee/attribute_action.rb
74
36
  - lib/floor_manager/employee/dsl.rb
75
37
  - lib/floor_manager/employee.rb
76
38
  - lib/floor_manager/floor.rb
77
39
  - lib/floor_manager.rb
78
- has_rdoc: true
79
40
  homepage: http://github.com/kschiess/floor_manager
80
41
  licenses: []
81
-
82
42
  post_install_message:
83
- rdoc_options:
43
+ rdoc_options:
84
44
  - --main
85
45
  - README
86
- require_paths:
46
+ require_paths:
87
47
  - lib
88
- required_ruby_version: !ruby/object:Gem::Requirement
48
+ required_ruby_version: !ruby/object:Gem::Requirement
89
49
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- segments:
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ segments:
94
55
  - 0
95
- version: "0"
96
- required_rubygems_version: !ruby/object:Gem::Requirement
56
+ hash: 268557802399120653
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
58
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- segments:
102
- - 0
103
- version: "0"
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
104
63
  requirements: []
105
-
106
64
  rubyforge_project:
107
- rubygems_version: 1.3.7
65
+ rubygems_version: 1.8.10
108
66
  signing_key:
109
67
  specification_version: 3
110
68
  summary: Allows creation of a whole graph of objects on the fly during testing
111
69
  test_files: []
112
-
data/Rakefile DELETED
@@ -1,75 +0,0 @@
1
-
2
-
3
- require "rubygems"
4
- require "rake/gempackagetask"
5
- require "rake/rdoctask"
6
-
7
- require "rspec"
8
- require 'rspec/core/rake_task'
9
- RSpec::Core::RakeTask.new
10
-
11
-
12
- task :default => ["spec"]
13
-
14
- # This builds the actual gem. For details of what all these options
15
- # mean, and other ones you can add, check the documentation here:
16
- #
17
- # http://rubygems.org/read/chapter/20
18
- #
19
- spec = Gem::Specification.new do |s|
20
-
21
- # Change these as appropriate
22
- s.name = "floor_manager"
23
- s.version = "0.1.1"
24
- s.summary = "Allows creation of a whole graph of objects on the fly during testing"
25
- s.author = "Kaspar Schiess"
26
- s.email = "kaspar.schiess@absurd.li"
27
- s.homepage = "http://github.com/kschiess/floor_manager"
28
-
29
- s.has_rdoc = true
30
- s.extra_rdoc_files = %w(README)
31
- s.rdoc_options = %w(--main README)
32
-
33
- # Add any extra files to include in the gem
34
- s.files = %w(LICENSE Rakefile README) + Dir.glob("{spec,lib/**/*}")
35
- s.require_paths = ["lib"]
36
-
37
- # If you want to depend on other gems, add them here, along with any
38
- # relevant versions
39
- s.add_dependency("activesupport", ">= 2.3.5")
40
-
41
- # If your tests use any gems, include them here
42
- s.add_development_dependency("rspec")
43
- s.add_development_dependency("flexmock")
44
- end
45
-
46
- # This task actually builds the gem. We also regenerate a static
47
- # .gemspec file, which is useful if something (i.e. GitHub) will
48
- # be automatically building a gem for this project. If you're not
49
- # using GitHub, edit as appropriate.
50
- #
51
- # To publish your gem online, install the 'gemcutter' gem; Read more
52
- # about that here: http://gemcutter.org/pages/gem_docs
53
- Rake::GemPackageTask.new(spec) do |pkg|
54
- pkg.gem_spec = spec
55
- end
56
-
57
- desc "Build the gemspec file #{spec.name}.gemspec"
58
- task :gemspec do
59
- file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
60
- File.open(file, "w") {|f| f << spec.to_ruby }
61
- end
62
-
63
- task :package => :gemspec
64
-
65
- # Generate documentation
66
- Rake::RDocTask.new do |rd|
67
- rd.main = "README"
68
- rd.rdoc_files.include("README", "lib/**/*.rb")
69
- rd.rdoc_dir = "rdoc"
70
- end
71
-
72
- desc 'Clear out RDoc and generated packages'
73
- task :clean => [:clobber_rdoc, :clobber_package] do
74
- rm "#{spec.name}.gemspec"
75
- end