gocart 0.0.1 → 0.0.2
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/LICENSE +0 -0
- data/README.md +0 -0
- data/assets/Gemfile +24 -0
- data/assets/Guardfile +37 -0
- data/assets/Rakefile +5 -0
- data/assets/config.rb +24 -0
- data/assets/spec/javascripts/support/jasmine.yml +86 -0
- data/assets/spec/javascripts/support/jasmine_config.rb +23 -0
- data/assets/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/assets/src/server/http_handler.go +136 -0
- data/assets/src/server/main.go +31 -0
- data/assets/src/server/templates.go +42 -0
- data/assets/src/www/app/coffee/adapters/dummy_data.js.coffee +6 -0
- data/assets/src/www/app/coffee/adapters/reddit.js.coffee +294 -0
- data/assets/src/www/app/coffee/application.js.coffee +23 -0
- data/assets/src/www/app/coffee/controllers/app.js.coffee +69 -0
- data/assets/src/www/app/coffee/controllers/nav.js.coffee +55 -0
- data/assets/src/www/app/coffee/controllers/subreddit_posts.js.coffee +57 -0
- data/assets/src/www/app/coffee/helpers/event_manager.js.coffee +3 -0
- data/assets/src/www/app/coffee/helpers/properties.js.coffee +19 -0
- data/assets/src/www/app/coffee/helpers/storage.js.coffee +14 -0
- data/assets/src/www/app/coffee/libs/3rdparty.js.coffee +7 -0
- data/assets/src/www/app/coffee/libs/deferred.js.coffee +92 -0
- data/assets/src/www/app/coffee/libs/logger.js.coffee +40 -0
- data/assets/src/www/app/coffee/libs/mod_loader.js.coffee +44 -0
- data/assets/src/www/app/coffee/main.js.coffee +42 -0
- data/assets/src/www/app/coffee/models/comment.js.coffee +26 -0
- data/assets/src/www/app/coffee/models/post.js.coffee +27 -0
- data/assets/src/www/app/coffee/models/sub_reddit.js.coffee +18 -0
- data/assets/src/www/app/coffee/widgets/post_detail.js.coffee +2 -0
- data/assets/src/www/app/coffee/widgets/posts.js.coffee +45 -0
- data/assets/src/www/app/coffee/widgets/subreddit_detail.js.coffee +2 -0
- data/assets/src/www/app/coffee/widgets/subreddits.js.coffee +44 -0
- data/assets/src/www/app/images/test.png +0 -0
- data/assets/src/www/app/partials/index.html +92 -0
- data/assets/src/www/app/sass/application.css.scss +136 -0
- data/assets/src/www/app/templates/application.gotmpl +2 -0
- data/assets/src/www/app/templates/base.gotmpl.erb +27 -0
- data/assets/src/www/app/templates/home.gotmpl +9 -0
- data/assets/src/www/spec/coffee/deferred-spec.coffee +202 -0
- data/assets/src/www/spec/coffee/mocks.coffee +137 -0
- data/assets/src/www/spec/coffee/mod_loader-spec.coffee +45 -0
- data/assets/src/www/spec/coffee/properties-spec.coffee +21 -0
- data/assets/src/www/spec/coffee/reddit_adapter-spec.coffee +143 -0
- data/assets/src/www/vendor/css/jq.ui.css +630 -0
- data/assets/src/www/vendor/images/ajax-loader.png +0 -0
- data/assets/src/www/vendor/images/icons-18-black.png +0 -0
- data/assets/src/www/vendor/images/icons-18-white.png +0 -0
- data/assets/src/www/vendor/images/icons-36-black.png +0 -0
- data/assets/src/www/vendor/images/icons-36-white.png +0 -0
- data/assets/src/www/vendor/js/ICanHaz.min.js +10 -0
- data/assets/src/www/vendor/js/jq.mobi.min.js +20 -0
- data/assets/src/www/vendor/js/jq.ui.min.js +90 -0
- data/assets/src/www/vendor/js/jq.web.min.js +58 -0
- data/assets/src/www/vendor/js/phonegap-1.1.0.js +4577 -0
- data/assets/src/www/vendor/js/touch.js +103 -0
- data/assets/tasks/app.rake +34 -0
- data/assets/tasks/jasmine.rake +8 -0
- data/assets/tasks/server.rake +58 -0
- data/assets/tasks/www.rake +163 -0
- data/bin/gocart +25 -0
- data/lib/gocart.rb +5 -6
- data/lib/gocart/base.rb +28 -0
- data/lib/gocart/environment.rb +18 -0
- data/lib/gocart/version.rb +1 -1
- metadata +113 -41
- data/.gitignore +0 -4
- data/Gemfile +0 -4
- data/Rakefile +0 -1
- data/gocarg.go +0 -29
- data/gocart.gemspec +0 -38
@@ -0,0 +1,44 @@
|
|
1
|
+
modLoader.define 'widgets/subreddits', (require, exports) ->
|
2
|
+
ich = require('libs/3rdparty').ich
|
3
|
+
|
4
|
+
class SubReddits
|
5
|
+
constructor:(options)->
|
6
|
+
@_subReddits = options.subReddits
|
7
|
+
@_controller = options.controller
|
8
|
+
return
|
9
|
+
|
10
|
+
appendTo: (toElem)->
|
11
|
+
toElem.append @_render()
|
12
|
+
@_addHandlers()
|
13
|
+
return
|
14
|
+
|
15
|
+
remove: ->
|
16
|
+
@_removeHandlers
|
17
|
+
return
|
18
|
+
|
19
|
+
_render: ->
|
20
|
+
items = for sub in @_subReddits.data
|
21
|
+
{
|
22
|
+
name: sub.url().replace(/\/r\/|\//g,'')
|
23
|
+
id: sub.id()
|
24
|
+
}
|
25
|
+
|
26
|
+
data =
|
27
|
+
subs: items
|
28
|
+
|
29
|
+
return ich.subReddits(data)
|
30
|
+
|
31
|
+
_addHandlers: ->
|
32
|
+
$('.subreddits a').bind 'click', (event)=>
|
33
|
+
@_controller.showSubRedditPosts(event.target.id)
|
34
|
+
return
|
35
|
+
|
36
|
+
return
|
37
|
+
|
38
|
+
_removeHandlers: ->
|
39
|
+
return
|
40
|
+
|
41
|
+
exports.create = (subReddits)->
|
42
|
+
return new SubReddits(subReddits);
|
43
|
+
|
44
|
+
return
|
File without changes
|
@@ -0,0 +1,92 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1" />
|
5
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
6
|
+
<title>Narwhal Champion: A Reddit Story</title>
|
7
|
+
<!-- app CSS -->
|
8
|
+
<!--<link rel="stylesheet" href="stylesheets/vendor/jq.ui.css" type="text/css" />-->
|
9
|
+
<link rel="stylesheet" href="stylesheets/application.css" type="text/css" />
|
10
|
+
|
11
|
+
<!-- third party libs -->
|
12
|
+
<script type="text/javascript" src="javascripts/vendor/touch.js"></script>
|
13
|
+
<script type="text/javascript" src="javascripts/vendor/jq.mobi.min.js"></script>
|
14
|
+
<script type="text/javascript" src="javascripts/vendor/jq.web.min.js"></script>
|
15
|
+
<script type="text/javascript" src="javascripts/vendor/jq.ui.min.js"></script>
|
16
|
+
|
17
|
+
<script type="text/javascript" src="javascripts/vendor/phonegap-1.1.0.js"></script>
|
18
|
+
<script type="text/javascript" src="javascripts/vendor/ICanHaz.min.js"></script>
|
19
|
+
|
20
|
+
<!-- application files -->
|
21
|
+
<script type="text/javascript" src="javascripts/libs/mod_loader.js"></script>
|
22
|
+
<script type="text/javascript" src="javascripts/libs/deferred.js"></script>
|
23
|
+
<script type="text/javascript" src="javascripts/libs/3rdparty.js"></script>
|
24
|
+
<script type="text/javascript" src="javascripts/libs/logger.js"></script>
|
25
|
+
<script type="text/javascript" src="javascripts/helpers/properties.js"></script>
|
26
|
+
<script type="text/javascript" src="javascripts/models/comment.js"></script>
|
27
|
+
<script type="text/javascript" src="javascripts/models/post.js"></script>
|
28
|
+
<script type="text/javascript" src="javascripts/models/sub_reddit.js"></script>
|
29
|
+
<script type="text/javascript" src="javascripts/adapters/dummy_data.js"></script>
|
30
|
+
<script type="text/javascript" src="javascripts/adapters/reddit.js"></script>
|
31
|
+
<script type="text/javascript" src="javascripts/widgets/posts.js"></script>
|
32
|
+
<script type="text/javascript" src="javascripts/widgets/post_detail.js"></script>
|
33
|
+
<script type="text/javascript" src="javascripts/widgets/subreddits.js"></script>
|
34
|
+
<script type="text/javascript" src="javascripts/controllers/nav.js"></script>
|
35
|
+
<script type="text/javascript" src="javascripts/controllers/subreddit_posts.js"></script>
|
36
|
+
<script type="text/javascript" src="javascripts/controllers/app.js"></script>
|
37
|
+
<script type="text/javascript" src="javascripts/main.js"></script>
|
38
|
+
|
39
|
+
<!-- Templates -->
|
40
|
+
<script id="subReddits" type="text/html">
|
41
|
+
{{#subs}}
|
42
|
+
<li><a href="#subreddit-posts-{{id}}" id="{{id}}">{{name}}</a></li>
|
43
|
+
{{/subs}}
|
44
|
+
</script>
|
45
|
+
|
46
|
+
<script id="posts" type="text/html">
|
47
|
+
{{#posts}}
|
48
|
+
<li class="post-short {{nsfw}}">
|
49
|
+
<h3><a href="javascript:;" onclick="$.ui.loadContent('test-show-post',false,false,'slide')">{{title}}</a></h3>
|
50
|
+
<p class="post">
|
51
|
+
<span class="score">{{score}}</span> - <span class="num-comments">{{numComments}}</span> comments, to <span class="subreddit">{{subreddit}}</span>
|
52
|
+
</p>
|
53
|
+
</li>
|
54
|
+
{{/posts}}
|
55
|
+
</div>
|
56
|
+
</script>
|
57
|
+
|
58
|
+
<script id="error_inline" type="text/html">
|
59
|
+
<p class="error-message">{{error}}</p>
|
60
|
+
</script>
|
61
|
+
|
62
|
+
</head>
|
63
|
+
<body>
|
64
|
+
<div id="header">
|
65
|
+
<div class="title"><h2>Loading...</h2></div>
|
66
|
+
<div class="search-bar">
|
67
|
+
<form name="search" action="#search" method="get"><input type='text' name="search-text" value="Search"/></form>
|
68
|
+
</div>
|
69
|
+
<div class="search-button"><p>S</p></div>
|
70
|
+
</div>
|
71
|
+
|
72
|
+
<div id="navbar">
|
73
|
+
<div id="subreddit-wrapper">
|
74
|
+
<ul class="subreddits"></ul>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
<div id="content">
|
79
|
+
<div id="subreddit-posts" class="panel" selected="true">
|
80
|
+
<div id="posts-wrapper">
|
81
|
+
<ul class="posts"></ul>
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
<div id="test-subreddit-posts" class="panel">
|
85
|
+
<p>Test showing moving to a different subreddit page</p>
|
86
|
+
</div>
|
87
|
+
<div id="test-show-post" class="panel">
|
88
|
+
<p>Test showing moving to view a post's content</p>
|
89
|
+
</div>
|
90
|
+
</div>
|
91
|
+
</body>
|
92
|
+
</html>
|
@@ -0,0 +1,136 @@
|
|
1
|
+
html, body {
|
2
|
+
width: 100%;
|
3
|
+
height: 100%;
|
4
|
+
}
|
5
|
+
|
6
|
+
html, body, div, h1, h2, h3, p, ul, li {
|
7
|
+
margin: 0;
|
8
|
+
padding: 0;
|
9
|
+
}
|
10
|
+
|
11
|
+
ul {
|
12
|
+
list-style-type: none;
|
13
|
+
}
|
14
|
+
|
15
|
+
h3 {font-size: 100%;}
|
16
|
+
|
17
|
+
$lightBlue: #3bbfce;
|
18
|
+
$warning: #f00;
|
19
|
+
|
20
|
+
* {
|
21
|
+
-webkit-user-select:none;
|
22
|
+
-webkit-box-sizing:border-box;
|
23
|
+
box-sizing:border-box;
|
24
|
+
}
|
25
|
+
|
26
|
+
body {
|
27
|
+
width: 100%;
|
28
|
+
height: 100%;
|
29
|
+
display: -webkit-box;
|
30
|
+
-webkit-box-orient: vertical;
|
31
|
+
}
|
32
|
+
|
33
|
+
.panel {
|
34
|
+
width: 100%;
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
/*********************
|
39
|
+
header bar
|
40
|
+
*********************/
|
41
|
+
#header {
|
42
|
+
display: -webkit-box;
|
43
|
+
height: 30px;
|
44
|
+
width: 100%;
|
45
|
+
|
46
|
+
color: $lightBlue;
|
47
|
+
background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(16,25,33,1)), to(rgba(14,23,32,1)), color-stop(.5, rgba(27,36,46,1)), color-stop(.5, rgba(14,23,32,1)));
|
48
|
+
-webkit-box-shadow:0px 0px 24px rgba(0,0,0,0.8); box-shadow:0px 0px 24px rgba(0,0,0,0.8);
|
49
|
+
|
50
|
+
-webkit-box-orient: horizontal;
|
51
|
+
-webkit-box-align: center;
|
52
|
+
-webkit-box-pack: justify;
|
53
|
+
}
|
54
|
+
#header .title {
|
55
|
+
-webkit-box-flex: 1;
|
56
|
+
text-align: center;
|
57
|
+
}
|
58
|
+
#header .search-bar {
|
59
|
+
display: none;
|
60
|
+
}
|
61
|
+
#header .serach-bar.shown {
|
62
|
+
display: -webkit-box;
|
63
|
+
-webkit-box-flex: 1;
|
64
|
+
width: 100%;
|
65
|
+
}
|
66
|
+
#header .search-button {
|
67
|
+
padding: 5px;
|
68
|
+
}
|
69
|
+
|
70
|
+
|
71
|
+
/*********************
|
72
|
+
Nav Bar
|
73
|
+
*********************/
|
74
|
+
#navbar {
|
75
|
+
width: 100%;
|
76
|
+
display:-webkit-box;
|
77
|
+
-webkit-box-orient: horizontal;
|
78
|
+
-webkit-box-align: center;
|
79
|
+
overflow: hidden;
|
80
|
+
|
81
|
+
z-index:1000;
|
82
|
+
position:relative;
|
83
|
+
}
|
84
|
+
#subreddit-wrapper {
|
85
|
+
height: 40px;
|
86
|
+
display: -webkit-box;
|
87
|
+
}
|
88
|
+
#subreddit-wrapper ul.subreddits {
|
89
|
+
display: -webkit-box;
|
90
|
+
-webkit-box-orient: horizontal;
|
91
|
+
-webkit-box-align: center;
|
92
|
+
padding-left: 0;
|
93
|
+
white-space: nowrap;
|
94
|
+
}
|
95
|
+
#subreddit-wrapper .subreddits li {
|
96
|
+
display:inline;
|
97
|
+
a {
|
98
|
+
margin-right: 5px;
|
99
|
+
padding: 0 5px;
|
100
|
+
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
/***************************
|
106
|
+
App Content for main page
|
107
|
+
***************************/
|
108
|
+
#content{
|
109
|
+
z-index:180;
|
110
|
+
display:block;
|
111
|
+
position:relative;
|
112
|
+
} /* Accounts for positioning of the content area, which is everything below the header and above the navbar. */
|
113
|
+
|
114
|
+
.panel {
|
115
|
+
z-index:180;
|
116
|
+
width:100%;
|
117
|
+
height:100%;
|
118
|
+
display:none;
|
119
|
+
position:absolute; top:0px; left:-100%;
|
120
|
+
overflow:hidden;
|
121
|
+
}
|
122
|
+
|
123
|
+
#subreddit-posts {
|
124
|
+
display: -webkit-box;
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
/***************************
|
129
|
+
Formatting for Short posts
|
130
|
+
***************************/
|
131
|
+
.posts .post-short {
|
132
|
+
display: bock;
|
133
|
+
}
|
134
|
+
.posts .post-short.nsfw {
|
135
|
+
background-color: $warning;
|
136
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
{{define "base.header"}}
|
2
|
+
<!DOCTYPE html>
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<title>{{.Title}}</title>
|
6
|
+
{{if .Debug}}{{template "base.header.assets.debug" .}}{{else}}{{template "base.header.assets" .}}{{end}}
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
{{end}}
|
10
|
+
|
11
|
+
{{define "base.header.assets"}}
|
12
|
+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
|
13
|
+
<script type="text/javascript" src="{{.RootURL}}/assets/js/application.js"></script>
|
14
|
+
<link rel="stylesheet" type="text/css" href="{{.RootURL}}/assets/css/application.css">
|
15
|
+
{{end}}
|
16
|
+
|
17
|
+
{{define "base.header.assets.debug"}}
|
18
|
+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
|
19
|
+
<script type="text/javascript" src="{{.RootURL}}/assets/js/main.js"></script>
|
20
|
+
<link rel="stylesheet" type="text/css" href="{{.RootURL}}/assets/css/application.css">
|
21
|
+
{{end}}
|
22
|
+
|
23
|
+
|
24
|
+
{{define "base.footer"}}
|
25
|
+
</body>
|
26
|
+
</html>
|
27
|
+
{{end}}
|
@@ -0,0 +1,202 @@
|
|
1
|
+
describe 'Deferred Test', ->
|
2
|
+
Deferred = modLoader.require 'libs/deferred'
|
3
|
+
|
4
|
+
it 'should be able to create a deferred object, and get a promise from it', ->
|
5
|
+
df = Deferred.create()
|
6
|
+
expect(df).toBeDefined()
|
7
|
+
|
8
|
+
promise = df.promise()
|
9
|
+
expect(promise).toBeDefined()
|
10
|
+
|
11
|
+
it 'should be able to create a deferred which will resolve a promise, synchournously', ->
|
12
|
+
df = Deferred.create()
|
13
|
+
promise = df.promise()
|
14
|
+
|
15
|
+
wasFulfilled = false
|
16
|
+
promise.done ->
|
17
|
+
wasFulfilled = true
|
18
|
+
|
19
|
+
df.resolve()
|
20
|
+
|
21
|
+
waitsFor ->
|
22
|
+
return wasFulfilled
|
23
|
+
, 'promise to be fulfilled', 100
|
24
|
+
|
25
|
+
runs ->
|
26
|
+
expect(wasFulfilled).toBe(true)
|
27
|
+
|
28
|
+
it 'should be able to create a deferred which will reject a promise, synchournously', ->
|
29
|
+
df = Deferred.create()
|
30
|
+
promise = df.promise()
|
31
|
+
|
32
|
+
wasRejected = false
|
33
|
+
promise.fail ->
|
34
|
+
wasRejected = true
|
35
|
+
|
36
|
+
df.reject()
|
37
|
+
|
38
|
+
waitsFor ->
|
39
|
+
return wasRejected
|
40
|
+
, 'promise to be rejected', 100
|
41
|
+
|
42
|
+
runs ->
|
43
|
+
expect(wasRejected).toBe(true)
|
44
|
+
|
45
|
+
it 'should be able to resolve a promise before the promise is created, synchournously', ->
|
46
|
+
df = Deferred.create()
|
47
|
+
promise = df.promise()
|
48
|
+
|
49
|
+
df.resolve()
|
50
|
+
|
51
|
+
wasFulfilled = false
|
52
|
+
promise.done ->
|
53
|
+
wasFulfilled = true
|
54
|
+
|
55
|
+
waitsFor ->
|
56
|
+
return wasFulfilled
|
57
|
+
, 'promise to be fulfilled', 100
|
58
|
+
|
59
|
+
runs ->
|
60
|
+
expect(wasFulfilled).toBe(true)
|
61
|
+
|
62
|
+
it 'should be able to reject a promise before the promise is created, synchournously', ->
|
63
|
+
df = Deferred.create()
|
64
|
+
promise = df.promise()
|
65
|
+
|
66
|
+
df.reject()
|
67
|
+
|
68
|
+
wasRejected = false
|
69
|
+
promise.fail ->
|
70
|
+
wasRejected = true
|
71
|
+
|
72
|
+
waitsFor ->
|
73
|
+
return wasRejected
|
74
|
+
, 'promise to be rejected', 100
|
75
|
+
|
76
|
+
runs ->
|
77
|
+
expect(wasRejected).toBe(true)
|
78
|
+
|
79
|
+
it 'should be able to resolve a promise with data', ->
|
80
|
+
df = Deferred.create()
|
81
|
+
promise = df.promise()
|
82
|
+
|
83
|
+
df.resolve({myObj: true})
|
84
|
+
|
85
|
+
wasFulfilled = false
|
86
|
+
promise.done (obj)->
|
87
|
+
expect(obj.myObj).toBe(true)
|
88
|
+
wasFulfilled = true
|
89
|
+
|
90
|
+
|
91
|
+
waitsFor ->
|
92
|
+
return wasFulfilled
|
93
|
+
, 'promise to be fulfilled', 100
|
94
|
+
|
95
|
+
runs ->
|
96
|
+
expect(wasFulfilled).toBe(true)
|
97
|
+
|
98
|
+
it 'should be able to reject a promise with data', ->
|
99
|
+
df = Deferred.create()
|
100
|
+
promise = df.promise()
|
101
|
+
|
102
|
+
df.reject({myObj: true})
|
103
|
+
|
104
|
+
wasRejected = false
|
105
|
+
promise.fail (obj)->
|
106
|
+
expect(obj.myObj).toBe(true)
|
107
|
+
wasRejected = true
|
108
|
+
|
109
|
+
|
110
|
+
waitsFor ->
|
111
|
+
return wasRejected
|
112
|
+
, 'promise to be reject', 100
|
113
|
+
|
114
|
+
runs ->
|
115
|
+
expect(wasRejected).toBe(true)
|
116
|
+
|
117
|
+
it 'should be able to resolve a promise with multile datas', ->
|
118
|
+
df = Deferred.create()
|
119
|
+
promise = df.promise()
|
120
|
+
|
121
|
+
df.resolve({myObj: true}, {myObj2: true}, {myObj3: true})
|
122
|
+
|
123
|
+
wasFulfilled = false
|
124
|
+
promise.done (obj, obj2, obj3)->
|
125
|
+
expect(obj.myObj).toBe(true)
|
126
|
+
expect(obj2.myObj2).toBe(true)
|
127
|
+
expect(obj3.myObj3).toBe(true)
|
128
|
+
wasFulfilled = true
|
129
|
+
|
130
|
+
|
131
|
+
waitsFor ->
|
132
|
+
return wasFulfilled
|
133
|
+
, 'promise to be fulfilled', 100
|
134
|
+
|
135
|
+
runs ->
|
136
|
+
expect(wasFulfilled).toBe(true)
|
137
|
+
|
138
|
+
it 'should be able to reject a promise with multile datas', ->
|
139
|
+
df = Deferred.create()
|
140
|
+
promise = df.promise()
|
141
|
+
|
142
|
+
df.reject({myObj: true}, {myObj2: true}, {myObj3: true})
|
143
|
+
|
144
|
+
wasRejected = false
|
145
|
+
promise.fail (obj, obj2, obj3)->
|
146
|
+
expect(obj.myObj).toBe(true)
|
147
|
+
expect(obj2.myObj2).toBe(true)
|
148
|
+
expect(obj3.myObj3).toBe(true)
|
149
|
+
wasRejected = true
|
150
|
+
|
151
|
+
|
152
|
+
waitsFor ->
|
153
|
+
return wasRejected
|
154
|
+
, 'promise to be rejected', 100
|
155
|
+
|
156
|
+
runs ->
|
157
|
+
expect(wasRejected).toBe(true)
|
158
|
+
|
159
|
+
|
160
|
+
it 'should be able to resolve a promise with data, using the then', ->
|
161
|
+
df = Deferred.create()
|
162
|
+
promise = df.promise()
|
163
|
+
|
164
|
+
df.resolve({myObj: true})
|
165
|
+
|
166
|
+
wasFulfilled = false
|
167
|
+
promise.then (obj)->
|
168
|
+
expect(obj.myObj).toBe(true)
|
169
|
+
wasFulfilled = true
|
170
|
+
, (obj)->
|
171
|
+
expect('not to be called').toBe(true)
|
172
|
+
wasFulfilled = false
|
173
|
+
|
174
|
+
waitsFor ->
|
175
|
+
return wasFulfilled
|
176
|
+
, 'promise to be fulfilled', 100
|
177
|
+
|
178
|
+
runs ->
|
179
|
+
expect(wasFulfilled).toBe(true)
|
180
|
+
|
181
|
+
|
182
|
+
it 'should be able to reject a promise with data, using the then', ->
|
183
|
+
df = Deferred.create()
|
184
|
+
promise = df.promise()
|
185
|
+
|
186
|
+
df.reject({myObj: true})
|
187
|
+
|
188
|
+
wasRejected = false
|
189
|
+
promise.then (obj)->
|
190
|
+
expect('not to be called').toBe(true)
|
191
|
+
wasRejected = false
|
192
|
+
, (obj)->
|
193
|
+
expect(obj.myObj).toBe(true)
|
194
|
+
wasRejected = true
|
195
|
+
|
196
|
+
waitsFor ->
|
197
|
+
return wasRejected
|
198
|
+
, 'promise to be rejected', 100
|
199
|
+
|
200
|
+
runs ->
|
201
|
+
expect(wasRejected).toBe(true)
|
202
|
+
|