imperator-ext 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ class Commander
4
+ extend Imperator::Command::MethodFactory
5
+ end
6
+
7
+ class UpdateCommand < Imperator::Command
8
+ end
9
+
10
+ module Landlord
11
+ module Account
12
+ class PayCommand < Imperator::Command
13
+ end
14
+ end
15
+ end
16
+
17
+ module Landlord
18
+ module AccountController
19
+ class Action # imperator action
20
+ end
21
+
22
+ class Pay < Action # imperator action
23
+ extend Imperator::Command::MethodFactory
24
+
25
+ command_method :pay, object: 'hello', ns: self.parent
26
+ end
27
+ end
28
+ end
29
+
30
+ describe Imperator::Command::MethodFactory do
31
+ subject { clazz.new }
32
+
33
+ let(:clazz) { Commander }
34
+
35
+ describe '.command_method(command)' do
36
+ before do
37
+ clazz.command_method :update
38
+ end
39
+
40
+ its(:update_command) { should be_a(Imperator::Command) }
41
+ end
42
+
43
+ describe '.command_method(command, options)' do
44
+ before do
45
+ clazz.command_method :create, object: 'hello'
46
+ end
47
+
48
+ its(:update_command) { should be_a(Imperator::Command) }
49
+ end
50
+
51
+ describe 'with namespace :ns option' do
52
+ before do
53
+ clazz.command_method :pay, object: 'hello', ns: Landlord::Account
54
+ end
55
+
56
+ specify { subject.pay_command.class.to_s.should == 'Landlord::Account::PayCommand' }
57
+ end
58
+
59
+ describe 'with namespace :ns option as self.parent' do
60
+ subject { Landlord::AccountController::Pay }
61
+
62
+ specify { subject.new.pay_command.class.to_s.should == 'Landlord::Account::PayCommand' }
63
+ end
64
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+ require 'imperator-ext/shared_ex/rest_helper_ex'
3
+
4
+ describe Imperator::Command::RestHelper do
5
+
6
+ it_behaves_like "a rest helper"
7
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'imperator-ext/shared_ex/rest_helper_ex'
3
+
4
+ describe Imperator::Command::Rest do
5
+ subject { Imperator::Command::Rest.new }
6
+
7
+ it_behaves_like "a rest helper"
8
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'imperator-ext/shared_ex/attribute_helper_ex'
3
+
4
+ describe Imperator::Mongoid::Command do
5
+ subject { clazz }
6
+ let(:clazz) { Imperator::Mongoid::Command }
7
+
8
+ it_behaves_like 'an attribute helper'
9
+ it_behaves_like 'a mongoid rest command'
10
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'imperator-ext/shared_ex/rest_helper_ex'
3
+
4
+ describe Imperator::Mongoid::Command::Rest do
5
+ subject { Imperator::Mongoid::Command::Rest.new }
6
+
7
+ it_behaves_like "a rest helper"
8
+ end
@@ -0,0 +1,54 @@
1
+ # require 'imperator/command/macros'
2
+
3
+ class Person
4
+ include Mongoid::Document
5
+
6
+ field :name
7
+ field :title
8
+ field :age, type: Integer
9
+ end
10
+
11
+ class UpdatePersonCommand < Imperator::Mongoid::Command
12
+ attributes_for Person
13
+ end
14
+
15
+ class ShowPersonCommand < Imperator::Mongoid::Command
16
+ attributes_for Person, except: :age
17
+ end
18
+
19
+ shared_examples 'a mongoid rest command' do
20
+ context 'update' do
21
+ before :all do
22
+ Imperator::Command::ClassFactory.use do |factory|
23
+ # factory.default_rest_class = Imperator::Mongoid::Command::Rest
24
+ factory.rest_command :create, Person, :auto_attributes => true do
25
+ def hello
26
+ "hello"
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ context 'CreatePersonCommand created' do
33
+ let(:command) { CreatePersonCommand.new }
34
+
35
+ specify { CreatePersonCommand.superclass.should == Imperator::Mongoid::Command::Rest }
36
+ specify { command.hello.should == "hello" }
37
+ end
38
+ end
39
+ end
40
+
41
+ shared_examples "an attribute helper" do
42
+ describe 'includes all Mongoid model fields' do
43
+ subject { UpdatePersonCommand.attribute_set }
44
+
45
+ its(:names) { should include :name, :title, :age }
46
+ end
47
+
48
+ describe 'includes all Mongoid model fields :except age' do
49
+ subject { ShowPersonCommand.attribute_set }
50
+
51
+ its(:names) { should include :name, :title }
52
+ its(:names) { should_not include :age }
53
+ end
54
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ class Tenant
2
+ include Mongoid::Document
3
+
4
+ field :name
5
+ field :title
6
+ field :age, type: Integer
7
+ end
8
+
9
+ class UpdateTenantCommand < Imperator::Command::Rest
10
+ create_action do
11
+ end
12
+ end
13
+
14
+ shared_examples "a rest helper" do
15
+ end
@@ -0,0 +1,11 @@
1
+ require 'rspec'
2
+ require 'mongoid'
3
+ require 'imperator-ext'
4
+
5
+ # Requires supporting files with custom matchers and macros, etc,
6
+ # in ./support/ and its subdirectories.
7
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
8
+
9
+ RSpec.configure do |config|
10
+
11
+ end
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: imperator-ext
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kristian Mandrup
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: virtus
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: imperator
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 2.8.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.8.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rdoc
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '3.12'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '3.12'
78
+ - !ruby/object:Gem::Dependency
79
+ name: bundler
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 1.0.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.0.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: jeweler
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.8.4
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.8.4
110
+ - !ruby/object:Gem::Dependency
111
+ name: simplecov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0.5'
126
+ description: Factories, Macros, REST helpers and Mongoid integration
127
+ email: kmandrup@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files:
131
+ - LICENSE.txt
132
+ - README.md
133
+ files:
134
+ - .document
135
+ - .rspec
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - VERSION
142
+ - docs/Design.md
143
+ - imperator-ext.gemspec
144
+ - lib/imperator-ext.rb
145
+ - lib/imperator/command-ext.rb
146
+ - lib/imperator/command/class_factory.rb
147
+ - lib/imperator/command/macros.rb
148
+ - lib/imperator/command/method_factory.rb
149
+ - lib/imperator/command/rest.rb
150
+ - lib/imperator/command/rest_helper.rb
151
+ - lib/imperator/factory.rb
152
+ - lib/imperator/mongoid.rb
153
+ - lib/imperator/mongoid/attribute_helper.rb
154
+ - lib/imperator/mongoid/command.rb
155
+ - lib/imperator/mongoid/command/rest.rb
156
+ - spec/imperator-ext/command/class_factory_spec.rb
157
+ - spec/imperator-ext/command/macros_spec.rb
158
+ - spec/imperator-ext/command/method_factory_spec.rb
159
+ - spec/imperator-ext/command/rest_helper_spec.rb
160
+ - spec/imperator-ext/command/rest_spec.rb
161
+ - spec/imperator-ext/mongoid/command_spec.rb
162
+ - spec/imperator-ext/mongoid/rest_command_spec.rb
163
+ - spec/imperator-ext/shared_ex/attribute_helper_ex.rb
164
+ - spec/imperator-ext/shared_ex/command_ex.rb
165
+ - spec/imperator-ext/shared_ex/rest_helper_ex.rb
166
+ - spec/spec_helper.rb
167
+ homepage: http://github.com/kristianmandrup/imperator-ext
168
+ licenses:
169
+ - MIT
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ segments:
181
+ - 0
182
+ hash: -3288576765044501661
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
184
+ none: false
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project:
191
+ rubygems_version: 1.8.24
192
+ signing_key:
193
+ specification_version: 3
194
+ summary: Various extensions for Imperator
195
+ test_files: []