woyo-server 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45960ffc6a517d0d39ff864fc0e5c766c5dd3084
4
- data.tar.gz: 3d5dc8d3fdfc234bf81aeee41f1abbb0c3858fa8
3
+ metadata.gz: 87c8e693d26deb5a3998f39f7c2e6d3e69df026a
4
+ data.tar.gz: 4198785cc371867a214a09b4e87d8ae72c2dbfe0
5
5
  SHA512:
6
- metadata.gz: 70cafd0f24374923d895fdbf67f4100bb442db557a5b692fa877d84976fb89e928b3bd65e780ef4014e5656b6f93b51f97f3f1622baee38d712b0c89a2d21032
7
- data.tar.gz: 71f69f2a72eb421cac6b813e47857bbb377f86c6e4df23aa4776bce2d52822ff6f7c51539594f64705e654d3bf598a5314d2375ada0357752542cadfa884e918
6
+ metadata.gz: 9a7e1b47a7bed1ff4a43b06d2eef01c55f240e4f433d50f9eacfbca4b5c88427357e3e4d48f94b3dda0ffa900c12126dddcaa8377dfa862f17abbeff43ceebe6
7
+ data.tar.gz: 05d70ebabd602d740197446c06534c3b728be0e629757a342ec1f65013348fb0b877cedf8cc1a369ad5e69878129f73674bf5d43cb2322e259dd0eab121547a7
data/.gitignore CHANGED
@@ -21,3 +21,5 @@ tmp
21
21
  *.o
22
22
  *.a
23
23
  mkmf.log
24
+ capybara-*.html
25
+
data/lib/woyo/runner.rb CHANGED
@@ -58,8 +58,8 @@ class Runner
58
58
  [ 'public', 'views', 'world' ].each do |subdir|
59
59
  FileUtils.cp_r File.join( __dir__, '../../', subdir ), dir, preserve: true
60
60
  end
61
- FileUtils.ln_s 'foundation-5.2.2', File.join(dir,'public/server/foundation')
62
- FileUtils.ln_s 'jquery-2.1.1', File.join(dir,'public/server/jquery')
61
+ # FileUtils.ln_s 'foundation-5.2.2', File.join(dir,'public/server/foundation')
62
+ # FileUtils.ln_s 'jquery-2.1.1', File.join(dir,'public/server/jquery')
63
63
  return 0
64
64
  end
65
65
 
@@ -77,8 +77,8 @@ class Runner
77
77
  [ 'public', 'views', 'world' ].each do |subdir|
78
78
  FileUtils.cp_r File.join( __dir__, '../../', subdir ), '.', preserve: true
79
79
  end
80
- FileUtils.ln_s 'foundation-5.2.2', 'public/server/foundation' unless File.exists? 'public/server/foundation'
81
- FileUtils.ln_s 'jquery-2.1.1', 'public/server/jquery' unless File.exists? 'public/server/jquery'
80
+ # FileUtils.ln_s 'foundation-5.2.2', 'public/server/foundation' unless File.exists? 'public/server/foundation'
81
+ # FileUtils.ln_s 'jquery-2.1.1', 'public/server/jquery' unless File.exists? 'public/server/jquery'
82
82
  return 0
83
83
  end
84
84
 
@@ -91,7 +91,15 @@ class Runner
91
91
  print_error 'This is not a Woyo::Server directory'
92
92
  return -4
93
93
  end
94
+ # if @args.include?('-d') || @args.include?('--dev')
95
+ # FileUtils.ln_s 'foundation-5.2.2', 'public/server/foundation'
96
+ # FileUtils.ln_s 'jquery-2.1.1', 'public/server/jquery'
97
+ # end
94
98
  Woyo::Server.run!
99
+ # if @args.include?('-d') || @args.include?('--dev')
100
+ # FileUtils.rm 'public/server/foundation'
101
+ # FileUtils.rm 'public/server/jquery'
102
+ # end
95
103
  return 0
96
104
  end
97
105
 
@@ -1,19 +1,26 @@
1
1
  require 'sinatra/base'
2
+ require 'sinatra/partial'
2
3
  require 'haml'
4
+ require 'json'
3
5
  require 'woyo/world'
4
6
 
5
7
  module Woyo
6
8
 
7
9
  class Server < Sinatra::Application
8
10
 
9
- def self.load_world
11
+ def self.load_world glob = 'world/*.rb'
10
12
  world = Woyo::World.new
11
- Dir['world/*.rb'].each do |filename|
12
- world.instance_eval File.read filename
13
+ Dir[glob].each do |filename|
14
+ eval_world File.read( filename ), filename, world
13
15
  end
14
16
  world
15
17
  end
16
18
 
19
+ def self.eval_world text, filename, world = nil
20
+ world ||= Woyo::World.new
21
+ world.instance_eval text, filename
22
+ end
23
+
17
24
  configure do
18
25
  enable :sessions
19
26
  set root: '.'
@@ -27,18 +34,24 @@ class Server < Sinatra::Application
27
34
  end
28
35
 
29
36
  get '/' do
30
- redirect to 'default.html' if world.locations.empty? || ( !@location && !world.start )
31
- @location ||= world.locations[world.start]
32
- session[:location] = @location
33
- haml :location
37
+ redirect to 'default.html' if world.name.nil? && world.description.nil? && world.start.nil?
38
+ @world = world
39
+ session[:location_id] = world.start
40
+ haml :world
34
41
  end
35
42
 
36
- get '/go/*' do |way|
37
- @location = session[:location].ways[way.to_sym].to
38
- session[:location] = @location
43
+ get '/location' do
44
+ @location = world.locations[session[:location_id]]
39
45
  haml :location
40
46
  end
41
47
 
48
+ get '/go/*' do |way_id|
49
+ way = world.locations[session[:location_id]].ways[way_id.to_sym]
50
+ session[:location_id] = way.to.id if way.open?
51
+ content_type :json
52
+ way.go.to_json
53
+ end
54
+
42
55
  get '/do/*/*?/*?' do |item,action,tool|
43
56
  # do default or optional action on required item with optional tool
44
57
  end
@@ -1,3 +1,3 @@
1
1
  module Woyo
2
- SERVER_VERSION = "0.0.5"
2
+ SERVER_VERSION = "0.0.6"
3
3
  end
@@ -0,0 +1,10 @@
1
+
2
+ body {
3
+ display:none;
4
+ }
5
+
6
+ p.going {
7
+ display:none;
8
+ padding-left:1em;
9
+ }
10
+
@@ -4,8 +4,8 @@
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>WOYO - World Of Your Own</title>
7
- <link rel="stylesheet" href="foundation/css/foundation.css" />
8
- <script src="foundation/js/vendor/modernizr.js"></script>
7
+ <link rel="stylesheet" href="foundation-5.2.2/css/foundation.css" />
8
+ <script src="foundation-5.2.2/js/vendor/modernizr.js"></script>
9
9
  </head>
10
10
  <body>
11
11
 
@@ -32,8 +32,8 @@
32
32
  </div>
33
33
  </div>
34
34
 
35
- <script src="foundation/js/vendor/jquery.js"></script>
36
- <script src="foundation/js/foundation.min.js"></script>
35
+ <script src="foundation-5.2.2/js/vendor/jquery.js"></script>
36
+ <script src="foundation-5.2.2/js/foundation.min.js"></script>
37
37
  <script>
38
38
  $(document).foundation();
39
39
  </script>
@@ -0,0 +1,23 @@
1
+
2
+ $(document).foundation();
3
+
4
+ $(document).ready( function() {
5
+ $("body").fadeIn('slow');
6
+ $(".way .go").click( function() {
7
+ $go_link = $(this);
8
+ go_url = $go_link.attr("href");
9
+ $.get( go_url, function(json) {
10
+ if ( json.go == true ) {
11
+ $go_link.siblings(".going").text(json.going).fadeIn('slow', function() {
12
+ $("body").fadeOut('slow', function() {
13
+ window.location.reload(true);
14
+ });
15
+ });
16
+ } else {
17
+ $go_link.siblings(".going").text(json.going).fadeIn('slow');
18
+ };
19
+ });
20
+ return false;
21
+ });
22
+ });
23
+
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require 'rack/test'
2
+ ENV['RACK_ENV'] = 'test'
3
+
2
4
  require 'capybara/rspec'
3
5
  Capybara.app = Woyo::Server
4
6
  Capybara.ignore_hidden_elements = false
5
-
6
- ENV['RACK_ENV'] = 'test'
7
+ #Capybara.default_driver = :selenium #:rack_test
7
8
 
8
9
  module RSpecMixin
9
10
  include Rack::Test::Methods
@@ -1,10 +1,18 @@
1
1
  require_relative '../../../lib/woyo/server'
2
2
  require 'spec_helper.rb'
3
+ require 'fileutils'
3
4
 
4
- describe Woyo::Server, :type => :feature do
5
+ describe Woyo::Server, :type => :feature do
5
6
 
6
7
  before :all do
8
+ # directories
9
+ @original_path = Dir.pwd
10
+ File.basename(@original_path).should eq 'woyo-server'
11
+ @test_dir = 'tmp/test'
12
+ # worlds
7
13
  @small_world = Woyo::World.new do
14
+ name "Small World"
15
+ description "It's a small world after all"
8
16
  location :small
9
17
  end
10
18
  @home_world = Woyo::World.new do
@@ -55,98 +63,261 @@ describe Woyo::Server, :type => :feature do
55
63
  end
56
64
 
57
65
  # these must be the first tests so that Woyo::Server.setting.world is not set
58
- # that is why this file is name 1_server_spec.rb
66
+ # that is why this file is named 1_server_spec.rb
59
67
 
60
- it 'welcome page is displayed if there is no world' do
61
- visit '/'
62
- status_code.should eq 200
63
- page.should have_content 'Woyo'
64
- end
68
+ context 'with no world' do
65
69
 
66
- it 'welcome page links to github docs' do
67
- visit '/'
68
- status_code.should eq 200
69
- page.should have_link '', href: 'https://github.com/iqeo/woyo-world/wiki'
70
- page.should have_link '', href: 'https://github.com/iqeo/woyo-server/wiki'
71
- end
70
+ it 'welcome page is displayed if there is no world' do
71
+ visit '/'
72
+ status_code.should eq 200
73
+ page.should have_content 'Woyo'
74
+ end
72
75
 
73
- it 'uses foundation framework' do
74
- visit '/'
75
- status_code.should eq 200
76
- page.should have_css 'head link[href="foundation/css/foundation.css"]'
77
- page.should have_css 'head script[src="foundation/js/vendor/modernizr.js"]'
78
- end
76
+ it 'welcome page links to github docs' do
77
+ visit '/'
78
+ status_code.should eq 200
79
+ page.should have_link '', href: 'https://github.com/iqeo/woyo-world/wiki'
80
+ page.should have_link '', href: 'https://github.com/iqeo/woyo-server/wiki'
81
+ end
82
+
83
+ it 'uses foundation framework' do
84
+ visit '/'
85
+ status_code.should eq 200
86
+ page.should have_css 'head link[href="foundation-5.2.2/css/foundation.css"]'
87
+ page.should have_css 'head script[src="foundation-5.2.2/js/vendor/modernizr.js"]'
88
+ end
79
89
 
80
- it 'accepts a world (without start - display welcome)' do
81
- Woyo::Server.set :world, @small_world
82
- visit '/'
83
- status_code.should eq 200
84
- page.should have_content 'Woyo'
85
90
  end
86
91
 
87
- it 'accepts a world (with start)' do
88
- @small_world.start = :small
89
- Woyo::Server.set :world, @small_world
90
- visit '/'
91
- status_code.should eq 200
92
+ context 'loads the world' do
93
+
94
+ it 'from files in directory' do
95
+ content1 = "
96
+ name 'Simple'
97
+ start :one
98
+ location :one do
99
+ description 'First'
100
+ end
101
+ "
102
+ content2 = "
103
+ location :two do
104
+ description 'Second'
105
+ end
106
+ "
107
+ FileUtils.mkdir_p @test_dir
108
+ File.write File.join( @test_dir, 'file1.rb' ), content1
109
+ File.write File.join( @test_dir, 'file2.rb' ), content2
110
+ world = nil
111
+ expect { world = Woyo::Server.load_world File.join( @test_dir, '*.rb' ) }.to_not raise_error
112
+ Woyo::Server.set :world, world
113
+ visit '/'
114
+ status_code.should eq 200
115
+ page.should have_title /^Simple$/
116
+ end
117
+
118
+ it 'shows filename and lineno in backtrace upon error' do
119
+ bad_world = "
120
+ location :bad do
121
+ raise 'boom'
122
+ end
123
+ "
124
+ expect { Woyo::Server.eval_world bad_world, 'bad_world' }.to raise_error { |e|
125
+ e.message.should eq 'boom'
126
+ e.backtrace.first.should =~ /^bad_world.3/
127
+ }
128
+ end
129
+
92
130
  end
93
131
 
94
- it 'describes the start location' do
95
- Woyo::Server.set :world, @home_world
96
- visit '/'
97
- page.should have_selector '.location#location_home'
98
- page.should have_selector '.location#location_home .name', text: 'Home'
99
- page.should have_selector '.location#location_home .description', text: 'Where the heart is.'
100
- page.should have_selector '.way#way_out'
101
- page.should have_selector '.way#way_out .name', text: 'Door'
102
- page.should have_selector '.way#way_out .description', text: 'A sturdy wooden door'
103
- page.should have_selector '.way#way_down'
104
- page.should have_selector '.way#way_down .name', text: 'Stairs'
105
- page.should have_selector '.way#way_down .description', text: 'Rickety stairs lead down'
106
- end
107
-
108
- it 'goes way to another location' do
109
- Woyo::Server.set :world, @home_world
110
- visit '/'
111
- page.should have_selector '.way#way_out a#go_out'
112
- click_on 'go_out'
113
- page.should have_selector '.location#location_garden .name', text: 'Garden'
132
+ context 'describes the world' do
133
+
134
+ it 'title is world name' do
135
+ Woyo::Server.set :world, @small_world
136
+ visit '/'
137
+ status_code.should eq 200
138
+ page.should have_title /^Small World$/
139
+ end
140
+
141
+ it 'without start location' do
142
+ Woyo::Server.set :world, @small_world
143
+ visit '/'
144
+ status_code.should eq 200
145
+ page.should have_selector '.world .name', text: "Small World"
146
+ page.should have_selector '.world .description', text: "It's a small world after all"
147
+ page.should have_selector '.world .no-start'
148
+ page.should_not have_selector '.world .start'
149
+ end
150
+
151
+ it 'with start location' do
152
+ @small_world.start = :small
153
+ Woyo::Server.set :world, @small_world
154
+ visit '/'
155
+ status_code.should eq 200
156
+ page.should have_selector '.world .name', text: "Small World"
157
+ page.should have_selector '.world .description', text: "It's a small world after all"
158
+ page.should have_selector '.world .start a[href="/location"]', text: "Start"
159
+ page.should_not have_selector '.world .no-start'
160
+ end
161
+
114
162
  end
115
163
 
116
- it 'tracks location (go and come back)' do
117
- Woyo::Server.set :world, @home_world
118
- visit '/'
119
- page.should have_selector '.location#location_home .name', text: 'Home'
120
- page.should have_selector '.way#way_out a#go_out'
121
- click_on 'go_out'
122
- page.should have_selector '.location#location_garden .name', text: 'Garden'
123
- page.should have_selector '.way#way_in a#go_in'
124
- click_on 'go_in'
125
- page.should have_selector '.location#location_home .name', text: 'Home'
164
+ context 'describes locations' do
165
+
166
+ it 'title is location name' do
167
+ Woyo::Server.set :world, @small_world
168
+ visit '/'
169
+ click_on 'start'
170
+ status_code.should eq 200
171
+ page.should have_title /^Small$/
172
+ end
173
+
174
+ it 'start location' do
175
+ Woyo::Server.set :world, @home_world
176
+ visit '/'
177
+ click_on 'start'
178
+ status_code.should eq 200
179
+ page.should have_selector '.location#location_home'
180
+ page.should have_selector '.location#location_home .name', text: 'Home'
181
+ page.should have_selector '.location#location_home .description', text: 'Where the heart is.'
182
+ page.should have_selector '.way#way_out'
183
+ page.should have_selector '.way#way_out .name', text: 'Door'
184
+ page.should have_selector '.way#way_out .description', text: 'A sturdy wooden door'
185
+ page.should have_selector '.way#way_down'
186
+ page.should have_selector '.way#way_down .name', text: 'Stairs'
187
+ page.should have_selector '.way#way_down .description', text: 'Rickety stairs lead down'
188
+ end
189
+
126
190
  end
127
191
 
128
- it 'tracks location (loop both directions)' do
129
- Woyo::Server.set :world, @home_world
130
- visit '/'
131
- page.should have_selector '.location#location_home .name', text: 'Home'
132
- page.should have_selector '.way#way_out a#go_out'
133
- click_on 'go_out'
134
- page.should have_selector '.location#location_garden .name', text: 'Garden'
135
- page.should have_selector '.way#way_down a#go_down'
136
- click_on 'go_down'
137
- page.should have_selector '.location#location_cellar .name', text: 'Cellar'
138
- page.should have_selector '.way#way_up a#go_up'
139
- click_on 'go_up'
140
- page.should have_selector '.location#location_home .name', text: 'Home'
141
- page.should have_selector '.way#way_down a#go_down'
142
- click_on 'go_down'
143
- page.should have_selector '.location#location_cellar .name', text: 'Cellar'
144
- page.should have_selector '.way#way_out a#go_out'
145
- click_on 'go_out'
146
- page.should have_selector '.location#location_garden .name', text: 'Garden'
147
- page.should have_selector '.way#way_in a#go_in'
148
- click_on 'go_in'
149
- page.should have_selector '.location#location_home .name', text: 'Home'
192
+ context 'ways' do
193
+
194
+ before :all do
195
+ @ways_world = Woyo::World.new do
196
+ start :home
197
+ location :home do
198
+ way :door do
199
+ description open: 'A sturdy wooden door', closed: 'Never closed'
200
+ going open: 'The door opens, leading to a sunlit garden', closed: 'Never closed'
201
+ to :garden
202
+ end
203
+ way :stairs do
204
+ description closed: 'Broken stairs lead down into darkness.', open: 'Never open'
205
+ going closed: 'The broken stairs are impassable.', open: 'Never open'
206
+ end
207
+ way :window do
208
+ description 'A nice view.'
209
+ going 'Makes no difference.'
210
+ to :yard
211
+ end
212
+ end
213
+ end
214
+ Woyo::Server.set :world, @ways_world
215
+ end
216
+
217
+ context 'are described' do
218
+
219
+ before :each do
220
+ visit '/'
221
+ click_on 'start'
222
+ status_code.should eq 200
223
+ end
224
+
225
+ it 'open' do
226
+ page.should have_selector '.way#way_door a#go_door'
227
+ page.should have_selector '.way#way_door .name', text: 'Door'
228
+ page.should have_selector '.way#way_door .description', text: 'A sturdy wooden door'
229
+ end
230
+
231
+ it 'closed' do
232
+ page.should have_selector '.way#way_stairs a#go_stairs'
233
+ page.should have_selector '.way#way_stairs .name', text: 'Stairs'
234
+ page.should have_selector '.way#way_stairs .description', text: 'Broken stairs lead down into darkness.'
235
+ end
236
+
237
+ end
238
+
239
+ context 'are described with default' do
240
+
241
+ it 'open' do
242
+ window = @ways_world.locations[:home].ways[:window]
243
+ window.open!
244
+ window.should be_open
245
+ visit '/'
246
+ click_on 'start'
247
+ status_code.should eq 200
248
+ page.should have_selector '.way#way_window a#go_window'
249
+ page.should have_selector '.way#way_window .name', text: 'Window'
250
+ page.should have_selector '.way#way_window .description', text: 'A nice view.'
251
+ end
252
+
253
+ it 'closed' do
254
+ window = @ways_world.locations[:home].ways[:window]
255
+ window.close!
256
+ window.should be_closed
257
+ visit '/'
258
+ click_on 'start'
259
+ status_code.should eq 200
260
+ page.should have_selector '.way#way_window a#go_window'
261
+ page.should have_selector '.way#way_window .name', text: 'Window'
262
+ page.should have_selector '.way#way_window .description', text: 'A nice view.'
263
+ end
264
+
265
+ end
266
+
267
+ context 'are described going', :js => true do
268
+
269
+ before :each do
270
+ visit '/'
271
+ page.find('body', visible: true)
272
+ click_on 'start'
273
+ end
274
+
275
+ it 'open' do
276
+ page.should have_selector '.way#way_door a#go_door'
277
+ click_link 'go_door'
278
+ page.should have_selector '.way#way_door .going', text: 'The door opens, leading to a sunlit garden'
279
+ sleep 3
280
+ page.should have_selector '.location#location_garden .name', text: 'Garden'
281
+ end
282
+
283
+ it 'closed' do
284
+ page.should have_selector '.way#way_stairs a#go_stairs'
285
+ click_link 'go_stairs'
286
+ page.should have_selector '.way#way_stairs .going', text: 'The broken stairs are impassable.'
287
+ page.should have_selector '.location#location_home .name', text: 'Home'
288
+ end
289
+
290
+ end
291
+
292
+ context 'are described going with default', :js => true do
293
+
294
+ it 'open' do
295
+ window = @ways_world.locations[:home].ways[:window]
296
+ window.open!
297
+ window.should be_open
298
+ visit '/'
299
+ click_on 'start'
300
+ page.should have_selector '.way#way_window a#go_window'
301
+ click_link 'go_window'
302
+ page.should have_selector '.way#way_window .going', text: 'Makes no difference.'
303
+ sleep 3
304
+ page.should have_selector '.location#location_yard .name', text: 'Yard'
305
+ end
306
+
307
+ it 'closed' do
308
+ window = @ways_world.locations[:home].ways[:window]
309
+ window.close!
310
+ window.should be_closed
311
+ visit '/'
312
+ click_on 'start'
313
+ page.should have_selector '.way#way_window a#go_window'
314
+ click_link 'go_window'
315
+ page.should have_selector '.way#way_window .going', text: 'Makes no difference.'
316
+ page.should have_selector '.location#location_home .name', text: 'Home'
317
+ end
318
+
319
+ end
320
+
150
321
  end
151
322
 
152
323
  end
@@ -3,7 +3,7 @@ require 'fileutils'
3
3
  require 'stringio'
4
4
  require 'open-uri'
5
5
 
6
- STDERR.sync = true
6
+ STDOUT.sync = true
7
7
  STDERR.sync = true
8
8
 
9
9
  describe Woyo::Runner do
@@ -20,10 +20,10 @@ describe Woyo::Runner do
20
20
  'world' => %w( . .. .gitkeep ),
21
21
  'views' => %w( . .. app server ),
22
22
  'views/app' => %w( . .. .gitkeep ),
23
- 'views/server' => %w( . .. layout.haml location.haml ),
23
+ 'views/server' => %w( . .. layout.haml location.haml way.haml world.haml ),
24
24
  'public' => %w( . .. app server ),
25
25
  'public/app' => %w( . .. html images js css ),
26
- 'public/server' => %w( . .. default.html foundation foundation-5.2.2 jquery jquery-2.1.1 ),
26
+ 'public/server' => %w( . .. css default.html foundation-5.2.2 jquery-2.1.1 js ),
27
27
  }
28
28
  @original_path = Dir.pwd
29
29
  File.basename(@original_path).should eq 'woyo-server'
@@ -31,6 +31,7 @@ describe Woyo::Runner do
31
31
  end
32
32
 
33
33
  it 'prints a helpful message to stderr for help (-h/--help) switch' do
34
+ pending
34
35
  [['-h'],['--help']].each do |args|
35
36
  Woyo::Runner.run( args, out: @output, err: @error ).should eq 0
36
37
  @error.string.should include 'woyo'
@@ -108,6 +109,7 @@ describe Woyo::Runner do
108
109
  end
109
110
 
110
111
  it 'help (-h/--help) explains new command' do
112
+ pending
111
113
  [['-h'],['--help']].each do |help|
112
114
  Woyo::Runner.run( ['new'] + help, out: @output, err: @error ).should eq 0
113
115
  @error.string.should include 'woyo new'
@@ -153,12 +155,13 @@ describe Woyo::Runner do
153
155
  Woyo::Server.set :world, Woyo::World.new { start :home ; location(:home) { name 'Home' } }
154
156
  page = ''
155
157
  expect { page = open("http://127.0.0.1:4567/").read }.to_not raise_error
156
- page.should include 'Home'
158
+ page.should include 'Start'
157
159
  Woyo::Server.stop!
158
160
  thread.join
159
161
  end
160
162
 
161
163
  it 'help (-h/--help) explains server command' do
164
+ pending
162
165
  [['-h'],['--help']].each do |help|
163
166
  Woyo::Runner.run( ['server'] + help, out: @output, err: @error ).should eq 0
164
167
  @error.string.should include 'woyo server'
@@ -193,6 +196,7 @@ describe Woyo::Runner do
193
196
  # it 'starts a world application console'
194
197
 
195
198
  # it 'help (-h/--help) explains console command' do
199
+ # pending
196
200
  # [['-h'],['--help']].each do |help|
197
201
  # Woyo::Runner.run( ['console'] + help, out: @output, err: @error ).should eq 0
198
202
  # @error.string.should include 'woyo console'
@@ -275,6 +279,7 @@ describe Woyo::Runner do
275
279
  end
276
280
 
277
281
  it 'help (-h/--help) explains update command' do
282
+ pending
278
283
  [['-h'],['--help']].each do |help|
279
284
  Woyo::Runner.run( ['update'] + help, out: @output, err: @error ).should eq 0
280
285
  @error.string.should include 'woyo update'
data/tmux CHANGED
@@ -16,7 +16,6 @@ tmux send-keys -t rspec "rs" C-m
16
16
 
17
17
  tmux new-window -n irb -d
18
18
  tmux send-keys -t irb "cd ." C-m
19
- tmux send-keys -t irb "irb" C-m
20
-
19
+ tmux send-keys -t irb "bundle exec irb -r 'woyo/server'" C-m
21
20
  tmux swap-window -s vim -t shell
22
21
 
data/todo.txt ADDED
@@ -0,0 +1,11 @@
1
+
2
+ Debugger
3
+ Use haml tenplate for default page including layout.haml
4
+ Test location description states
5
+ Document DSL attributes and groups usage
6
+ -> way descriptions
7
+ -> way going
8
+ -> location descriptions
9
+ Auto generate DSL docs from tests ?
10
+ Test worlds in separate files - useful for manual testing
11
+
@@ -3,15 +3,23 @@
3
3
  %head
4
4
  %meta{ :charset => "utf-8" }
5
5
  %meta{ :name => "viewport", :content => "width=device-width, initial-scale=1.0" }
6
- %link{ :rel => "stylesheet", :href => "/foundation/css/foundation.css" }
7
- %script{ :src => "/foundation/js/vendor/modernizr.js" }
8
- %title WOYO - World of Your Own
6
+ %link{ :rel => "stylesheet", :href => "/foundation-5.2.2/css/foundation.css" }
7
+ %link{ :rel => "stylesheet", :href => "/css/server.css" }
8
+ %script{ :src => "/foundation-5.2.2/js/vendor/modernizr.js" }
9
+
10
+ %title<
11
+ - case
12
+ - when @world
13
+ = @world.name
14
+ - when @location
15
+ = @location.name
9
16
 
10
17
  %body
11
18
 
12
19
  = yield
13
20
 
14
- %script{ :src => "/foundation/js/vendor/jquery.js" }
15
- %script{ :src => "/foundation/js/foundation.min.js" }
16
- %script $(document).foundation();
17
-
21
+ %script{ :src => "/foundation-5.2.2/js/vendor/jquery.js" }
22
+ %script{ :src => "/foundation-5.2.2/js/foundation.min.js" }
23
+ %script{ :src => "/js/server.js" }
24
+
25
+
@@ -1,14 +1,7 @@
1
- %div.row
2
- %div.large-12.columns
3
- %div.location{ :id => "location_#{@location.id}" }
1
+ .row
2
+ .large-12.columns
3
+ .location{ :id => "location_#{@location.id}" }
4
4
  %h1.name= @location.name
5
5
  %p.description= @location.description
6
-
7
- - @location.ways.each do |id,way|
8
- %div.row
9
- %div.large-12.columns
10
- %div.way{ :id => "way_#{id}" }
11
- %a{ :id => "go_#{id}", :href => "/go/#{id}" }
12
- %h3.name= way.name
13
- %p.description= way.description
6
+ = partial :way, collection: @location.ways.values
14
7
 
@@ -0,0 +1,7 @@
1
+ .row
2
+ .large-12.columns
3
+ .way{ :id => "way_#{way.id}" }
4
+ %a.go{ :id => "go_#{way.id}", :href => "/go/#{way.id}" }
5
+ %h3.name= way.name
6
+ %p.description= way.description
7
+ %p.going
@@ -0,0 +1,15 @@
1
+ .row
2
+ .large-12.columns
3
+ .world
4
+ %h1.name= @world.name
5
+ %p.description= @world.description
6
+
7
+ .row
8
+ .large-12.columns
9
+ - if @world.start
10
+ .start
11
+ %a#start{ :href => "/location" } Start
12
+ - else
13
+ .no-start
14
+ %p No start location defined
15
+
data/woyo-server.gemspec CHANGED
@@ -23,10 +23,12 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rack-test", "~> 0.6.2"
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "capybara"
26
+ spec.add_development_dependency "selenium-webdriver"
26
27
 
27
28
  spec.add_runtime_dependency "woyo-world", Woyo::SERVER_VERSION
28
29
  spec.add_runtime_dependency "sinatra", "~> 1.4.5"
29
30
  spec.add_runtime_dependency "sinatra-contrib", "~> 1.4.2"
31
+ spec.add_runtime_dependency "sinatra-partial"
30
32
  spec.add_runtime_dependency "haml"
31
33
 
32
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: woyo-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerard Fowley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-10 00:00:00.000000000 Z
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,20 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: selenium-webdriver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: woyo-world
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - '='
88
102
  - !ruby/object:Gem::Version
89
- version: 0.0.5
103
+ version: 0.0.6
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - '='
95
109
  - !ruby/object:Gem::Version
96
- version: 0.0.5
110
+ version: 0.0.6
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: sinatra
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: 1.4.2
139
+ - !ruby/object:Gem::Dependency
140
+ name: sinatra-partial
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: haml
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +188,7 @@ files:
160
188
  - public/app/html/.gitkeep
161
189
  - public/app/images/.gitkeep
162
190
  - public/app/js/.gitkeep
191
+ - public/server/css/server.css
163
192
  - public/server/default.html
164
193
  - public/server/foundation-5.2.2/css/foundation.css
165
194
  - public/server/foundation-5.2.2/css/foundation.min.css
@@ -194,13 +223,17 @@ files:
194
223
  - public/server/jquery-2.1.1/jquery.js
195
224
  - public/server/jquery-2.1.1/jquery.min.js
196
225
  - public/server/jquery-2.1.1/jquery.min.map
226
+ - public/server/js/server.js
197
227
  - spec/spec_helper.rb
198
228
  - spec/woyo/server/1_server_spec.rb
199
229
  - spec/woyo/server/runner_spec.rb
200
230
  - tmux
231
+ - todo.txt
201
232
  - views/app/.gitkeep
202
233
  - views/server/layout.haml
203
234
  - views/server/location.haml
235
+ - views/server/way.haml
236
+ - views/server/world.haml
204
237
  - world/.gitkeep
205
238
  - woyo-server.gemspec
206
239
  homepage: ''