messenger-js 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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