messenger-js 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +100 -0
- data/LICENSE +21 -0
- data/Manifest +44 -0
- data/README.rdoc +0 -0
- data/Rakefile +38 -0
- data/assets/scripts/coffee/messenger/factory/builders/multi_signal_dismissed_builder.coffee +17 -0
- data/assets/scripts/coffee/messenger/factory/builders/signal_dismissed_builder.coffee +17 -0
- data/assets/scripts/coffee/messenger/factory/builders/time_dismissed_builder.coffee +16 -0
- data/assets/scripts/coffee/messenger/factory/builders/user_confirm_builder.coffee +16 -0
- data/assets/scripts/coffee/messenger/factory/builders/user_dialogue_builder.coffee +16 -0
- data/assets/scripts/coffee/messenger/factory/message_factory.coffee +30 -0
- data/assets/scripts/coffee/messenger/message_queue.coffee +46 -0
- data/assets/scripts/coffee/messenger/messages/message.coffee +26 -0
- data/assets/scripts/coffee/messenger/messages/multi_signal_dismissed_message.coffee +36 -0
- data/assets/scripts/coffee/messenger/messages/signal_dismissed_message.coffee +33 -0
- data/assets/scripts/coffee/messenger/messages/time_dismissed_message.coffee +25 -0
- data/assets/scripts/coffee/messenger/messages/user_confirm_message.coffee +27 -0
- data/assets/scripts/coffee/messenger/messages/user_dialogue_message.coffee +29 -0
- data/assets/scripts/coffee/messenger/system_message_manager.coffee +41 -0
- data/assets/scripts/coffee/patches.coffee +4 -0
- data/assets/scripts/js/lib/define_property.polyfill.js +131 -0
- data/assets/scripts/js/lib/jquery.js +5 -0
- data/bin/messenger.js +223 -0
- data/config/assets.rb +8 -0
- data/lib/messenger.rb +1 -0
- data/lib/messenger/symbols.rb +17 -0
- data/messenger-js.gemspec +36 -0
- data/spec/jasmine.yml +44 -0
- data/spec/runner.html +81 -0
- data/spec/support/classes.coffee +0 -0
- data/spec/support/helpers.coffee +22 -0
- data/spec/support/mocks.coffee +34 -0
- data/spec/support/objects.coffee +0 -0
- data/spec/support/requirements.coffee +1 -0
- data/spec/tests/factory/message_factory_spec.coffee +16 -0
- data/spec/tests/message_queue_spec.coffee +65 -0
- data/spec/tests/messages/message_spec.coffee +11 -0
- data/spec/tests/messages/multi_signal_dismissed_message_spec.coffee +33 -0
- data/spec/tests/messages/signal_dismissed_message_spec.coffee +25 -0
- data/spec/tests/messages/time_dismissed_message_spec.coffee +14 -0
- data/spec/tests/messages/user_confirm_message_spec.coffee +13 -0
- data/spec/tests/messages/user_dialogue_message_spec.coffee +21 -0
- data/spec/tests/system_messages_spec.coffee +38 -0
- metadata +134 -0
data/config/assets.rb
ADDED
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
|