scintillation 1.0.11 → 1.1.1
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/VERSION +1 -1
- data/lib/scintillation.rb +7 -96
- data/lib/scintillation/controller.rb +25 -0
- data/lib/scintillation/message_queue.rb +24 -0
- data/lib/scintillation/message_queue/message.rb +22 -0
- data/lib/scintillation/view.rb +16 -0
- data/scintillation.gemspec +10 -4
- data/spec/scintillation/controller_spec.rb +37 -0
- data/spec/scintillation/message_queue_spec.rb +70 -0
- metadata +12 -6
- data/spec/scintillation_spec.rb +0 -32
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.1.1
         | 
    
        data/lib/scintillation.rb
    CHANGED
    
    | @@ -1,99 +1,10 @@ | |
| 1 | 
            +
            require 'active_support'
         | 
| 2 | 
            +
            require 'scintillation/controller'
         | 
| 3 | 
            +
            require 'scintillation/view'
         | 
| 4 | 
            +
             | 
| 1 5 | 
             
            module Scintillation
         | 
| 2 | 
            -
              
         | 
| 3 | 
            -
              def self.included(base)
         | 
| 4 | 
            -
                base.send(:include, Controller)
         | 
| 5 | 
            -
              end
         | 
| 6 | 
            -
              
         | 
| 7 | 
            -
              module Controller
         | 
| 8 | 
            -
                def self.included(base)
         | 
| 9 | 
            -
                  base.extend(ClassMethods)
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
                
         | 
| 12 | 
            -
                module ClassMethods
         | 
| 13 | 
            -
                  def scintillate(options = {})
         | 
| 14 | 
            -
                    include InstanceMethods
         | 
| 15 | 
            -
                    ActionView::Base.send(:include, Scintillation::View)
         | 
| 16 | 
            -
                    
         | 
| 17 | 
            -
                    options.reverse_merge!(:scope => :messages)
         | 
| 18 | 
            -
                    
         | 
| 19 | 
            -
                    # import flash messages
         | 
| 20 | 
            -
                    before_filter { |c| c.send(:flash).each { |t, m| c.messages.add(m, t) } }
         | 
| 21 | 
            -
                    
         | 
| 22 | 
            -
                    helper_method :messages
         | 
| 23 | 
            -
                    
         | 
| 24 | 
            -
                    define_method(:messages) do
         | 
| 25 | 
            -
                      @messages ||= Scintillation::SessionMessages.new(session, :scope => options[:scope])
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
                
         | 
| 30 | 
            -
                module InstanceMethods
         | 
| 31 | 
            -
                  def method_missing(method, *args, &block)
         | 
| 32 | 
            -
                    case method.to_s
         | 
| 33 | 
            -
                      when /^((\w+)_)?msg(_for_(\w+))?$/ then messages.add(args[0], $2, $4)
         | 
| 34 | 
            -
                      when /^((\w+)_)?msgs$/ then messages.get($2)
         | 
| 35 | 
            -
                      else super
         | 
| 36 | 
            -
                    end
         | 
| 37 | 
            -
                  end
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
              
         | 
| 41 | 
            -
              ##################################################
         | 
| 42 | 
            -
              
         | 
| 43 | 
            -
              module View
         | 
| 44 | 
            -
                def self.included(base)
         | 
| 45 | 
            -
                  base.send(:include, InstanceMethods)
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
                
         | 
| 48 | 
            -
                module InstanceMethods
         | 
| 49 | 
            -
                  def method_missing(method, *args, &block)
         | 
| 50 | 
            -
                    if method.to_s =~ /^((\w+)_)?msgs$/
         | 
| 51 | 
            -
                      messages.get($2)
         | 
| 52 | 
            -
                    else
         | 
| 53 | 
            -
                      super
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                
         | 
| 57 | 
            -
                  def display_messages(msgs)
         | 
| 58 | 
            -
                    content_tag(:ul) { msgs.map { |m| content_tag(:li, m, :class => m.tone) } }
         | 
| 59 | 
            -
                  end
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
              end
         | 
| 62 | 
            -
              
         | 
| 63 | 
            -
              ##################################################
         | 
| 64 | 
            -
              
         | 
| 65 | 
            -
              class SessionMessages
         | 
| 66 | 
            -
                def initialize(session, options = {})
         | 
| 67 | 
            -
                  options.reverse_merge!(:scope => :messages)
         | 
| 68 | 
            -
                  @session = session
         | 
| 69 | 
            -
                  @session_scope = options[:scope]
         | 
| 70 | 
            -
                  @temp_msgs = {}
         | 
| 71 | 
            -
                end
         | 
| 72 | 
            -
                
         | 
| 73 | 
            -
                def msgs
         | 
| 74 | 
            -
                  @session[@session_scope] ||= {}
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
                
         | 
| 77 | 
            -
                def add(obj, tone = nil, scope = nil)
         | 
| 78 | 
            -
                  msgs[scope.to_s] ||= []
         | 
| 79 | 
            -
                  
         | 
| 80 | 
            -
                  case obj
         | 
| 81 | 
            -
                    when ActiveModel::Errors then obj.full_messages
         | 
| 82 | 
            -
                    else Array(obj)
         | 
| 83 | 
            -
                  end.each do |m|
         | 
| 84 | 
            -
                    msgs[scope.to_s] << Scintillation::Message.new(m.to_s, tone)
         | 
| 85 | 
            -
                  end
         | 
| 86 | 
            -
                end
         | 
| 87 | 
            -
                
         | 
| 88 | 
            -
                def get(scope = nil)
         | 
| 89 | 
            -
                  @temp_msgs[scope.to_s] ||= (msgs.delete(scope.to_s) || [])
         | 
| 90 | 
            -
                end
         | 
| 91 | 
            -
              end
         | 
| 92 | 
            -
              
         | 
| 93 | 
            -
              ##################################################
         | 
| 94 | 
            -
              
         | 
| 95 | 
            -
              Message = Struct.new(:to_s, :tone)
         | 
| 96 | 
            -
              
         | 
| 97 6 | 
             
            end
         | 
| 98 7 |  | 
| 99 | 
            -
             | 
| 8 | 
            +
            if defined?(Rails)
         | 
| 9 | 
            +
              ActionController::Base.send(:extend, Scintillation::Controller)
         | 
| 10 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require 'scintillation/message_queue'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Scintillation
         | 
| 4 | 
            +
              module Controller
         | 
| 5 | 
            +
              
         | 
| 6 | 
            +
                def scintillate(options = {})
         | 
| 7 | 
            +
                  include MessageQueue
         | 
| 8 | 
            +
                  include InstanceMethods
         | 
| 9 | 
            +
                  
         | 
| 10 | 
            +
                  ActionView::Base.send(:include, Scintillation::View)
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                  options.reverse_merge!(:scope => :messages)
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                  helper_method :message_store
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                  define_method(:scintillation_scope) { options[:scope] }
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              
         | 
| 19 | 
            +
                module InstanceMethods
         | 
| 20 | 
            +
                  def message_store
         | 
| 21 | 
            +
                    @message_store ||= (session[scintillation_scope] ||= {})
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            require 'scintillation/message_queue/message'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Scintillation
         | 
| 4 | 
            +
              module MessageQueue
         | 
| 5 | 
            +
                
         | 
| 6 | 
            +
                def message_store
         | 
| 7 | 
            +
                  @message_store ||= {}
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
                def method_missing(method, *args, &block)
         | 
| 11 | 
            +
                  case method.to_s
         | 
| 12 | 
            +
                  when /^((\w+)_)?msg(_for_(\w+))?$/
         | 
| 13 | 
            +
                    (message_store[$4] ||= []) << Message.new(args[0], $2)
         | 
| 14 | 
            +
                  when /^has_((\w+)_)?msgs\?$/
         | 
| 15 | 
            +
                    !message_store[$2].empty?
         | 
| 16 | 
            +
                  when /^((\w+)_)?msgs$/
         | 
| 17 | 
            +
                    message_store.delete($2) || []
         | 
| 18 | 
            +
                  else
         | 
| 19 | 
            +
                    super
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            module Scintillation
         | 
| 2 | 
            +
              module MessageQueue
         | 
| 3 | 
            +
                class Message
         | 
| 4 | 
            +
                  def initialize(text, tone)
         | 
| 5 | 
            +
                    self.text, self.tone = text, tone
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  attr_accessor :tone
         | 
| 9 | 
            +
                  attr_reader :text
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  alias_method :to_s, :text
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def text=(val)
         | 
| 14 | 
            +
                    @text = val.to_s
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                  
         | 
| 17 | 
            +
                  def ==(message)
         | 
| 18 | 
            +
                    text == message.text && tone == message.tone
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            module Scintillation
         | 
| 2 | 
            +
              module View
         | 
| 3 | 
            +
                
         | 
| 4 | 
            +
                def method_missing(method, *args, &block)
         | 
| 5 | 
            +
                  case method.to_s
         | 
| 6 | 
            +
                  when /^has_((\w+)_)?msgs\?$/
         | 
| 7 | 
            +
                    message_store[$2] && !message_store[$2].empty?
         | 
| 8 | 
            +
                  when /^((\w+)_)?msgs$/
         | 
| 9 | 
            +
                    message_store.delete($2) || []
         | 
| 10 | 
            +
                  else
         | 
| 11 | 
            +
                    super
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        data/scintillation.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{scintillation}
         | 
| 8 | 
            -
              s.version = "1. | 
| 8 | 
            +
              s.version = "1.1.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Austin Schneider"]
         | 
| 12 | 
            -
              s.date = %q{2010- | 
| 12 | 
            +
              s.date = %q{2010-06-27}
         | 
| 13 13 | 
             
              s.description = %q{A flash messages replacement}
         | 
| 14 14 | 
             
              s.email = %q{soccer022483@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -24,8 +24,13 @@ Gem::Specification.new do |s| | |
| 24 24 | 
             
                 "Rakefile",
         | 
| 25 25 | 
             
                 "VERSION",
         | 
| 26 26 | 
             
                 "lib/scintillation.rb",
         | 
| 27 | 
            +
                 "lib/scintillation/controller.rb",
         | 
| 28 | 
            +
                 "lib/scintillation/message_queue.rb",
         | 
| 29 | 
            +
                 "lib/scintillation/message_queue/message.rb",
         | 
| 30 | 
            +
                 "lib/scintillation/view.rb",
         | 
| 27 31 | 
             
                 "scintillation.gemspec",
         | 
| 28 | 
            -
                 "spec/ | 
| 32 | 
            +
                 "spec/scintillation/controller_spec.rb",
         | 
| 33 | 
            +
                 "spec/scintillation/message_queue_spec.rb",
         | 
| 29 34 | 
             
                 "spec/spec_helper.rb"
         | 
| 30 35 | 
             
              ]
         | 
| 31 36 | 
             
              s.homepage = %q{http://github.com/soccer022483/scintillation}
         | 
| @@ -34,7 +39,8 @@ Gem::Specification.new do |s| | |
| 34 39 | 
             
              s.rubygems_version = %q{1.3.6}
         | 
| 35 40 | 
             
              s.summary = %q{A flash messages replacement}
         | 
| 36 41 | 
             
              s.test_files = [
         | 
| 37 | 
            -
                "spec/ | 
| 42 | 
            +
                "spec/scintillation/controller_spec.rb",
         | 
| 43 | 
            +
                 "spec/scintillation/message_queue_spec.rb",
         | 
| 38 44 | 
             
                 "spec/spec_helper.rb"
         | 
| 39 45 | 
             
              ]
         | 
| 40 46 |  | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'action_controller'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class ControllerTest < ActionController::Base
         | 
| 5 | 
            +
              extend Scintillation::Controller
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              def session
         | 
| 8 | 
            +
                @session ||= {}
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            describe Scintillation::Controller do
         | 
| 13 | 
            +
              describe "scintillate" do
         | 
| 14 | 
            +
                before do
         | 
| 15 | 
            +
                  ControllerTest.scintillate(:scope => :messages)
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                describe "an instance" do
         | 
| 19 | 
            +
                  before do
         | 
| 20 | 
            +
                    @ct = ControllerTest.new
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                  
         | 
| 23 | 
            +
                  it "should be a message queue" do
         | 
| 24 | 
            +
                    @ct.is_a?(Scintillation::MessageQueue).should be_true
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  it "should have a scintillation_scope" do
         | 
| 28 | 
            +
                    @ct.scintillation_scope.should == :messages
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
                  
         | 
| 31 | 
            +
                  it "messages should setup the session" do
         | 
| 32 | 
            +
                    @ct.message_store.should == {}
         | 
| 33 | 
            +
                    @ct.session.should == {:messages => {}}
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class MessageQueueTest
         | 
| 4 | 
            +
              include Scintillation::MessageQueue
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            describe Scintillation::MessageQueue do
         | 
| 8 | 
            +
              before do
         | 
| 9 | 
            +
                @mqt = MessageQueueTest.new
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              def create_message(text, tone)
         | 
| 13 | 
            +
                Scintillation::MessageQueue::Message.new(text, tone)
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
              
         | 
| 16 | 
            +
              describe "adding messages" do
         | 
| 17 | 
            +
                it "should be able to add messages with no tone or scope" do
         | 
| 18 | 
            +
                  args = ["msg", nil]
         | 
| 19 | 
            +
                  msg = create_message(*args)
         | 
| 20 | 
            +
                  Scintillation::MessageQueue::Message.stub!(:new).with(*args).and_return(msg)
         | 
| 21 | 
            +
                  @mqt.msg(args[0])
         | 
| 22 | 
            +
                  @mqt.message_store.should == {nil => [msg]}
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              
         | 
| 25 | 
            +
                it "should be able to add messages with a tone" do
         | 
| 26 | 
            +
                  args = ["msg", "cool"]
         | 
| 27 | 
            +
                  msg = create_message(*args)
         | 
| 28 | 
            +
                  Scintillation::MessageQueue::Message.stub!(:new).with(*args).and_return(msg)
         | 
| 29 | 
            +
                  @mqt.cool_msg(args[0])
         | 
| 30 | 
            +
                  @mqt.message_store.should == {nil => [msg]}
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              
         | 
| 33 | 
            +
                it "should be able to add messages with a scope" do
         | 
| 34 | 
            +
                  args = ["msg", nil]
         | 
| 35 | 
            +
                  msg = create_message(*args)
         | 
| 36 | 
            +
                  Scintillation::MessageQueue::Message.stub!(:new).with(*args).and_return(msg)
         | 
| 37 | 
            +
                  @mqt.msg_for_login(args[0])
         | 
| 38 | 
            +
                  @mqt.message_store.should == {'login' => [msg]}
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              
         | 
| 41 | 
            +
                it "should be able to add messages with a tone and scope" do
         | 
| 42 | 
            +
                  args = ["msg", "cool"]
         | 
| 43 | 
            +
                  msg = create_message(*args)
         | 
| 44 | 
            +
                  Scintillation::MessageQueue::Message.stub!(:new).with(*args).and_return(msg)
         | 
| 45 | 
            +
                  @mqt.cool_msg_for_login(args[0])
         | 
| 46 | 
            +
                  @mqt.message_store.should == {'login' => [msg]}
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
              describe "with some messages added" do
         | 
| 51 | 
            +
                before do
         | 
| 52 | 
            +
                  @mqt.msg("msg")
         | 
| 53 | 
            +
                  @mqt.cool_msg("cool msg")
         | 
| 54 | 
            +
                  @mqt.msg_for_login("msg for login")
         | 
| 55 | 
            +
                  @mqt.cool_msg_for_login("cool msg for login")
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
                
         | 
| 58 | 
            +
                it "should retrieve messages by scope" do
         | 
| 59 | 
            +
                  @mqt.msgs.should == [
         | 
| 60 | 
            +
                    create_message("msg", nil),
         | 
| 61 | 
            +
                    create_message("cool msg", "cool"),
         | 
| 62 | 
            +
                  ]
         | 
| 63 | 
            +
                  @mqt.login_msgs.should == [
         | 
| 64 | 
            +
                    create_message("msg for login", nil),
         | 
| 65 | 
            +
                    create_message("cool msg for login", "cool"),
         | 
| 66 | 
            +
                  ]
         | 
| 67 | 
            +
                  @mqt.message_store.should be_empty
         | 
| 68 | 
            +
                end
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version | |
| 4 4 | 
             
              prerelease: false
         | 
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 1
         | 
| 7 | 
            -
              -  | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 1. | 
| 7 | 
            +
              - 1
         | 
| 8 | 
            +
              - 1
         | 
| 9 | 
            +
              version: 1.1.1
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Austin Schneider
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-06-27 00:00:00 -04:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -46,8 +46,13 @@ files: | |
| 46 46 | 
             
            - Rakefile
         | 
| 47 47 | 
             
            - VERSION
         | 
| 48 48 | 
             
            - lib/scintillation.rb
         | 
| 49 | 
            +
            - lib/scintillation/controller.rb
         | 
| 50 | 
            +
            - lib/scintillation/message_queue.rb
         | 
| 51 | 
            +
            - lib/scintillation/message_queue/message.rb
         | 
| 52 | 
            +
            - lib/scintillation/view.rb
         | 
| 49 53 | 
             
            - scintillation.gemspec
         | 
| 50 | 
            -
            - spec/ | 
| 54 | 
            +
            - spec/scintillation/controller_spec.rb
         | 
| 55 | 
            +
            - spec/scintillation/message_queue_spec.rb
         | 
| 51 56 | 
             
            - spec/spec_helper.rb
         | 
| 52 57 | 
             
            has_rdoc: true
         | 
| 53 58 | 
             
            homepage: http://github.com/soccer022483/scintillation
         | 
| @@ -80,5 +85,6 @@ signing_key: | |
| 80 85 | 
             
            specification_version: 3
         | 
| 81 86 | 
             
            summary: A flash messages replacement
         | 
| 82 87 | 
             
            test_files: 
         | 
| 83 | 
            -
            - spec/ | 
| 88 | 
            +
            - spec/scintillation/controller_spec.rb
         | 
| 89 | 
            +
            - spec/scintillation/message_queue_spec.rb
         | 
| 84 90 | 
             
            - spec/spec_helper.rb
         | 
    
        data/spec/scintillation_spec.rb
    DELETED
    
    | @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module ActiveRecord; Errors = Struct.new(nil); end
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            describe Scintillation::SessionMessages do
         | 
| 6 | 
            -
              it "should add/get messages" do
         | 
| 7 | 
            -
                sm = Scintillation::SessionMessages.new({})
         | 
| 8 | 
            -
                
         | 
| 9 | 
            -
                sm.add("a")
         | 
| 10 | 
            -
                sm.add("b", 'x')
         | 
| 11 | 
            -
                sm.add("c", nil, 'y')
         | 
| 12 | 
            -
                sm.add("d", 'x', 'y')
         | 
| 13 | 
            -
                
         | 
| 14 | 
            -
                messages = sm.get
         | 
| 15 | 
            -
                messages.size.should == 2
         | 
| 16 | 
            -
                messages.map { |m| [m.to_s, m.tone] }.should == [['a', nil], ['b', 'x']]
         | 
| 17 | 
            -
                
         | 
| 18 | 
            -
                messages = sm.get('z')
         | 
| 19 | 
            -
                messages.size.should == 0
         | 
| 20 | 
            -
                
         | 
| 21 | 
            -
                messages = sm.get('y')
         | 
| 22 | 
            -
                messages.size.should == 2
         | 
| 23 | 
            -
                messages.map { |m| [m.to_s, m.tone] }.should == [['c', nil], ['d', 'x']]
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
            end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            describe Scintillation::Message do
         | 
| 28 | 
            -
              it "should create" do
         | 
| 29 | 
            -
                m = Scintillation::Message.new("message", 'positive')
         | 
| 30 | 
            -
                [m.to_s, m.tone].should == ['message', 'positive']
         | 
| 31 | 
            -
              end
         | 
| 32 | 
            -
            end
         |