lotion 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|