lotion 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -3
- data/Guardfile +6 -0
- data/README.md +16 -2
- data/Rakefile +17 -4
- data/app/app_delegate.rb +5 -0
- data/lib/lotion.rb +33 -3
- data/lib/lotion/application.rb +33 -3
- data/lib/lotion/command.rb +45 -0
- data/lib/lotion/notifications.rb +20 -0
- data/lib/lotion/project.rb +20 -0
- data/lib/lotion/version.rb +1 -1
- data/lotion.gemspec +5 -2
- data/spec/helpers/matchers.rb +13 -0
- data/spec/helpers/subject.rb +12 -0
- data/spec/lotion/application_spec.rb +41 -8
- data/spec/lotion/command_spec.rb +33 -0
- data/spec/lotion/notifications_spec.rb +32 -0
- data/spec/lotion/project_spec.rb +5 -0
- metadata +71 -14
- data/lib/lotion/concern.rb +0 -22
- data/spec/lotion/concern_spec.rb +0 -46
- data/spec/lotion/files_spec.rb +0 -11
- data/spec/spec_helper.rb +0 -6
data/.gitignore
CHANGED
@@ -2,12 +2,14 @@
|
|
2
2
|
*.rbc
|
3
3
|
.bundle
|
4
4
|
.config
|
5
|
+
.dat*
|
6
|
+
.repl_history
|
5
7
|
.yardoc
|
8
|
+
build
|
9
|
+
coverage
|
10
|
+
doc
|
6
11
|
Gemfile.lock
|
7
12
|
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
13
|
lib/bundler/man
|
12
14
|
pkg
|
13
15
|
rdoc
|
@@ -15,3 +17,4 @@ spec/reports
|
|
15
17
|
test/tmp
|
16
18
|
test/version_tmp
|
17
19
|
tmp
|
20
|
+
_yardoc
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# Lotion
|
2
2
|
|
3
|
-
|
3
|
+
This library is a work in progress. Hit that "watch" button, son!
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
RubyMotion projects don't come with a Gemfile by default. Create one:
|
8
|
+
|
9
|
+
bundle init
|
10
|
+
|
7
11
|
Add this line to your application's Gemfile:
|
8
12
|
|
9
13
|
gem 'lotion'
|
@@ -16,9 +20,19 @@ Or install it yourself as:
|
|
16
20
|
|
17
21
|
$ gem install lotion
|
18
22
|
|
23
|
+
Finally, include Lotion in your project by adding the following to your Rakefile:
|
24
|
+
|
25
|
+
# after require 'motion/project'
|
26
|
+
require 'bundler'
|
27
|
+
Bundler.require
|
28
|
+
|
29
|
+
# inside app setup
|
30
|
+
app.files += Lotion::Dependencies( __FILE__ )
|
31
|
+
app.files_dependencies 'app/app_delegate.rb' => Lotion::Dependencies( __FILE__ )
|
32
|
+
|
19
33
|
## Usage
|
20
34
|
|
21
|
-
TODO
|
35
|
+
# TODO
|
22
36
|
|
23
37
|
## Contributing
|
24
38
|
|
data/Rakefile
CHANGED
@@ -1,5 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
$:.unshift '/Library/RubyMotion/lib'
|
3
|
+
$:.unshift 'lib'
|
4
|
+
|
5
|
+
require 'motion/project/template/ios'
|
6
|
+
require 'lotion/project'
|
7
|
+
require 'lotion/version'
|
8
|
+
|
9
|
+
require 'guard/motion'
|
10
|
+
require 'motion-stump'
|
4
11
|
|
5
|
-
|
12
|
+
Motion::Project::App.setup do |app|
|
13
|
+
app.name = 'TestSuite'
|
14
|
+
app.identifier = 'com.jeremyruppel.lotion.TestSuite'
|
15
|
+
app.version = Lotion::VERSION
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'bundler/gem_tasks'
|
data/app/app_delegate.rb
ADDED
data/lib/lotion.rb
CHANGED
@@ -1,9 +1,39 @@
|
|
1
1
|
require 'lotion/version'
|
2
|
+
require 'codependency'
|
2
3
|
|
3
4
|
module Lotion
|
5
|
+
class << self
|
4
6
|
|
5
|
-
|
7
|
+
##
|
8
|
+
# Public API for accessing the dependency graph. Checks to make sure
|
9
|
+
# we are in a RubyMotion Rakefile, then yields the graph to the block.
|
10
|
+
# Projects and libraries can use this to add themselves to the
|
11
|
+
# dependency graph search path.
|
12
|
+
def require
|
13
|
+
unless defined?( Motion::Project::Config )
|
14
|
+
raise <<-EOS
|
15
|
+
====================================================
|
16
|
+
This file must be required in a RubyMotion Rakefile.
|
17
|
+
====================================================
|
18
|
+
EOS
|
19
|
+
end
|
6
20
|
|
7
|
-
|
8
|
-
|
21
|
+
yield graph
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
##
|
27
|
+
# The shared dependency graph. Projects and libraries should access
|
28
|
+
# this through `Lotion.require`.
|
29
|
+
def graph
|
30
|
+
@graph ||= Codependency::Graph.new
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Add this library to the load path.
|
37
|
+
Lotion.require do |graph|
|
38
|
+
graph.path << File.expand_path( '..', __FILE__ )
|
9
39
|
end
|
data/lib/lotion/application.rb
CHANGED
@@ -1,9 +1,39 @@
|
|
1
|
+
#= require lotion/command
|
2
|
+
#= require lotion/notifications
|
3
|
+
|
1
4
|
module Lotion
|
2
5
|
module Application
|
3
|
-
|
6
|
+
include Lotion::Notifications
|
7
|
+
|
8
|
+
##
|
9
|
+
#
|
10
|
+
def screen
|
11
|
+
UIScreen.mainScreen
|
12
|
+
end
|
13
|
+
|
14
|
+
##
|
15
|
+
#
|
16
|
+
def window
|
17
|
+
@window ||= UIWindow.alloc.initWithFrame screen.bounds
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
#
|
22
|
+
def on( name, command )
|
23
|
+
notification_center.addObserver command,
|
24
|
+
selector:'call:', name:name, object:nil
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
#
|
29
|
+
def views
|
30
|
+
@views ||= Hash.new { |h, k| h[ k ] = k.alloc.init }
|
31
|
+
end
|
4
32
|
|
5
|
-
|
6
|
-
|
33
|
+
##
|
34
|
+
#
|
35
|
+
def application( application, didFinishLaunchingWithOptions:launchOptions )
|
36
|
+
notify 'application:startup', launchOptions
|
7
37
|
end
|
8
38
|
end
|
9
39
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#= require lotion/notifications
|
2
|
+
|
3
|
+
module Lotion
|
4
|
+
class Command
|
5
|
+
include Lotion::Notifications
|
6
|
+
|
7
|
+
##
|
8
|
+
#
|
9
|
+
def initialize( notification )
|
10
|
+
@notification = notification
|
11
|
+
end
|
12
|
+
attr_reader :notification
|
13
|
+
|
14
|
+
##
|
15
|
+
#
|
16
|
+
# TODO this could be a macro on Module
|
17
|
+
def call
|
18
|
+
raise NotImplementedError, 'Lotion::Command subclasses are expected to define #call'
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
#
|
23
|
+
def self.call( notification )
|
24
|
+
new( notification ).call
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# TODO delegate
|
29
|
+
def name
|
30
|
+
notification.name
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# TODO delegate
|
35
|
+
def object
|
36
|
+
notification.object
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# TODO delegate
|
41
|
+
def userInfo
|
42
|
+
notification.userInfo
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Lotion
|
2
|
+
module Notifications
|
3
|
+
|
4
|
+
##
|
5
|
+
# Publishes a notification named `name` to the default
|
6
|
+
# notification center. You can optionally pass an `info`
|
7
|
+
# object that will be available to any subscribers
|
8
|
+
# of the notification.
|
9
|
+
def notify( name, info=nil )
|
10
|
+
notification_center.postNotificationName name,
|
11
|
+
object:self, userInfo:info
|
12
|
+
end
|
13
|
+
|
14
|
+
##
|
15
|
+
# The shared notification center instance.
|
16
|
+
def notification_center
|
17
|
+
NSNotificationCenter.defaultCenter
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'lotion'
|
2
|
+
|
3
|
+
Lotion.require do |graph|
|
4
|
+
|
5
|
+
Motion::Project::App.setup do |app|
|
6
|
+
# Add the app dir to the search path
|
7
|
+
graph.path << './app'
|
8
|
+
|
9
|
+
# Scan the app dir for dependent files
|
10
|
+
graph.scan './app/**/*.rb'
|
11
|
+
|
12
|
+
# Scan the specs dir for dependent files
|
13
|
+
# FIXME add once https://github.com/HipByte/RubyMotion/pull/84 merges
|
14
|
+
graph.scan File.join( app.specs_dir, '**/*.rb' ) # if app.spec_mode
|
15
|
+
|
16
|
+
# Add the dependency graph to the app
|
17
|
+
app.files += graph.files
|
18
|
+
app.files_dependencies graph
|
19
|
+
end
|
20
|
+
end
|
data/lib/lotion/version.rb
CHANGED
data/lotion.gemspec
CHANGED
@@ -15,7 +15,10 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Lotion::VERSION
|
17
17
|
|
18
|
-
gem.add_dependency 'rake',
|
18
|
+
gem.add_dependency 'rake', '>= 0.9.2.2'
|
19
|
+
gem.add_dependency 'codependency', '>= 2.3.2'
|
19
20
|
|
20
|
-
gem.add_development_dependency '
|
21
|
+
gem.add_development_dependency 'guard-motion', '0.1.1'
|
22
|
+
gem.add_development_dependency 'rb-fsevent', '~> 0.9.1'
|
23
|
+
gem.add_development_dependency 'motion-stump', '0.2.0'
|
21
24
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Bacon
|
2
|
+
module Subject
|
3
|
+
|
4
|
+
##
|
5
|
+
# Syntactic sugar for creating an anonymous class in a before block.
|
6
|
+
def subject( base=Object, &block )
|
7
|
+
block_given? ? before { @subject = Class.new( base, &block ).new } : @subject
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Bacon::Context.send :include, Bacon::Subject
|
@@ -1,16 +1,49 @@
|
|
1
|
-
require
|
1
|
+
#= require lotion/application
|
2
2
|
|
3
3
|
describe Lotion::Application do
|
4
|
-
|
4
|
+
|
5
|
+
subject do
|
5
6
|
include Lotion::Application
|
6
|
-
end
|
7
|
+
end
|
8
|
+
before do
|
9
|
+
@center = subject.notification_center
|
10
|
+
end
|
11
|
+
it 'includes the correct concerns' do
|
12
|
+
subject.should be_a( Lotion::Notifications )
|
13
|
+
end
|
14
|
+
it 'defines #screen' do
|
15
|
+
subject.screen.should == UIScreen.mainScreen
|
16
|
+
end
|
17
|
+
it 'defines #window' do
|
18
|
+
subject.window.should be_a( UIWindow )
|
19
|
+
end
|
20
|
+
it 'defined #views' do
|
21
|
+
subject.views.should be_a( Hash )
|
22
|
+
end
|
23
|
+
it 'notifies after application startup' do
|
24
|
+
options = { :foo => 'bar' }
|
25
|
+
|
26
|
+
@center.mock! 'postNotificationName:object:userInfo:' do |name, from, info|
|
27
|
+
name.should == 'application:startup'
|
28
|
+
from.should == subject
|
29
|
+
info.should == options
|
30
|
+
end
|
7
31
|
|
8
|
-
|
32
|
+
subject.application( nil, didFinishLaunchingWithOptions:options ).should == true
|
33
|
+
end
|
34
|
+
it 'responds to #on' do
|
35
|
+
subject.should.respond_to :on
|
36
|
+
end
|
37
|
+
it 'attaches commands to notifications' do
|
38
|
+
command = stub :call, :return => true
|
9
39
|
|
10
|
-
|
11
|
-
|
40
|
+
@center.mock! 'addObserver:selector:name:object:' do |klass, selector, name, object|
|
41
|
+
klass.should == command
|
42
|
+
selector.should == 'call:'
|
43
|
+
name.should == 'foo'
|
44
|
+
object.should == nil
|
45
|
+
end
|
12
46
|
|
13
|
-
|
14
|
-
subject.application( application, options ).should == true
|
47
|
+
subject.on 'foo', command
|
15
48
|
end
|
16
49
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
describe Lotion::Command do
|
2
|
+
|
3
|
+
before do
|
4
|
+
# TODO this mock syntax blows.
|
5
|
+
@notification = stub( :name, :return => 'foo' )
|
6
|
+
@command = Class.new( Lotion::Command ) do
|
7
|
+
def call; name.reverse; end
|
8
|
+
end
|
9
|
+
@subject = @command.new @notification
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'includes the correct concerns' do
|
13
|
+
@subject.should be_a( Lotion::Notifications )
|
14
|
+
end
|
15
|
+
it 'responds to #notification' do
|
16
|
+
@subject.should.respond_to :notification
|
17
|
+
end
|
18
|
+
it 'exposes the correct notification methods' do
|
19
|
+
@subject.notification.mock! :name, :return => 'foo'
|
20
|
+
@subject.notification.mock! :object, :return => 'bar'
|
21
|
+
@subject.notification.mock! :userInfo, :return => 'baz'
|
22
|
+
|
23
|
+
@subject.name.should == 'foo'
|
24
|
+
@subject.object.should == 'bar'
|
25
|
+
@subject.userInfo.should == 'baz'
|
26
|
+
end
|
27
|
+
it 'treats .call as a factory method' do
|
28
|
+
@command.call( @notification ).should == 'oof'
|
29
|
+
end
|
30
|
+
it 'expects subclasses to override #call' do
|
31
|
+
lambda { Lotion::Command.new( @notification ).call }.should.raise( NotImplementedError )
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
describe Lotion::Notifications do
|
2
|
+
|
3
|
+
subject do
|
4
|
+
include Lotion::Notifications
|
5
|
+
end
|
6
|
+
before do
|
7
|
+
@center = subject.notification_center
|
8
|
+
@method = 'postNotificationName:object:userInfo'
|
9
|
+
end
|
10
|
+
it 'has the correct notification center' do
|
11
|
+
subject.notification_center.should == NSNotificationCenter.defaultCenter
|
12
|
+
end
|
13
|
+
it 'responds to #notify' do
|
14
|
+
subject.should.respond_to :notify
|
15
|
+
end
|
16
|
+
it 'sends a notification to the notification center' do
|
17
|
+
@center.mock! @method do |name, from, info|
|
18
|
+
name.should == 'foo'
|
19
|
+
from.should == subject
|
20
|
+
info.should == nil
|
21
|
+
end
|
22
|
+
subject.notify 'foo'
|
23
|
+
end
|
24
|
+
it 'passes along the user info hash to the notification center' do
|
25
|
+
@center.mock! @method do |name, from, info|
|
26
|
+
name.should == 'foo'
|
27
|
+
from.should == subject
|
28
|
+
info.should == { :foo => 'bar' }
|
29
|
+
end
|
30
|
+
subject.notify 'foo', :foo => 'bar'
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -28,21 +28,69 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 0.9.2.2
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: codependency
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 2.
|
38
|
-
type: :
|
37
|
+
version: 2.3.2
|
38
|
+
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 2.
|
45
|
+
version: 2.3.2
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: guard-motion
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - '='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.1.1
|
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: 0.1.1
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rb-fsevent
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.9.1
|
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: 0.9.1
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: motion-stump
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - '='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.2.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: 0.2.0
|
46
94
|
description: Silky smooth helpers for RubyMotion
|
47
95
|
email:
|
48
96
|
- jeremy.ruppel@gmail.com
|
@@ -52,18 +100,24 @@ extra_rdoc_files: []
|
|
52
100
|
files:
|
53
101
|
- .gitignore
|
54
102
|
- Gemfile
|
103
|
+
- Guardfile
|
55
104
|
- LICENSE
|
56
105
|
- README.md
|
57
106
|
- Rakefile
|
107
|
+
- app/app_delegate.rb
|
58
108
|
- lib/lotion.rb
|
59
109
|
- lib/lotion/application.rb
|
60
|
-
- lib/lotion/
|
110
|
+
- lib/lotion/command.rb
|
111
|
+
- lib/lotion/notifications.rb
|
112
|
+
- lib/lotion/project.rb
|
61
113
|
- lib/lotion/version.rb
|
62
114
|
- lotion.gemspec
|
115
|
+
- spec/helpers/matchers.rb
|
116
|
+
- spec/helpers/subject.rb
|
63
117
|
- spec/lotion/application_spec.rb
|
64
|
-
- spec/lotion/
|
65
|
-
- spec/lotion/
|
66
|
-
- spec/
|
118
|
+
- spec/lotion/command_spec.rb
|
119
|
+
- spec/lotion/notifications_spec.rb
|
120
|
+
- spec/lotion/project_spec.rb
|
67
121
|
homepage: ''
|
68
122
|
licenses: []
|
69
123
|
post_install_message:
|
@@ -84,12 +138,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
138
|
version: '0'
|
85
139
|
requirements: []
|
86
140
|
rubyforge_project:
|
87
|
-
rubygems_version: 1.8.
|
141
|
+
rubygems_version: 1.8.23
|
88
142
|
signing_key:
|
89
143
|
specification_version: 3
|
90
144
|
summary: Silky smooth helpers for RubyMotion
|
91
145
|
test_files:
|
146
|
+
- spec/helpers/matchers.rb
|
147
|
+
- spec/helpers/subject.rb
|
92
148
|
- spec/lotion/application_spec.rb
|
93
|
-
- spec/lotion/
|
94
|
-
- spec/lotion/
|
95
|
-
- spec/
|
149
|
+
- spec/lotion/command_spec.rb
|
150
|
+
- spec/lotion/notifications_spec.rb
|
151
|
+
- spec/lotion/project_spec.rb
|
152
|
+
has_rdoc:
|
data/lib/lotion/concern.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
module Lotion
|
2
|
-
module Concern
|
3
|
-
|
4
|
-
def self.extended( base )
|
5
|
-
base.instance_exec do
|
6
|
-
|
7
|
-
def included( base=nil, &block )
|
8
|
-
if block_given?
|
9
|
-
@_included_block = block
|
10
|
-
else
|
11
|
-
if const_defined? :ClassMethods
|
12
|
-
base.extend const_get( :ClassMethods )
|
13
|
-
end
|
14
|
-
if @_included_block
|
15
|
-
base.class_eval &@_included_block
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/spec/lotion/concern_spec.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lotion::Concern do
|
4
|
-
|
5
|
-
let( :concern ){ Module.new do
|
6
|
-
extend Lotion::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
$woot = self
|
10
|
-
end
|
11
|
-
|
12
|
-
def foo
|
13
|
-
'foo!'
|
14
|
-
end
|
15
|
-
|
16
|
-
module ClassMethods
|
17
|
-
|
18
|
-
def bar
|
19
|
-
'bar!'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end }
|
23
|
-
|
24
|
-
let( :klass ){ Class.new }
|
25
|
-
|
26
|
-
before do
|
27
|
-
klass.send :include, concern
|
28
|
-
end
|
29
|
-
|
30
|
-
describe 'class methods' do
|
31
|
-
subject { klass }
|
32
|
-
it { should respond_to( :bar ) }
|
33
|
-
its( :bar ){ should eq( 'bar!' ) }
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'instance methods' do
|
37
|
-
subject { klass.new }
|
38
|
-
it { should respond_to( :foo ) }
|
39
|
-
its( :foo ){ should eq( 'foo!' ) }
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'included block' do
|
43
|
-
subject { $woot }
|
44
|
-
it { should eq( klass ) }
|
45
|
-
end
|
46
|
-
end
|
data/spec/lotion/files_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Lotion do
|
4
|
-
subject { Lotion::FILES }
|
5
|
-
|
6
|
-
let( :path ){ File.expand_path( File.join( __FILE__, '../../..' ) ) }
|
7
|
-
|
8
|
-
it { should include( "#{path}/lib/lotion.rb" ) }
|
9
|
-
it { should include( "#{path}/lib/lotion/concern.rb" ) }
|
10
|
-
it { should include( "#{path}/lib/lotion/version.rb" ) }
|
11
|
-
end
|