pickle 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  pkg
2
2
  doc/*
3
3
  .garlic
4
+ webrat*
5
+ cucumber_test_app
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ == 0.2.6 - 5 Apr 2010
2
+
3
+ * 2 improvements
4
+ * running specs is now doable without being in a rails app - just do 'rake spec'
5
+ * running features is more straightforward, 'rake cucumber' then follow the instructions
6
+
7
+
1
8
  == 0.2.5 - 17 Mar 2010
2
9
 
3
10
  * 2 improvements
data/README.rdoc CHANGED
@@ -45,18 +45,15 @@ It's tested against all stable branches of 2.x rails, and edge, with the latest
45
45
 
46
46
  == Run the tests
47
47
 
48
- You can run the test with <b>garlic</b> http://github.com/ianwhite/garlic, which tests against different versions of rails.
49
-
50
- Or, you can make a test rails app:
48
+ To run the specs do:
51
49
 
52
- cd ~/wherever_you_work
53
- rails pickle_test_project; cd pickle_test_project
54
- script/generate rspec
55
- script/generate cucumber --rspec
56
- script/plugin install git://github.com/ianwhite/pickle.git
57
- cd vendor/plugins/pickle
58
50
  rake spec
59
- cucumber features
51
+
52
+ To run the features do:
53
+
54
+ rake cucumber
55
+
56
+ The first time you do this, instructions will appear about how to set up a test rails app.
60
57
 
61
58
  == Contributors
62
59
 
data/Rakefile CHANGED
@@ -4,6 +4,7 @@ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base) and !$LOAD_PATH.includ
4
4
 
5
5
  require 'spec/rake/spectask'
6
6
  require 'spec/rake/verify_rcov'
7
+ require 'cucumber/rake/task'
7
8
 
8
9
  $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib'
9
10
  require 'pickle/version'
@@ -29,61 +30,41 @@ end
29
30
  namespace :rcov do
30
31
  desc "Verify RCov threshold for #{PluginName}"
31
32
  RCov::VerifyTask.new(:verify => :rcov) do |t|
32
- t.threshold = 100.0
33
+ t.threshold = 99.23
33
34
  t.index_html = File.join(File.dirname(__FILE__), 'doc/coverage/index.html')
34
35
  end
35
36
  end
36
37
 
37
- # cucumber features require an enclosing rails app
38
- plugins_base = File.expand_path(File.join(File.dirname(__FILE__), '..'))
39
- cucumber_base = File.join(plugins_base, 'cucumber/lib')
40
- if File.exists?(cucumber_base) && plugins_base =~ /\/vendor\/plugins$/ # if we're in rails app
41
- $:.unshift(cucumber_base)
42
- require 'cucumber/rake/task'
43
-
44
- desc "Run features for #{PluginName} (progress)"
45
- Cucumber::Rake::Task.new(:features) do |t|
46
- t.fork = true
47
- t.cucumber_opts = ['--format', 'progress', '--require', 'features']
48
- end
49
-
50
- desc "Run features for #{PluginName} (full output)"
51
- namespace :features do
52
- Cucumber::Rake::Task.new(:full) do |t|
53
- t.cucumber_opts = ['--format', 'pretty', '--require', 'features']
54
- end
55
- end
38
+ desc "Run features for #{PluginName} (progress)"
39
+ Cucumber::Rake::Task.new(:cucumber => [:cucumber_test_app]) do |t|
40
+ t.cucumber_opts = ['--format', 'pretty', '--require', 'features']
56
41
  end
57
42
 
58
- # the following optional tasks are for CI, gems and doc building
59
- begin
60
- require 'hanna/rdoctask'
61
- require 'garlic/tasks'
62
- require 'grancher/task'
43
+ desc "setup a rails app for running cucumber"
44
+ file "cucumber_test_app" do
45
+ raise <<-EOD
46
+
47
+ ** Please setup a test rails app in cucumber_test_app **
48
+
49
+ Until this is automated, do something like:
63
50
 
64
- task :cruise => ['garlic:all', 'doc:publish']
51
+ (make sure cucumber, cucumber-rails, rspec, rspec-rails, machinist, and factory_girl are all installed as gems)
65
52
 
66
- Rake::RDocTask.new(:doc) do |d|
67
- d.options << '--all'
68
- d.rdoc_dir = 'doc'
69
- d.main = 'README.rdoc'
70
- d.title = "#{PluginName} API docs"
71
- d.rdoc_files.include('README.rdoc', 'History.txt', 'License.txt', 'Todo.txt', 'lib/**/*.rb')
72
- end
53
+ rails cucumber_test_app
54
+ cd cucumber_test_app
55
+ script/generate rspec
56
+ script/generate cucumber
57
+ cd vendor/plugins
58
+ ln -s ../../.. pickle
59
+ cd ../../..
60
+
61
+ Then run
73
62
 
74
- namespace :doc do
75
- task :publish => :doc do
76
- Rake::Task['doc:push'].invoke unless uptodate?('.git/refs/heads/gh-pages', 'doc')
77
- end
78
-
79
- Grancher::Task.new(:push) do |g|
80
- g.keep_all
81
- g.directory 'doc', 'doc'
82
- g.branch = 'gh-pages'
83
- g.push_to = 'origin'
84
- end
85
- end
86
- rescue LoadError
63
+ rake cucumber
64
+
65
+ ** thanks! **
66
+
67
+ EOD
87
68
  end
88
69
 
89
70
  begin
data/Todo.txt CHANGED
@@ -1,4 +1,3 @@
1
1
  * add 'scope' steps see http://gist.github.com/239570
2
2
  * cleanup path_to_pickle and paths.rb (maybe have poly_pickle_path with same semantics as polymorphic_path, but accepting pickle refs)
3
- * fix problem with save_and_open_emails
4
3
  * Translations
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.2.6
@@ -5,7 +5,7 @@
5
5
  # files.
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "cucumber"
8
- require File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
8
+ require File.expand_path(File.dirname(__FILE__) + '/../../cucumber_test_app/config/environment')
9
9
 
10
10
  require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
11
11
  require 'cucumber/rails/world'
@@ -11,10 +11,6 @@ module Pickle
11
11
  class Adapter
12
12
  attr_reader :name, :klass
13
13
 
14
- def self.factories
15
- raise NotImplementedError, "return an array of factory adapter objects"
16
- end
17
-
18
14
  def create(attrs = {})
19
15
  raise NotImplementedError, "create and return an object with the given attributes"
20
16
  end
@@ -22,12 +18,24 @@ module Pickle
22
18
  cattr_writer :model_classes
23
19
  self.model_classes = nil
24
20
 
25
- def self.model_classes
26
- # remove abstract, framework, and non-table classes
27
- @@model_classes ||= ::ActiveRecord::Base.send(:subclasses).reject do |klass|
28
- klass.abstract_class? || !klass.table_exists? ||
29
- (defined?(CGI::Session::ActiveRecordStore::Session) && klass == CGI::Session::ActiveRecordStore::Session) ||
30
- (defined?(::ActiveRecord::SessionStore::Session) && klass == ::ActiveRecord::SessionStore::Session)
21
+ class << self
22
+ def factories
23
+ raise NotImplementedError, "return an array of factory adapter objects"
24
+ end
25
+
26
+ def model_classes
27
+ @@model_classes ||= ::ActiveRecord::Base.send(:subclasses).select {|klass| suitable_for_pickle?(klass)}
28
+ end
29
+
30
+ # return true if a klass should be used by pickle
31
+ def suitable_for_pickle?(klass)
32
+ !klass.abstract_class? && klass.table_exists? && !framework_class?(klass)
33
+ end
34
+
35
+ # return true if the passed class is a special framework class
36
+ def framework_class?(klass)
37
+ ((defined?(CGI::Session::ActiveRecordStore::Session) && klass == CGI::Session::ActiveRecordStore::Session)) ||
38
+ ((defined?(::ActiveRecord::SessionStore::Session) && klass == ::ActiveRecord::SessionStore::Session))
31
39
  end
32
40
  end
33
41
 
data/lib/pickle/email.rb CHANGED
@@ -34,7 +34,7 @@ module Pickle
34
34
  # web browser if on OS X. (depends on webrat)
35
35
  def save_and_open_emails
36
36
  emails_to_open = @emails || emails
37
- filename = "#{RAILS_ROOT}/tmp/webrat-email-#{Time.now.to_i}.html"
37
+ filename = "webrat-email-#{Time.now.to_i}.html"
38
38
  File.open(filename, "w") do |f|
39
39
  emails_to_open.each_with_index do |e, i|
40
40
  f.write "<h1>Email #{i+1}</h1><pre>#{e}</pre><hr />"
data/pickle.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{pickle}
8
- s.version = "0.2.5"
8
+ s.version = "0.2.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ian White"]
12
- s.date = %q{2010-03-17}
12
+ s.date = %q{2010-04-05}
13
13
  s.description = %q{Easy model creation and reference in your cucumber features}
14
14
  s.email = %q{ian.w.white@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -46,7 +46,6 @@ Gem::Specification.new do |s|
46
46
  "features/support/paths.rb",
47
47
  "features/support/pickle.rb",
48
48
  "features/support/pickle_app.rb",
49
- "garlic.rb",
50
49
  "init.rb",
51
50
  "lib/pickle.rb",
52
51
  "lib/pickle/adapter.rb",
@@ -69,15 +68,15 @@ Gem::Specification.new do |s|
69
68
  "rails_generators/pickle/templates/paths.rb",
70
69
  "rails_generators/pickle/templates/pickle.rb",
71
70
  "rails_generators/pickle/templates/pickle_steps.rb",
72
- "spec/lib/pickle_adapter_spec.rb",
73
- "spec/lib/pickle_config_spec.rb",
74
- "spec/lib/pickle_email_parser_spec.rb",
75
- "spec/lib/pickle_email_spec.rb",
76
- "spec/lib/pickle_parser_matchers_spec.rb",
77
- "spec/lib/pickle_parser_spec.rb",
78
- "spec/lib/pickle_path_spec.rb",
79
- "spec/lib/pickle_session_spec.rb",
80
- "spec/lib/pickle_spec.rb",
71
+ "spec/pickle/adapter_spec.rb",
72
+ "spec/pickle/config_spec.rb",
73
+ "spec/pickle/email/parser_spec.rb",
74
+ "spec/pickle/email_spec.rb",
75
+ "spec/pickle/parser/matchers_spec.rb",
76
+ "spec/pickle/parser_spec.rb",
77
+ "spec/pickle/path_spec.rb",
78
+ "spec/pickle/session_spec.rb",
79
+ "spec/pickle_spec.rb",
81
80
  "spec/spec_helper.rb"
82
81
  ]
83
82
  s.homepage = %q{http://github.com/ianwhite/pickle/tree}
@@ -86,15 +85,15 @@ Gem::Specification.new do |s|
86
85
  s.rubygems_version = %q{1.3.6}
87
86
  s.summary = %q{Easy model creation and reference in your cucumber features}
88
87
  s.test_files = [
89
- "spec/lib/pickle_adapter_spec.rb",
90
- "spec/lib/pickle_config_spec.rb",
91
- "spec/lib/pickle_email_parser_spec.rb",
92
- "spec/lib/pickle_email_spec.rb",
93
- "spec/lib/pickle_parser_matchers_spec.rb",
94
- "spec/lib/pickle_parser_spec.rb",
95
- "spec/lib/pickle_path_spec.rb",
96
- "spec/lib/pickle_session_spec.rb",
97
- "spec/lib/pickle_spec.rb",
88
+ "spec/pickle/adapter_spec.rb",
89
+ "spec/pickle/config_spec.rb",
90
+ "spec/pickle/email/parser_spec.rb",
91
+ "spec/pickle/email_spec.rb",
92
+ "spec/pickle/parser/matchers_spec.rb",
93
+ "spec/pickle/parser_spec.rb",
94
+ "spec/pickle/path_spec.rb",
95
+ "spec/pickle/session_spec.rb",
96
+ "spec/pickle_spec.rb",
98
97
  "spec/spec_helper.rb"
99
98
  ]
100
99
 
@@ -1,4 +1,8 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ require 'activerecord'
4
+ require 'factory_girl'
5
+ require 'machinist/active_record'
2
6
 
3
7
  describe Pickle::Adapter do
4
8
  it ".factories should raise NotImplementedError" do
@@ -9,32 +13,47 @@ describe Pickle::Adapter do
9
13
  lambda{ Pickle::Adapter.new.create }.should raise_error(NotImplementedError)
10
14
  end
11
15
 
12
- describe ".model_classes" do
16
+ describe ".suitable_for_pickle?(klass)" do
17
+ let :klass do
18
+ mock('Class', :abstract_class? => false, :table_exists? => true)
19
+ end
20
+
13
21
  before do
14
- Pickle::Adapter.model_classes = nil
22
+ Pickle::Adapter.stub!(:framework_class?).and_return(false)
15
23
  end
16
24
 
17
- if defined?(CGI::Session::ActiveRecordStore::Session)
18
- it "should not include CGI::Session::ActiveRecordStore::Session" do
19
- Pickle::Adapter.model_classes.should_not include(CGI::Session::ActiveRecordStore)
20
- end
25
+ it "a non abstract class that has a table, and is not a framework class, is suitable_for_pickle" do
26
+ Pickle::Adapter.should be_suitable_for_pickle(klass)
21
27
  end
22
-
23
- if defined?(ActiveRecord::SessionStore::Session)
24
- it "should not include ActiveRecord::SessionStore::Session" do
25
- Pickle::Adapter.model_classes.should_not include(ActiveRecord::SessionStore::Session)
26
- end
28
+
29
+ it "an abtract_class is not suitable_for_pickle" do
30
+ klass.stub!(:abstract_class?).and_return(true)
31
+ Pickle::Adapter.should_not be_suitable_for_pickle(klass)
27
32
  end
33
+
34
+ it "a class with no table is not suitable_for_pickle" do
35
+ klass.stub!(:table_exists?).and_return(false)
36
+ Pickle::Adapter.should_not be_suitable_for_pickle(klass)
37
+ end
38
+
39
+ it "an frame_work class is not suitable_for_pickle" do
40
+ Pickle::Adapter.should_receive(:framework_class?).with(klass).and_return(true)
41
+ Pickle::Adapter.should_not be_suitable_for_pickle(klass)
42
+ end
43
+ end
28
44
 
29
- it "should not include classes without a table" do
30
- klass = Class.new(ActiveRecord::Base)
31
- Pickle::Adapter.model_classes.should_not include(klass)
45
+ describe ".model_classes" do
46
+ before do
47
+ Pickle::Adapter.model_classes = nil
32
48
  end
33
-
34
- it "should not include abstract classes without a table" do
35
- klass = Class.new(ActiveRecord::Base)
36
- klass.abstract_class = true
37
- Pickle::Adapter.model_classes.should_not include(klass)
49
+
50
+ it "should only include #suitable_for_pickle classes" do
51
+ klass1 = Class.new(ActiveRecord::Base)
52
+ klass2 = Class.new(ActiveRecord::Base)
53
+ Pickle::Adapter.should_receive(:suitable_for_pickle?).with(klass1).and_return(true)
54
+ Pickle::Adapter.should_receive(:suitable_for_pickle?).with(klass2).and_return(false)
55
+ Pickle::Adapter.model_classes.should include(klass1)
56
+ Pickle::Adapter.model_classes.should_not include(klass2)
38
57
  end
39
58
  end
40
59
 
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  describe Pickle::Config do
4
4
  before do
@@ -1,4 +1,6 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ require 'pickle/email/parser'
2
4
 
3
5
  describe Pickle::Email::Parser do
4
6
  include Pickle::Parser::Matchers
@@ -46,4 +48,4 @@ describe Pickle::Email::Parser do
46
48
  match[1].should == 'last'
47
49
  end
48
50
  end
49
- end
51
+ end
@@ -1,4 +1,8 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ require 'pickle/email'
4
+ require 'pickle/email/parser'
5
+ require 'actionmailer'
2
6
 
3
7
  describe Pickle::Email do
4
8
  include Pickle::Session
@@ -120,11 +124,11 @@ describe Pickle::Email do
120
124
 
121
125
  it "should create a file in Rails/tmp with the emails in it" do
122
126
  save_and_open_emails
123
- File.read("#{RAILS_ROOT}/tmp/webrat-email-#{@now.to_i}.html").should == "<h1>Email 1</h1><pre>Contents of Email 1</pre><hr />"
127
+ File.read("webrat-email-#{@now.to_i}.html").should == "<h1>Email 1</h1><pre>Contents of Email 1</pre><hr />"
124
128
  end
125
129
 
126
130
  it "should call open_in_browser on created tmp file" do
127
- should_receive(:open_in_browser).with("#{RAILS_ROOT}/tmp/webrat-email-#{@now.to_i}.html")
131
+ should_receive(:open_in_browser).with("webrat-email-#{@now.to_i}.html")
128
132
  save_and_open_emails
129
133
  end
130
134
  end
@@ -150,4 +154,4 @@ describe Pickle::Email do
150
154
  click_first_link_in_email(@email1)
151
155
  end
152
156
  end
153
- end
157
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
3
  describe Pickle::Parser::Matchers do
4
4
  include Pickle::Parser::Matchers
@@ -0,0 +1,161 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Pickle::Parser do
4
+ before do
5
+ @parser = Pickle::Parser.new(:config => Pickle::Config.new)
6
+ end
7
+
8
+ it "should raise error when created with no config" do
9
+ lambda{ Pickle::Parser.new }.should raise_error(ArgumentError)
10
+ end
11
+
12
+ describe "when a 'user' factory exists in config" do
13
+ before do
14
+ @parser.config.stub(:factories).and_return('user' => mock('User'))
15
+ end
16
+
17
+ describe 'misc regexps' do
18
+ describe '/^#{capture_model} exists/' do
19
+ before do
20
+ @regexp = /^(#{@parser.capture_model}) exists$/
21
+ end
22
+
23
+ it "should match 'a user exists'" do
24
+ 'a user exists'.should match(@regexp)
25
+ end
26
+
27
+ it "should caputure 'a user' from 'a user exists'" do
28
+ 'a user exists'.match(@regexp)[1].should == 'a user'
29
+ end
30
+ end
31
+ end
32
+
33
+ describe '#parse_field' do
34
+ it "should return {'a' => 'b'} for 'a: \"b\"'" do
35
+ @parser.parse_field('a: "b"').should == {'a' => 'b'}
36
+ end
37
+
38
+ it "should raise error for invalid field 'a : b'" do
39
+ lambda { @parser.parse_field('a : b') }.should raise_error(ArgumentError)
40
+ end
41
+ end
42
+
43
+ describe '#parse_fields' do
44
+ it 'should return {} for blank argument' do
45
+ @parser.parse_fields(nil).should == {}
46
+ @parser.parse_fields('').should == {}
47
+ end
48
+
49
+ it 'should raise error for invalid argument' do
50
+ lambda { @parser.parse_fields('foo foo') }.should raise_error(ArgumentError)
51
+ end
52
+
53
+ it '(\'foo: "bar"\') should == { "foo" => "bar"}' do
54
+ @parser.parse_fields('foo: "bar"').should == { "foo" => "bar"}
55
+ end
56
+
57
+ it '("bool: true") should == { "bool" => true}' do
58
+ @parser.parse_fields('bool: true').should == {"bool" => true}
59
+ end
60
+
61
+ it '("bool: false") should == { "bool" => false}' do
62
+ @parser.parse_fields('bool: false').should == {"bool" => false}
63
+ end
64
+
65
+ it '("int: 10") should == { "int" => 10 }' do
66
+ @parser.parse_fields('int: 10').should == {"int" => 10}
67
+ end
68
+
69
+ it '("float: 10.1") should == { "float" => 10.1 }' do
70
+ @parser.parse_fields('float: 10.1').should == {"float" => 10.1}
71
+ end
72
+
73
+ it '(\'foo: "bar", bar_man: "wonga wonga", gump: 123\') should == {"foo" => "bar", "bar_man" => "wonga wonga", "gump" => 123}' do
74
+ @parser.parse_fields('foo: "bar", bar_man: "wonga wonga", gump: 123').should == {"foo" => "bar", "bar_man" => "wonga wonga", "gump" => 123}
75
+ end
76
+ end
77
+
78
+ describe '#parse_model' do
79
+ it '("a user") should == ["user", ""]' do
80
+ @parser.parse_model("a user").should == ["user", ""]
81
+ end
82
+
83
+ it '("the user") should == ["user", ""]' do
84
+ @parser.parse_model("the user").should == ["user", ""]
85
+ end
86
+
87
+ it '("1 user") should == ["user", ""]' do
88
+ @parser.parse_model("1 user").should == ["user", ""]
89
+ end
90
+
91
+ it '(\'an user: "jim jones"\') should == ["user", "jim_jones"]' do
92
+ @parser.parse_model('an user: "jim jones"').should == ["user", "jim_jones"]
93
+ end
94
+
95
+ it '(\'that user: "herbie"\') should == ["user", "herbie"]' do
96
+ @parser.parse_model('that user: "herbie"').should == ["user", "herbie"]
97
+ end
98
+
99
+ it '(\'the 12th user\') should == ["user", 11]' do
100
+ @parser.parse_model('the 12th user').should == ["user", 11]
101
+ end
102
+
103
+ it '(\'the last user\') should == ["user", -1]' do
104
+ @parser.parse_model('the last user').should == ["user", -1]
105
+ end
106
+
107
+ it '("the first user") should == ["user", 0]' do
108
+ @parser.parse_model('the first user').should == ["user", 0]
109
+ end
110
+
111
+ it '("the 1st user") should == ["user", 0]' do
112
+ @parser.parse_model('the 1st user').should == ["user", 0]
113
+ end
114
+ end
115
+
116
+ describe "#parse_index" do
117
+ it '("1st") should == 0' do
118
+ @parser.parse_index("1st").should == 0
119
+ end
120
+
121
+ it '("24th") should == 23' do
122
+ @parser.parse_index("24th").should == 23
123
+ end
124
+ it '("first") should == 0' do
125
+ @parser.parse_index("first").should == 0
126
+ end
127
+
128
+ it '("last") should == -1' do
129
+ @parser.parse_index("last").should == -1
130
+ end
131
+ end
132
+ end
133
+
134
+ describe "customised mappings" do
135
+ describe "config maps 'I|myself' to 'user: \"me\"'" do
136
+ before do
137
+ @config = Pickle::Config.new do |c|
138
+ c.map 'I', 'myself', :to => 'user: "me"'
139
+ end
140
+ @parser = Pickle::Parser.new(:config => @config)
141
+ @parser.config.stub(:factories).and_return('user' => mock('User'))
142
+ end
143
+
144
+ it "'I' should match /\#{match_model}/" do
145
+ 'I'.should match(/#{@parser.match_model}/)
146
+ end
147
+
148
+ it "'myself' should match /\#{match_model}/" do
149
+ 'myself'.should match(/#{@parser.match_model}/)
150
+ end
151
+
152
+ it "parse_model('I') should == ['user', 'me']" do
153
+ @parser.parse_model('I').should == ["user", "me"]
154
+ end
155
+
156
+ it "parse_model('myself') should == ['user', 'me']" do
157
+ @parser.parse_model('myself').should == ["user", "me"]
158
+ end
159
+ end
160
+ end
161
+ end