riot 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -72,8 +72,27 @@ Notice that you do not define a class anywhere. That would be the entire content
72
72
 
73
73
  Sometimes it's more clear to say "this **should** be that" and sometimes it's better to say "**asserts** this is that". I promise you that Riot will get no more redundant than this, but also that besides speed, Riot will aim at being expressive with a minimal amount of syntax.
74
74
 
75
+ The other important thing to note in the examples above is the use of the `topic`. Calling `topic` within any assertion will actually return the value of whatever was evaluated and returned from calling setup in the given context. In the examples above, `User.new` was returned, and is therefor accessible as the `topic`.
76
+
75
77
  I'm going to use `asserts` for the rest of this introduction, but you should know that you can replace any instance of `asserts` with `should` and nothing would change.
76
78
 
79
+ #### Example: Shortcut - Asserting the topic itself
80
+
81
+ Over the course of developing Riot it became somewhat obvious to some of us that we were creating assertions that returned the `topic` just so we could assert things about the topic itself. For instance, were doing this:
82
+
83
+ context "a billionaire" do
84
+ setup { MoneyMaker.build(:billionaire) }
85
+
86
+ should("be a Billionaire") { topic }.kind_of(Billionaire)
87
+ end
88
+
89
+ This is awfully redundant - not to mention, contrived. So, we wrote a shortcut to generate an assertion that returns topic. This means we can now do this:
90
+
91
+ context "a billionaire" do
92
+ setup { MoneyMaker.build(:billionaire) }
93
+ topic.kind_of(Billionaire)
94
+ end
95
+
77
96
  #### Example: Equality
78
97
 
79
98
  One of the most common assertions you will (or do already) utilize is that of equality; is this equal to that? Riot supports this in a slightly different manner than most other frameworks. With Riot, you add the expectation to the assertion itself.
@@ -344,7 +363,7 @@ For instance, let's say you wanted to add a macro for verifying that the result
344
363
  module Custom
345
364
  module AssertionMacros
346
365
  def kind_of(expected_class)
347
- actual.kind_of?(expected) || failure("expected kind of #{expected}, not #{actual.inspect}")
366
+ actual.kind_of?(expected) || fail("expected kind of #{expected}, not #{actual.inspect}")
348
367
  end
349
368
  end # AssertionMacros
350
369
  end # Custom
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.8
1
+ 0.9.9
data/lib/riot/context.rb CHANGED
@@ -32,6 +32,7 @@ module Riot
32
32
  def context(description, &block) Context.new(description, @reporter, self, &block); end
33
33
  def asserts(what, &block) add_assertion("asserts #{what}", &block); end
34
34
  def should(what, &block) add_assertion("should #{what}", &block); end
35
+ def topic; asserts("topic") { topic }; end
35
36
  private
36
37
  def add_assertion(what, &block)
37
38
  (assertions << Assertion.new("#{to_s} #{what}", @situation, &block)).last
data/riot.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{riot}
8
- s.version = "0.9.8"
8
+ s.version = "0.9.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin 'Gus' Knowlden"]
12
- s.date = %q{2009-10-10}
12
+ s.date = %q{2009-10-15}
13
13
  s.description = %q{An extremely fast, expressive, and context-driven unit-testing framework. A replacement for all other testing frameworks. Protest the slow test.}
14
14
  s.email = %q{gus@gusg.us}
15
15
  s.extra_rdoc_files = [
data/test/context_test.rb CHANGED
@@ -25,6 +25,10 @@ context "any context" do
25
25
  asserts "topic becomes available to test as result of setup" do
26
26
  @context.should("bar") { topic }.actual
27
27
  end.equals("foo")
28
+
29
+ asserts "calling topic in context will return assertion that returns topic as the actual" do
30
+ @context.topic.actual
31
+ end.equals("foo")
28
32
  end # when running setup
29
33
  end # any context
30
34
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin 'Gus' Knowlden
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-10 00:00:00 -05:00
12
+ date: 2009-10-15 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15