messenger-js 0.0.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.
Files changed (46) hide show
  1. data/CHANGELOG +1 -0
  2. data/Gemfile +10 -0
  3. data/Gemfile.lock +100 -0
  4. data/LICENSE +21 -0
  5. data/Manifest +44 -0
  6. data/README.rdoc +0 -0
  7. data/Rakefile +38 -0
  8. data/assets/scripts/coffee/messenger/factory/builders/multi_signal_dismissed_builder.coffee +17 -0
  9. data/assets/scripts/coffee/messenger/factory/builders/signal_dismissed_builder.coffee +17 -0
  10. data/assets/scripts/coffee/messenger/factory/builders/time_dismissed_builder.coffee +16 -0
  11. data/assets/scripts/coffee/messenger/factory/builders/user_confirm_builder.coffee +16 -0
  12. data/assets/scripts/coffee/messenger/factory/builders/user_dialogue_builder.coffee +16 -0
  13. data/assets/scripts/coffee/messenger/factory/message_factory.coffee +30 -0
  14. data/assets/scripts/coffee/messenger/message_queue.coffee +46 -0
  15. data/assets/scripts/coffee/messenger/messages/message.coffee +26 -0
  16. data/assets/scripts/coffee/messenger/messages/multi_signal_dismissed_message.coffee +36 -0
  17. data/assets/scripts/coffee/messenger/messages/signal_dismissed_message.coffee +33 -0
  18. data/assets/scripts/coffee/messenger/messages/time_dismissed_message.coffee +25 -0
  19. data/assets/scripts/coffee/messenger/messages/user_confirm_message.coffee +27 -0
  20. data/assets/scripts/coffee/messenger/messages/user_dialogue_message.coffee +29 -0
  21. data/assets/scripts/coffee/messenger/system_message_manager.coffee +41 -0
  22. data/assets/scripts/coffee/patches.coffee +4 -0
  23. data/assets/scripts/js/lib/define_property.polyfill.js +131 -0
  24. data/assets/scripts/js/lib/jquery.js +5 -0
  25. data/bin/messenger.js +223 -0
  26. data/config/assets.rb +8 -0
  27. data/lib/messenger.rb +1 -0
  28. data/lib/messenger/symbols.rb +17 -0
  29. data/messenger-js.gemspec +36 -0
  30. data/spec/jasmine.yml +44 -0
  31. data/spec/runner.html +81 -0
  32. data/spec/support/classes.coffee +0 -0
  33. data/spec/support/helpers.coffee +22 -0
  34. data/spec/support/mocks.coffee +34 -0
  35. data/spec/support/objects.coffee +0 -0
  36. data/spec/support/requirements.coffee +1 -0
  37. data/spec/tests/factory/message_factory_spec.coffee +16 -0
  38. data/spec/tests/message_queue_spec.coffee +65 -0
  39. data/spec/tests/messages/message_spec.coffee +11 -0
  40. data/spec/tests/messages/multi_signal_dismissed_message_spec.coffee +33 -0
  41. data/spec/tests/messages/signal_dismissed_message_spec.coffee +25 -0
  42. data/spec/tests/messages/time_dismissed_message_spec.coffee +14 -0
  43. data/spec/tests/messages/user_confirm_message_spec.coffee +13 -0
  44. data/spec/tests/messages/user_dialogue_message_spec.coffee +21 -0
  45. data/spec/tests/system_messages_spec.coffee +38 -0
  46. metadata +134 -0
data/config/assets.rb ADDED
@@ -0,0 +1,8 @@
1
+ assets_are_in "#{::Messenger.root_path}/assets"
2
+
3
+ asset 'messenger.js' do |a|
4
+ a.scan 'scripts/coffee', 'scripts/js'
5
+ a.add_assets_from ::Cronus.keystone_compiler
6
+ a.toolchain :coffeescript, :require
7
+ a.post_build :closure
8
+ end
data/lib/messenger.rb ADDED
@@ -0,0 +1 @@
1
+ require "messenger/symbols"
@@ -0,0 +1,17 @@
1
+ require "keystone"
2
+
3
+ module Messenger
4
+
5
+ def self.pipeline
6
+ @@pipeline ||= ::Keystone.bootstrap("#{root_path}/config/assets.rb")
7
+ end
8
+
9
+ def self.keystone_compiler
10
+ @@keystone_compiler ||= pipeline.compiler("messenger.js")
11
+ end
12
+
13
+ def self.root_path
14
+ File.expand_path("#{File.dirname(__FILE__)}/../../")
15
+ end
16
+
17
+ end
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "messenger-js"
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Tim Shelburne"]
9
+ s.date = "2013-05-01"
10
+ s.description = ""
11
+ s.email = "shelburt02@gmail.com"
12
+ s.executables = ["messenger.js"]
13
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "bin/messenger.js", "lib/messenger.rb", "lib/messenger/symbols.rb"]
14
+ s.files = ["CHANGELOG", "Gemfile", "Gemfile.lock", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "assets/scripts/coffee/messenger/factory/builders/multi_signal_dismissed_builder.coffee", "assets/scripts/coffee/messenger/factory/builders/signal_dismissed_builder.coffee", "assets/scripts/coffee/messenger/factory/builders/time_dismissed_builder.coffee", "assets/scripts/coffee/messenger/factory/builders/user_confirm_builder.coffee", "assets/scripts/coffee/messenger/factory/builders/user_dialogue_builder.coffee", "assets/scripts/coffee/messenger/factory/message_factory.coffee", "assets/scripts/coffee/messenger/message_queue.coffee", "assets/scripts/coffee/messenger/messages/message.coffee", "assets/scripts/coffee/messenger/messages/multi_signal_dismissed_message.coffee", "assets/scripts/coffee/messenger/messages/signal_dismissed_message.coffee", "assets/scripts/coffee/messenger/messages/time_dismissed_message.coffee", "assets/scripts/coffee/messenger/messages/user_confirm_message.coffee", "assets/scripts/coffee/messenger/messages/user_dialogue_message.coffee", "assets/scripts/coffee/messenger/system_message_manager.coffee", "assets/scripts/coffee/patches.coffee", "assets/scripts/js/lib/define_property.polyfill.js", "assets/scripts/js/lib/jquery.js", "bin/messenger.js", "config/assets.rb", "lib/messenger.rb", "lib/messenger/symbols.rb", "spec/jasmine.yml", "spec/runner.html", "spec/support/classes.coffee", "spec/support/helpers.coffee", "spec/support/mocks.coffee", "spec/support/objects.coffee", "spec/support/requirements.coffee", "spec/tests/factory/message_factory_spec.coffee", "spec/tests/message_queue_spec.coffee", "spec/tests/messages/message_spec.coffee", "spec/tests/messages/multi_signal_dismissed_message_spec.coffee", "spec/tests/messages/signal_dismissed_message_spec.coffee", "spec/tests/messages/time_dismissed_message_spec.coffee", "spec/tests/messages/user_confirm_message_spec.coffee", "spec/tests/messages/user_dialogue_message_spec.coffee", "spec/tests/system_messages_spec.coffee", "messenger-js.gemspec"]
15
+ s.homepage = "https://github.com/tshelburne/messenger-js"
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Messenger-js", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = "messenger-js"
19
+ s.rubygems_version = "1.8.24"
20
+ s.summary = ""
21
+
22
+ if s.respond_to? :specification_version then
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_development_dependency(%q<jasmine>, [">= 0"])
27
+ s.add_development_dependency(%q<jasmine-headless-webkit>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<jasmine>, [">= 0"])
30
+ s.add_dependency(%q<jasmine-headless-webkit>, [">= 0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<jasmine>, [">= 0"])
34
+ s.add_dependency(%q<jasmine-headless-webkit>, [">= 0"])
35
+ end
36
+ end
data/spec/jasmine.yml ADDED
@@ -0,0 +1,44 @@
1
+ runner_output: "spec/runner.html"
2
+
3
+ # src_files
4
+ #
5
+ # Return an array of filepaths relative to src_dir to include before jasmine specs.
6
+ # Default: []
7
+ src_files:
8
+ - bin/*.js
9
+
10
+ # stylesheets
11
+ #
12
+ # Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
13
+ # Default: []
14
+ stylesheets:
15
+
16
+ # helpers
17
+ #
18
+ # Return an array of filepaths relative to spec_dir to include before jasmine specs.
19
+ # Default: ["helpers/**/*.js"]
20
+ helpers:
21
+ - support/requirements.coffee
22
+ - support/helpers.coffee
23
+ - support/objects.coffee
24
+ - support/classes.coffee
25
+ - support/mocks.coffee
26
+
27
+ # spec_files
28
+ #
29
+ # Return an array of filepaths relative to spec_dir to include.
30
+ # Default: ["**/*[sS]pec.js"]
31
+ spec_files:
32
+ - ./**/*_spec.coffee
33
+
34
+ # src_dir
35
+ #
36
+ # Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
37
+ # Default: project root
38
+ src_dir:
39
+
40
+ # spec_dir
41
+ #
42
+ # Spec directory path. Your spec_files must be returned relative to this path.
43
+ # Default: spec/javascripts
44
+ spec_dir: spec
data/spec/runner.html ADDED
@@ -0,0 +1,81 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <meta content="text/html;charset=UTF-8" http-equiv="Content-Type"/>
5
+ <title>Jasmine Test Runner - Generated by jasmine-headless-webkit</title>
6
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/prolog.js"></script>
7
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine.js"></script>
8
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine-html.js"></script>
9
+ <link rel="stylesheet" href="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-core-1.3.1/lib/jasmine-core/jasmine.css" type="text/css" />
10
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jasmine-extensions.js"></script>
11
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/intense.js"></script>
12
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/headless_reporter_result.js"></script>
13
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js"></script>
14
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/jsDump.js"></script>
15
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/vendor/ruby/1.9.1/gems/jasmine-headless-webkit-0.8.4/vendor/assets/javascripts/beautify-html.js"></script>
16
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/bin/messenger.js"></script>
17
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/requirements.coffee.js"></script>
18
+ <script type="text/javascript">window.CSTF['requirements.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/requirements.coffee';</script>
19
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/helpers.coffee.js"></script>
20
+ <script type="text/javascript">window.CSTF['helpers.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/helpers.coffee';</script>
21
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/objects.coffee.js"></script>
22
+ <script type="text/javascript">window.CSTF['objects.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/objects.coffee';</script>
23
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/classes.coffee.js"></script>
24
+ <script type="text/javascript">window.CSTF['classes.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/classes.coffee';</script>
25
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/mocks.coffee.js"></script>
26
+ <script type="text/javascript">window.CSTF['mocks.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/support/mocks.coffee';</script>
27
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/factory/message_factory_spec.coffee.js"></script>
28
+ <script type="text/javascript">window.CSTF['message_factory_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/factory/message_factory_spec.coffee';</script>
29
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/signal_dismissed_message_spec.coffee.js"></script>
30
+ <script type="text/javascript">window.CSTF['signal_dismissed_message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/signal_dismissed_message_spec.coffee';</script>
31
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/message_spec.coffee.js"></script>
32
+ <script type="text/javascript">window.CSTF['message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/message_spec.coffee';</script>
33
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/multi_signal_dismissed_message_spec.coffee.js"></script>
34
+ <script type="text/javascript">window.CSTF['multi_signal_dismissed_message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/multi_signal_dismissed_message_spec.coffee';</script>
35
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_confirm_message_spec.coffee.js"></script>
36
+ <script type="text/javascript">window.CSTF['user_confirm_message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_confirm_message_spec.coffee';</script>
37
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/time_dismissed_message_spec.coffee.js"></script>
38
+ <script type="text/javascript">window.CSTF['time_dismissed_message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/time_dismissed_message_spec.coffee';</script>
39
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_dialogue_message_spec.coffee.js"></script>
40
+ <script type="text/javascript">window.CSTF['user_dialogue_message_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_dialogue_message_spec.coffee';</script>
41
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/message_queue_spec.coffee.js"></script>
42
+ <script type="text/javascript">window.CSTF['message_queue_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/message_queue_spec.coffee';</script>
43
+ <script type="text/javascript" src="/Users/tshelburne/Sites/dontlook/jslib/messenger/.jhw-cache/coffee_script/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/system_messages_spec.coffee.js"></script>
44
+ <script type="text/javascript">window.CSTF['system_messages_spec.coffee.js'] = '/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/system_messages_spec.coffee';</script>
45
+ <script type="text/javascript">
46
+ if (window.JHW) { HeadlessReporterResult.specLineNumbers = {"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/factory/message_factory_spec.coffee":{"MessageFactory":[3],"can build a message":[7],"can take a collection of additional message builders.":[13]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/signal_dismissed_message_spec.coffee":{"SignalDismissedMessage":[4],"can dismiss upon receiving a dispatch from the signal":[13],"can suspend dismissal until after a set amount of time has passed":[19]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/message_spec.coffee":{"Message":[4],"can return the html content of a message":[10]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/multi_signal_dismissed_message_spec.coffee":{"MultiSignalDismissedMessage":[5],"can dismiss upon receiving a dispatch from one signal":[15],"can dismiss upon receiving a dispatch from another signal":[21],"can suspend dismissal until after a set amount of time has passed":[27]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_confirm_message_spec.coffee":{"UserConfirmMessage":[3],"can dismiss upon the confirm button being clicked":[10]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/time_dismissed_message_spec.coffee":{"TimeDismissedMessage":[3],"can dismiss after a given amount of time":[11]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/messages/user_dialogue_message_spec.coffee":{"UserDialogueMessage":[6],"can dismiss upon the confirm button being clicked":[13],"can dismiss upon the deny button being clicked":[18]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/message_queue_spec.coffee":{"MessageQueue":[4],"can add messages to the queue":[10],"can add messages to the queue at a specified position":[14],"can remove messages from the queue":[22],"when interacting with a Message":[28],"can dispatch signals for messages upon being queued":[34],"can dispatch signals for messages to be displayed":[39],"can dispatch signals for messages upon being dismissed":[44],"can remove a message once it is dismissed":[50],"can dispatch signals for messages upon being removed":[55],"can dispatch signals that the queue has finished":[61]},"/Users/tshelburne/Sites/dontlook/jslib/messenger/spec/tests/system_messages_spec.coffee":{"SystemMessageManager":[5],"when using MessageQueue":[11],"can queue a message":[13],"can queue a message at an index":[17],"can remove a message from the queue":[22],"can respond to the queue finishing":[27],"can display a message":[33]}}; }
47
+ </script>
48
+ </head>
49
+ <body>
50
+ <script type="text/javascript">
51
+ jasmine.getEnv().console = {
52
+ log: function(msg) { JHW.stdout.puts(msg) }
53
+ }
54
+
55
+ window._onload = window.onload;
56
+
57
+ window.onload = function() {
58
+ if (window._onload && (window._onload != window.onload)) {
59
+ window._onload();
60
+ }
61
+
62
+ if (window.JHW) {
63
+ jasmine.getEnv().addReporter(new jasmine.HeadlessConsoleReporter());
64
+ } else {
65
+ types = [ 'HtmlReporter', 'TrivialReporter' ];
66
+
67
+ for (var i = 0, j = types.length; i < j; ++i) {
68
+ var type = jasmine[types[i]]
69
+ if (type) {
70
+ jasmine.getEnv().addReporter(new type());
71
+ break;
72
+ }
73
+ }
74
+ }
75
+
76
+ jasmine.getEnv().execute();
77
+ }
78
+ </script>
79
+ </body>
80
+ </html>
81
+
File without changes
@@ -0,0 +1,22 @@
1
+ (exports ? this).globalize = (fxn, name=null)=>
2
+ functionName = if name is null then fxn.name else name
3
+ (exports ? this)[functionName] = fxn
4
+
5
+
6
+ # MOCKING #
7
+ (exports ? this).mocks = {}
8
+
9
+ (exports ? this).addMock = (name, obj)=>
10
+ (exports ? this).mocks[name] = obj
11
+
12
+
13
+ # RUNTIME PATCHING #
14
+ (exports ? this).patches = {}
15
+
16
+ (exports ? this).patch = (method, patch)=>
17
+ (exports ? this).patches[method.name] = method
18
+ method = patch
19
+
20
+ (exports ? this).restore = (method)=>
21
+ method = (exports ? this).patches[method.name]
22
+ delete (exports ? this).patches[method.name]
@@ -0,0 +1,34 @@
1
+ addMock "message1",
2
+ type : "mock1"
3
+ message : "Mock message number 1."
4
+ dismiss :
5
+ add : ->
6
+ init: ->
7
+ getHtml: -> "<article id='message-1234'><p>Mock message number 1.</p></article>"
8
+
9
+ addMock "message2",
10
+ type : "mock2"
11
+ message : "Mock message number 2."
12
+ dismiss :
13
+ add : ->
14
+ init: ->
15
+ getHtml: -> "<article id='message-1234'><p>Mock message number 2.</p></article>"
16
+
17
+ addMock "timeMessage",
18
+ type : "time"
19
+ message : "Time message."
20
+ dismiss :
21
+ add : ->
22
+
23
+ addMock "messageBuilder",
24
+ canHandle : (type)->
25
+ type is "mock"
26
+ handle : (message, options)->
27
+ return mocks.message1 if message is "mock1"
28
+ return mocks.message2 if message is "mock2"
29
+
30
+ addMock "systemMessageManager",
31
+ queueMessage: (type, message, options)->
32
+ queueMessageAt: (type, message, options, index)->
33
+ removeMessage: (message)->
34
+ displayMessage: (message)->
File without changes
@@ -0,0 +1 @@
1
+ require 'lib/jquery'
@@ -0,0 +1,16 @@
1
+ MessageFactory = require "messenger/factory/message_factory"
2
+
3
+ describe "MessageFactory", ->
4
+ beforeEach ->
5
+ factory = null
6
+
7
+ it "can build a message", ->
8
+ factory = MessageFactory.default()
9
+ message = factory.build("time", "A timed message.", { timeToDisplay : 500 })
10
+ expect(message?).toBeTruthy()
11
+ expect(message.message).toEqual "A timed message."
12
+
13
+ it "can take a collection of additional message builders.", ->
14
+ factory = MessageFactory.default([ mocks.messageBuilder ])
15
+ expect(factory.builders.indexOf( mocks.messageBuilder )).not.toEqual -1
16
+ expect(factory.build("mock", "mock1", {})).toEqual mocks.message1
@@ -0,0 +1,65 @@
1
+ MessageQueue = require "messenger/message_queue"
2
+ Message = require "messenger/messages/message"
3
+
4
+ describe "MessageQueue", ->
5
+ queue = null
6
+
7
+ beforeEach ->
8
+ queue = new MessageQueue()
9
+
10
+ it "can add messages to the queue", ->
11
+ queue.add(mocks.message1)
12
+ expect(queue.messages.length).toEqual 1
13
+
14
+ it "can add messages to the queue at a specified position", ->
15
+ queue.add(mocks.message1)
16
+ queue.addAt(mocks.message2, 0)
17
+ queue.addAt(mocks.message2, 1)
18
+ queue.addAt(mocks.message1, 1)
19
+ expect(queue.messages[0]).toEqual mocks.message2
20
+ expect(queue.messages[1]).toEqual mocks.message1
21
+
22
+ it "can remove messages from the queue", ->
23
+ queue.add(mocks.message1)
24
+ queue.add(mocks.message2)
25
+ queue.remove(mocks.message1)
26
+ expect(queue.messages.length).toEqual 1
27
+
28
+ describe "when interacting with a Message", ->
29
+ message = null
30
+
31
+ beforeEach ->
32
+ message = new Message()
33
+
34
+ it "can dispatch signals for messages upon being queued", ->
35
+ spyOn(queue.queued, "dispatch")
36
+ queue.add(message)
37
+ expect(queue.queued.dispatch).toHaveBeenCalledWith(message)
38
+
39
+ it "can dispatch signals for messages to be displayed", ->
40
+ spyOn(queue.display, "dispatch")
41
+ queue.add(message)
42
+ expect(queue.display.dispatch).toHaveBeenCalledWith(message)
43
+
44
+ it "can dispatch signals for messages upon being dismissed", ->
45
+ spyOn(queue.dismissed, "dispatch")
46
+ queue.add(message)
47
+ message.dismiss.dispatch()
48
+ expect(queue.dismissed.dispatch).toHaveBeenCalledWith(message)
49
+
50
+ it "can remove a message once it is dismissed", ->
51
+ queue.add(message)
52
+ message.dismiss.dispatch()
53
+ expect(queue.messages.length).toEqual 0
54
+
55
+ it "can dispatch signals for messages upon being removed", ->
56
+ spyOn(queue.removed, "dispatch")
57
+ queue.add(message)
58
+ message.dismiss.dispatch()
59
+ expect(queue.removed.dispatch).toHaveBeenCalledWith(message)
60
+
61
+ it "can dispatch signals that the queue has finished", ->
62
+ spyOn(queue.finished, "dispatch")
63
+ queue.add(message)
64
+ message.dismiss.dispatch()
65
+ expect(queue.finished.dispatch).toHaveBeenCalled()
@@ -0,0 +1,11 @@
1
+ Message = require "messenger/messages/message"
2
+ Message::buildMarkupObj = (message)-> @markupObj = $("<article id='MESSAGE-ID'><p>#{message}</p></article>")
3
+
4
+ describe "Message", ->
5
+ message = null
6
+
7
+ beforeEach ->
8
+ message = new Message("Message.")
9
+
10
+ it "can return the html content of a message", ->
11
+ expect(message.getHtml()).toEqual "<article id=\"MESSAGE-ID\"><p>Message.</p></article>"
@@ -0,0 +1,33 @@
1
+ MultiSignalDismissedMessage = require "messenger/messages/multi_signal_dismissed_message"
2
+
3
+ Signal = require "cronus/signal"
4
+
5
+ describe "MultiSignalDismissedMessage", ->
6
+ message = null
7
+ signal1 = new Signal()
8
+ signal2 = new Signal()
9
+
10
+ beforeEach ->
11
+ message = new MultiSignalDismissedMessage("Signal message.", [ signal1, signal2 ], 0)
12
+ spyOn(message.dismiss, "dispatch")
13
+ jasmine.Clock.useMock()
14
+
15
+ it "can dismiss upon receiving a dispatch from one signal", ->
16
+ message.init()
17
+ signal1.dispatch()
18
+ jasmine.Clock.tick(100)
19
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
20
+
21
+ it "can dismiss upon receiving a dispatch from another signal", ->
22
+ message.init()
23
+ signal2.dispatch()
24
+ jasmine.Clock.tick(100)
25
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
26
+
27
+ it "can suspend dismissal until after a set amount of time has passed", ->
28
+ message.minTimeToShow = 200
29
+ message.init()
30
+ signal1.dispatch()
31
+ expect(message.dismiss.dispatch).not.toHaveBeenCalled()
32
+ jasmine.Clock.tick 201
33
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
@@ -0,0 +1,25 @@
1
+ SignalDismissedMessage = require "messenger/messages/signal_dismissed_message"
2
+ Signal = require "cronus/signal"
3
+
4
+ describe "SignalDismissedMessage", ->
5
+ message = null
6
+ signal = new Signal()
7
+
8
+ beforeEach ->
9
+ message = new SignalDismissedMessage("Signal message.", signal, 0)
10
+ spyOn(message.dismiss, "dispatch")
11
+ jasmine.Clock.useMock()
12
+
13
+ it "can dismiss upon receiving a dispatch from the signal", ->
14
+ message.init()
15
+ signal.dispatch()
16
+ jasmine.Clock.tick(100)
17
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
18
+
19
+ it "can suspend dismissal until after a set amount of time has passed", ->
20
+ message.minTimeToShow = 200
21
+ message.init()
22
+ signal.dispatch()
23
+ expect(message.dismiss.dispatch).not.toHaveBeenCalled()
24
+ jasmine.Clock.tick 201
25
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
@@ -0,0 +1,14 @@
1
+ TimeDismissedMessage = require "messenger/messages/time_dismissed_message"
2
+
3
+ describe "TimeDismissedMessage", ->
4
+ message = null
5
+
6
+ beforeEach ->
7
+ message = new TimeDismissedMessage("Time message.", 50)
8
+ spyOn(message.dismiss, "dispatch")
9
+ jasmine.Clock.useMock()
10
+
11
+ it "can dismiss after a given amount of time", ->
12
+ message.init()
13
+ jasmine.Clock.tick(51)
14
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message
@@ -0,0 +1,13 @@
1
+ UserConfirmMessage = require "messenger/messages/user_confirm_message"
2
+
3
+ describe "UserConfirmMessage", ->
4
+ message = null
5
+
6
+ beforeEach ->
7
+ message = new UserConfirmMessage("Confirm message.", "OK")
8
+ spyOn(message.dismiss, "dispatch")
9
+
10
+ it "can dismiss upon the confirm button being clicked", ->
11
+ message.init()
12
+ message.confirmClicked()
13
+ expect(message.dismiss.dispatch).toHaveBeenCalledWith message