stackable_flash 0.0.5 → 0.0.6

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/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ Version 0.0.6 - AUG.22.2012
2
+ - Performance - reduce number of calls made in the StackLayer
3
+ - Added support for hashes, nils, and other object that Array() destroyed (no longer uses Array())
4
+ - Expanded spec suite
5
+
1
6
  Version 0.0.5 - AUG.22.2012
2
7
  - Added Rspec Matchers and Test::Unit helpers.
3
8
 
@@ -25,37 +25,39 @@ module StackableFlash
25
25
  return send("[]_without_stacking", key)
26
26
  end
27
27
 
28
+ # Make an array at the key, while providing a seamless upgrade to existing flashes
29
+ #
30
+ # Initial set to Array
31
+ #
32
+ # Principle of least surprise
33
+ # flash[:notice] = ['message1','message2']
34
+ # flash[:notice] # => ['message1','message2']
35
+ #
36
+ # Initial set to String
37
+ #
38
+ # Principle of least surprise
39
+ # flash[:notice] = 'original'
40
+ # flash[:notice] # => ['original']
41
+ #
42
+ # Overwrite!
43
+ #
44
+ # Principle of least surprise
45
+ # flash[:notice] = 'original'
46
+ # flash[:notice] = 'altered'
47
+ # flash[:notice] # => ['altered']
48
+ #
49
+ # The same line of code does all of the above.
50
+ # Leave existing behavior in place, but send the full array as the value so it doesn't get killed.
28
51
  define_method "[]_with_stacking=" do |key, value|
29
52
  if StackableFlash.stacking
30
- # Do it in a non-stacking block so we get normal behavior from flash[:notice] calls
31
- StackableFlash.not_stacked do
32
- # Make an array at the key, while providing a seamless upgrade to existing flashes
33
- #
34
- # Initial set to Array
35
- #
36
- # Principle of least surprise
37
- # flash[:notice] = ['message1','message2']
38
- # flash[:notice] # => ['message1','message2']
39
- #
40
- # Initial set to String
41
- #
42
- # Principle of least surprise
43
- # flash[:notice] = 'original'
44
- # flash[:notice] # => ['original']
45
- #
46
- # Overwrite!
47
- #
48
- # Principle of least surprise
49
- # flash[:notice] = 'original'
50
- # flash[:notice] = 'altered'
51
- # flash[:notice] # => ['altered']
52
- #
53
- # The same line of code does all of the above:
54
- self[key] = StackableFlash::FlashStack.new.replace(value.kind_of?(Array) ? value : Array(value))
55
-
56
- # Leave existing behavior in place, but send the full array as the value so it doesn't get killed.
57
- send("[]_without_stacking=", key, self[key])
58
- end
53
+ send("[]_without_stacking=", key,
54
+ StackableFlash::FlashStack.new.replace(
55
+ value.kind_of?(Array) ?
56
+ value :
57
+ # Preserves nil values in the result... I suppose that's OK, users can compact if needed :)
58
+ Array.new(1, value)
59
+ )
60
+ )
59
61
  else
60
62
  # All StackableFlash functionality is completely bypassed
61
63
  send("[]_without_stacking=", key, value)
@@ -1,3 +1,3 @@
1
1
  module StackableFlash
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,25 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe StackableFlash::StackLayer do
3
+ describe StackableFlash::RspecMatchers do
4
4
  before(:each) do
5
5
  @flash = ActionDispatch::Flash::FlashHash.new
6
6
  end
7
7
  describe "tests against strange things" do
8
8
  context "should" do
9
- it "should be able to test against odd values like an Object.new" do
10
- lambda {@flash[:notice].should have_stackable_flash(Object.new)}.should raise_error RSpec::Expectations::ExpectationNotMetError
11
- end
12
- it "should be able to test against odd values like {:hello => 'asdf'}" do
9
+ it "should raise error when not a match" do
10
+ lambda {@flash[:notice].should have_stackable_flash(1)}.should raise_error RSpec::Expectations::ExpectationNotMetError
13
11
  lambda {@flash[:notice].should have_stackable_flash({:hello => 'asdf'})}.should raise_error RSpec::Expectations::ExpectationNotMetError
14
12
  end
13
+ it "should not raise an error when a match" do
14
+ lambda { @flash[:notice] = 1
15
+ @flash[:notice].should have_stackable_flash(1)}.should_not raise_exception
16
+ lambda { @flash[:notice] = {:hello => 'asdf'}
17
+ @flash[:notice].should have_stackable_flash({:hello => 'asdf'})}.should_not raise_exception
18
+ end
15
19
  end
16
20
  context "should_not" do
17
- it "should be able to test against odd values like an Object.new" do
18
- lambda {@flash[:notice].should_not have_stackable_flash(Object.new)}.should_not raise_exception
19
- end
20
- it "should be able to test against odd values like {:hello => 'asdf'}" do
21
+ it "should raise error when not a match" do
22
+ lambda {@flash[:notice].should_not have_stackable_flash(1)}.should_not raise_exception
21
23
  lambda {@flash[:notice].should_not have_stackable_flash({:hello => 'asdf'})}.should_not raise_exception
22
24
  end
25
+ it "should not raise an error when a match" do
26
+ lambda { @flash[:notice] = 1
27
+ @flash[:notice].should_not have_stackable_flash(1)}.should raise_error RSpec::Expectations::ExpectationNotMetError
28
+ lambda { @flash[:notice] = {:hello => 'asdf'}
29
+ @flash[:notice].should_not have_stackable_flash({:hello => 'asdf'})}.should raise_error RSpec::Expectations::ExpectationNotMetError
30
+ end
23
31
  end
24
32
  end
25
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackable_flash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: