opal-rspec 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a113f4e2300f7744e1a32478ffff2a68df90c4da
4
- data.tar.gz: 9f58dbc325b688990d6cd2a5674a680bfa3340e8
3
+ metadata.gz: 3a7488ad47abebb8001e48deb75b5369e83b4424
4
+ data.tar.gz: abea36a3490465840454bb5cc00abab1997ec64c
5
5
  SHA512:
6
- metadata.gz: bf0ba02df4d77fd5aa6fb2a81b7d016d9728c81716bafe61567824deecfde590934ef9450a287dba3b308d3e838fd87a3c2919d00317410eee75b7fba60ae09a
7
- data.tar.gz: 5d09f7ea519a3bfd92a9b0974a029aa95cc1635e0ee9afce496b3356793e0c3454bc900bd58aecfa618ccb00cfcba74f2304a8f36ec6bd8e035f4973744ffc30
6
+ metadata.gz: cdd3f0a30d5f98e2d9058ebe162183b25007d59a8b1678666d4d6d92eb65b93b3935943ba7ecba26a5d149833a12d794a949faabd9f16d90ac2030f4fe0aea2a
7
+ data.tar.gz: c1546b0df5f69836e96fb0cf1d73fdb46f140efa2da1488816922da94395c32d9c315cc1896e4f855801e3c2f99235fae18d067677a8761e294e36bf04c6f2e8
data/README.md CHANGED
@@ -45,6 +45,42 @@ run Opal::Server.new { |s|
45
45
  Then run the rack server `bundle exec rackup` and visit `http://localhost:9292`
46
46
  in any web browser.
47
47
 
48
+ ## Async examples
49
+
50
+ `opal-rspec` adds support for async specs to rspec. These specs are defined using
51
+ `#async` instead of `#it`:
52
+
53
+ ```ruby
54
+ describe MyClass do
55
+ # normal example
56
+ it 'does something' do
57
+ expect(:foo).to eq(:foo)
58
+ end
59
+
60
+ # async example
61
+ async 'does something else, too' do
62
+ # ...
63
+ end
64
+ end
65
+ ```
66
+
67
+ This just marks the example as running async. To actually handle the async result,
68
+ you also need to use a `run_async` call inside some future handler:
69
+
70
+ ```ruby
71
+ async 'HTTP requests should work' do
72
+ HTTP.get('/users/1.json') do |res|
73
+ run_async {
74
+ expect(res).to be_ok
75
+ }
76
+ end
77
+ end
78
+ ```
79
+
80
+ The block passed to `run_async` informs the runner that this spec is finished
81
+ so it can move on. Any failures/expectations run inside this block will be run
82
+ in the context of the example.
83
+
48
84
  ## Contributing
49
85
 
50
86
  Install required gems at required versions:
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rake'
4
+ gem 'opal-rspec', :path => '../'
@@ -0,0 +1,13 @@
1
+ # opal-spec example
2
+
3
+ Install dependencies:
4
+
5
+ ```
6
+ bundle install
7
+ ```
8
+
9
+ Run examples:
10
+
11
+ ```
12
+ bundle exec rake
13
+ ```
@@ -0,0 +1,8 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ # Add our opal/ directory to the load path
5
+ Opal.append_path File.expand_path('../opal', __FILE__)
6
+
7
+ require 'opal/rspec/rake_task'
8
+ Opal::RSpec::RakeTask.new(:default)
@@ -0,0 +1,11 @@
1
+ class User
2
+ attr_accessor :name
3
+
4
+ def initialize(name)
5
+ @name = name
6
+ end
7
+
8
+ def admin?
9
+ @name == 'Bob'
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require 'user'
2
+
3
+ describe User do
4
+ it '#initialize accepts a name' do
5
+ expect(User.new('Jim').name).to eq('Jim')
6
+ end
7
+
8
+ it 'is an admin if name is Bob' do
9
+ expect(User.new('Bob')).to be_admin
10
+ end
11
+
12
+ it 'is not an admin if name is not Bob' do
13
+ expect(User.new('Jim')).to_not be_admin
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module RSpec
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
4
4
  end
5
5
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.require_paths = ['lib']
17
17
 
18
- s.add_dependency 'opal', '>= 0.5.1'
18
+ s.add_dependency 'opal', '>= 0.5.4'
19
19
  s.add_dependency 'opal-sprockets', '~> 0.3.0'
20
20
 
21
21
  s.add_development_dependency 'rake'
@@ -1,3 +1,19 @@
1
+ # Opal defines enumerable#flat_map, but doesnt implement it
2
+ module RSpec::Core::FlatMap
3
+ def flat_map(array)
4
+ array.map { |item| yield item }.flatten
5
+ end
6
+
7
+ module_function :flat_map
8
+ end
9
+
10
+ # This breaks on 2.0.0, so it is here ready for when opal bumps to 2.0.0
11
+ class RSpec::CallerFilter
12
+ def self.first_non_rspec_line
13
+ ""
14
+ end
15
+ end
16
+
1
17
  # String#<< is not supported by Opal
2
18
  module RSpec::Expectations
3
19
  def self.fail_with(message, expected = nil, actual = nil)
@@ -49,4 +49,9 @@ describe "RSpec mocks" do
49
49
  person.name.should
50
50
  end
51
51
  end
52
+
53
+ it "can mock existing methods on objects" do
54
+ expect(Time).to receive(:now).once.and_call_original
55
+ Time.now.should be_kind_of(Time)
56
+ end
52
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Beynon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-10 00:00:00.000000000 Z
11
+ date: 2013-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.1
19
+ version: 0.5.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.5.1
26
+ version: 0.5.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: opal-sprockets
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +64,11 @@ files:
64
64
  - Rakefile
65
65
  - app/rspec-builder.rb
66
66
  - config.ru
67
+ - example/Gemfile
68
+ - example/README.md
69
+ - example/Rakefile
70
+ - example/opal/user.rb
71
+ - example/spec/user_spec.rb
67
72
  - lib/opal-rspec.rb
68
73
  - lib/opal/rspec.rb
69
74
  - lib/opal/rspec/rake_task.rb