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