web-console-rails3 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.markdown +2 -2
  3. data/app/assets/javascripts/web_console/application.js +1 -3
  4. data/app/assets/javascripts/web_console/console_sessions.js +3 -24
  5. data/app/assets/stylesheets/web_console/application.css +1 -0
  6. data/app/assets/stylesheets/web_console/console_sessions.css +0 -8
  7. data/app/controllers/web_console/application_controller.rb +1 -0
  8. data/app/controllers/web_console/console_sessions_controller.rb +24 -4
  9. data/app/models/web_console/console_session.rb +32 -62
  10. data/app/views/web_console/console_sessions/index.html.erb +9 -4
  11. data/config/routes.rb +7 -1
  12. data/lib/assets/javascripts/web-console.js +1 -0
  13. data/lib/assets/javascripts/web_console.js +202 -0
  14. data/lib/web_console.rb +1 -1
  15. data/lib/web_console/engine.rb +17 -7
  16. data/lib/web_console/slave.rb +112 -0
  17. data/lib/web_console/version.rb +1 -1
  18. data/test/controllers/web_console/console_sessions_controller_test.rb +29 -11
  19. data/test/dummy/config/application.rb +17 -1
  20. data/test/dummy/config/application.rb.orig +58 -0
  21. data/test/dummy/log/development.log +28962 -0
  22. data/test/dummy/log/test.log +329 -0
  23. data/test/dummy/tmp/cache/assets/CBD/6E0/sprockets%2F3293dfc0984076f0e8371a9e7640f4a8 +0 -0
  24. data/test/dummy/tmp/cache/assets/CD0/FC0/sprockets%2Fbb2777627d42a216f3d9ced4322040b3 +0 -0
  25. data/test/dummy/tmp/cache/assets/CFA/E30/sprockets%2F35be1d26565dc0310c29f1a5e2f62f10 +0 -0
  26. data/test/dummy/tmp/cache/assets/D1D/FD0/sprockets%2Fa4a5ffe670666ce3d8d59179905201ef +0 -0
  27. data/test/dummy/tmp/cache/assets/D21/6B0/sprockets%2F9e242803fe56d6305274ff7e6487deda +0 -0
  28. data/test/dummy/tmp/cache/assets/D22/980/sprockets%2Fce6aa94ad2bc107104c0540f62c5128c +0 -0
  29. data/test/dummy/tmp/cache/assets/D3E/380/sprockets%2F434d98c8380bb9daf43810155aaf68ba +0 -0
  30. data/test/dummy/tmp/cache/assets/D66/940/sprockets%2F6151175b6ad4f9bab0c7e2b508e7b70f +0 -0
  31. data/test/dummy/tmp/cache/assets/D69/710/sprockets%2Ff67078d4b979a58c97feede196f6b385 +0 -0
  32. data/test/dummy/tmp/cache/assets/D95/C40/sprockets%2F09cb0a274209abf0391cbfce6ee67b82 +0 -0
  33. data/test/dummy/tmp/cache/assets/D9B/A30/sprockets%2Fc3436b3fe5da7c2456f26e2ae36da6c5 +0 -0
  34. data/test/dummy/tmp/cache/assets/D9F/400/sprockets%2F7f60332f86073dc8ed80b4c2a9dfcbe1 +0 -0
  35. data/test/dummy/tmp/cache/assets/DAE/8C0/sprockets%2Fa9b8f7bc5ca2efe658a13d7f4609c729 +0 -0
  36. data/test/dummy/tmp/cache/assets/DB3/0C0/sprockets%2F689fb998e2a7add3e00db88df254c87a +0 -0
  37. data/test/dummy/tmp/cache/assets/DD4/440/sprockets%2Fa33d646ac00d8bc87a4a496af6eed96f +0 -0
  38. data/test/dummy/tmp/cache/assets/DDB/890/sprockets%2F5ed566ca9fafd1b82373ffea2a8d8681 +0 -0
  39. data/test/models/console_session_test.rb +16 -75
  40. data/test/web_console/slave_test.rb +53 -0
  41. data/test/web_console_test.rb +51 -11
  42. data/vendor/assets/javascripts/vt100.js +4408 -0
  43. data/vendor/assets/stylesheets/vt100.css +272 -0
  44. metadata +23 -42
  45. data/lib/web_console/fiber.rb +0 -48
  46. data/lib/web_console/repl.rb +0 -59
  47. data/lib/web_console/repl/dummy.rb +0 -38
  48. data/lib/web_console/repl/irb.rb +0 -62
  49. data/lib/web_console/stream.rb +0 -30
  50. data/test/web_console/repl/dummy_test.rb +0 -54
  51. data/test/web_console/repl/irb_test.rb +0 -156
  52. data/test/web_console/repl_test.rb +0 -15
  53. data/vendor/assets/javascripts/jquery.console.js +0 -727
@@ -2120,3 +2120,332 @@ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
2120
2120
   (0.0ms) rollback transaction
2121
2121
   (0.0ms) begin transaction
2122
2122
   (0.0ms) rollback transaction
2123
+ Connecting to database specified by database.yml
2124
+  (0.3ms) begin transaction
2125
+  (0.0ms) rollback transaction
2126
+  (33.5ms) begin transaction
2127
+  (0.1ms) rollback transaction
2128
+  (0.0ms) begin transaction
2129
+  (0.0ms) rollback transaction
2130
+  (0.0ms) begin transaction
2131
+  (0.1ms) rollback transaction
2132
+  (0.1ms) begin transaction
2133
+  (0.1ms) rollback transaction
2134
+  (0.0ms) begin transaction
2135
+  (0.0ms) rollback transaction
2136
+  (0.0ms) begin transaction
2137
+  (0.0ms) rollback transaction
2138
+  (0.0ms) begin transaction
2139
+  (0.1ms) rollback transaction
2140
+  (0.0ms) begin transaction
2141
+  (0.0ms) rollback transaction
2142
+  (0.1ms) begin transaction
2143
+  (0.0ms) rollback transaction
2144
+  (0.0ms) begin transaction
2145
+  (0.0ms) rollback transaction
2146
+  (0.0ms) begin transaction
2147
+  (0.1ms) rollback transaction
2148
+  (0.1ms) begin transaction
2149
+  (0.1ms) rollback transaction
2150
+  (0.0ms) begin transaction
2151
+  (0.1ms) rollback transaction
2152
+  (0.0ms) begin transaction
2153
+  (0.1ms) rollback transaction
2154
+  (0.0ms) begin transaction
2155
+  (0.0ms) rollback transaction
2156
+  (0.0ms) begin transaction
2157
+  (0.0ms) rollback transaction
2158
+  (0.0ms) begin transaction
2159
+  (0.0ms) rollback transaction
2160
+  (0.0ms) begin transaction
2161
+  (0.1ms) rollback transaction
2162
+  (0.0ms) begin transaction
2163
+  (0.1ms) rollback transaction
2164
+  (0.1ms) begin transaction
2165
+  (0.0ms) rollback transaction
2166
+  (0.0ms) begin transaction
2167
+  (0.0ms) rollback transaction
2168
+  (0.0ms) begin transaction
2169
+  (0.0ms) rollback transaction
2170
+  (0.0ms) begin transaction
2171
+  (0.0ms) rollback transaction
2172
+  (0.0ms) begin transaction
2173
+  (0.0ms) rollback transaction
2174
+  (0.0ms) begin transaction
2175
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2176
+ Completed 200 OK in 13ms (Views: 12.1ms | ActiveRecord: 0.0ms)
2177
+  (0.1ms) rollback transaction
2178
+  (0.0ms) begin transaction
2179
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2180
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2181
+ Processing by WebConsole::ConsoleSessionsController#pending_output as HTML
2182
+ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
2183
+  (0.1ms) rollback transaction
2184
+  (0.0ms) begin transaction
2185
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2186
+ Completed 200 OK in 2ms (Views: 1.9ms | ActiveRecord: 0.0ms)
2187
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2188
+ Unpermitted parameters: id
2189
+ Completed 200 OK in 2ms (Views: 1.4ms | ActiveRecord: 0.0ms)
2190
+  (0.1ms) rollback transaction
2191
+  (0.0ms) begin transaction
2192
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2193
+ Completed 200 OK in 3ms (Views: 2.9ms | ActiveRecord: 0.0ms)
2194
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2195
+ Unpermitted parameters: id
2196
+ Completed 422 Unprocessable Entity in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2197
+  (0.1ms) rollback transaction
2198
+  (0.0ms) begin transaction
2199
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2200
+ Completed 200 OK in 2ms (Views: 2.1ms | ActiveRecord: 0.0ms)
2201
+  (0.1ms) rollback transaction
2202
+  (0.0ms) begin transaction
2203
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2204
+ Filter chain halted as :prevent_unauthorized_requests! rendered or redirected
2205
+ Completed 401 Unauthorized in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2206
+  (0.1ms) rollback transaction
2207
+  (0.0ms) begin transaction
2208
+  (0.1ms) rollback transaction
2209
+  (0.0ms) begin transaction
2210
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2211
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2212
+  (0.1ms) rollback transaction
2213
+  (0.0ms) begin transaction
2214
+  (0.2ms) begin transaction
2215
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2216
+  (0.1ms) begin transaction
2217
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2218
+  (0.1ms) begin transaction
2219
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2220
+  (0.1ms) begin transaction
2221
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2222
+  (0.1ms) begin transaction
2223
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2224
+  (0.1ms) begin transaction
2225
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2226
+  (0.1ms) begin transaction
2227
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2228
+  (0.2ms) begin transaction
2229
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2230
+  (0.2ms) begin transaction
2231
+ SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
2232
+ Connecting to database specified by database.yml
2233
+  (0.3ms) begin transaction
2234
+  (0.0ms) rollback transaction
2235
+  (34.3ms) begin transaction
2236
+  (0.1ms) rollback transaction
2237
+  (0.0ms) begin transaction
2238
+  (0.0ms) rollback transaction
2239
+  (0.0ms) begin transaction
2240
+  (0.0ms) rollback transaction
2241
+  (0.0ms) begin transaction
2242
+  (0.0ms) rollback transaction
2243
+  (0.0ms) begin transaction
2244
+  (0.0ms) rollback transaction
2245
+  (0.0ms) begin transaction
2246
+  (0.0ms) rollback transaction
2247
+  (0.0ms) begin transaction
2248
+  (0.0ms) rollback transaction
2249
+  (0.0ms) begin transaction
2250
+  (0.0ms) rollback transaction
2251
+  (0.1ms) begin transaction
2252
+  (0.0ms) rollback transaction
2253
+  (0.0ms) begin transaction
2254
+  (0.0ms) rollback transaction
2255
+  (0.0ms) begin transaction
2256
+  (0.0ms) rollback transaction
2257
+  (0.0ms) begin transaction
2258
+  (0.1ms) rollback transaction
2259
+  (0.0ms) begin transaction
2260
+  (0.1ms) rollback transaction
2261
+  (0.0ms) begin transaction
2262
+  (0.1ms) rollback transaction
2263
+  (0.0ms) begin transaction
2264
+  (0.0ms) rollback transaction
2265
+  (0.0ms) begin transaction
2266
+  (0.0ms) rollback transaction
2267
+  (0.0ms) begin transaction
2268
+  (0.0ms) rollback transaction
2269
+  (0.0ms) begin transaction
2270
+  (0.0ms) rollback transaction
2271
+  (0.0ms) begin transaction
2272
+  (0.0ms) rollback transaction
2273
+  (0.1ms) begin transaction
2274
+  (0.0ms) rollback transaction
2275
+  (0.0ms) begin transaction
2276
+  (0.0ms) rollback transaction
2277
+  (0.0ms) begin transaction
2278
+  (0.0ms) rollback transaction
2279
+  (0.0ms) begin transaction
2280
+  (0.0ms) rollback transaction
2281
+  (0.0ms) begin transaction
2282
+  (0.0ms) rollback transaction
2283
+  (0.0ms) begin transaction
2284
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2285
+ Completed 200 OK in 11ms (Views: 9.8ms | ActiveRecord: 0.0ms)
2286
+  (0.1ms) rollback transaction
2287
+  (0.1ms) begin transaction
2288
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2289
+ Completed 200 OK in 2ms (Views: 2.1ms | ActiveRecord: 0.0ms)
2290
+ Processing by WebConsole::ConsoleSessionsController#pending_output as HTML
2291
+ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
2292
+  (0.1ms) rollback transaction
2293
+  (0.1ms) begin transaction
2294
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2295
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2296
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2297
+ Unpermitted parameters: id
2298
+ Completed 200 OK in 1ms (Views: 0.8ms | ActiveRecord: 0.0ms)
2299
+  (0.1ms) rollback transaction
2300
+  (0.0ms) begin transaction
2301
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2302
+ Completed 200 OK in 3ms (Views: 2.8ms | ActiveRecord: 0.0ms)
2303
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2304
+ Unpermitted parameters: id
2305
+ Completed 422 Unprocessable Entity in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2306
+  (0.1ms) rollback transaction
2307
+  (0.0ms) begin transaction
2308
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2309
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2310
+  (0.1ms) rollback transaction
2311
+  (0.0ms) begin transaction
2312
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2313
+ Filter chain halted as :prevent_unauthorized_requests! rendered or redirected
2314
+ Completed 401 Unauthorized in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2315
+  (0.1ms) rollback transaction
2316
+  (0.0ms) begin transaction
2317
+  (0.1ms) rollback transaction
2318
+  (0.0ms) begin transaction
2319
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2320
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2321
+  (0.1ms) rollback transaction
2322
+  (0.0ms) begin transaction
2323
+  (0.0ms) rollback transaction
2324
+  (0.0ms) begin transaction
2325
+  (0.0ms) rollback transaction
2326
+  (0.0ms) begin transaction
2327
+  (0.0ms) rollback transaction
2328
+  (0.0ms) begin transaction
2329
+  (0.0ms) rollback transaction
2330
+  (0.0ms) begin transaction
2331
+  (0.0ms) rollback transaction
2332
+  (0.0ms) begin transaction
2333
+  (0.0ms) rollback transaction
2334
+  (0.0ms) begin transaction
2335
+  (0.0ms) rollback transaction
2336
+  (0.0ms) begin transaction
2337
+  (0.0ms) rollback transaction
2338
+  (0.0ms) begin transaction
2339
+  (0.0ms) rollback transaction
2340
+  (0.0ms) begin transaction
2341
+  (0.0ms) rollback transaction
2342
+ Connecting to database specified by database.yml
2343
+  (0.3ms) begin transaction
2344
+  (0.0ms) rollback transaction
2345
+  (33.8ms) begin transaction
2346
+  (0.1ms) rollback transaction
2347
+  (0.0ms) begin transaction
2348
+  (0.1ms) rollback transaction
2349
+  (0.0ms) begin transaction
2350
+  (0.0ms) rollback transaction
2351
+  (0.0ms) begin transaction
2352
+  (0.0ms) rollback transaction
2353
+  (0.0ms) begin transaction
2354
+  (0.0ms) rollback transaction
2355
+  (0.0ms) begin transaction
2356
+  (0.0ms) rollback transaction
2357
+  (0.0ms) begin transaction
2358
+  (0.0ms) rollback transaction
2359
+  (0.0ms) begin transaction
2360
+  (0.0ms) rollback transaction
2361
+  (0.1ms) begin transaction
2362
+  (0.0ms) rollback transaction
2363
+  (0.0ms) begin transaction
2364
+  (0.0ms) rollback transaction
2365
+  (0.0ms) begin transaction
2366
+  (0.0ms) rollback transaction
2367
+  (0.0ms) begin transaction
2368
+  (0.0ms) rollback transaction
2369
+  (0.0ms) begin transaction
2370
+  (0.1ms) rollback transaction
2371
+  (0.0ms) begin transaction
2372
+  (0.1ms) rollback transaction
2373
+  (0.0ms) begin transaction
2374
+  (0.0ms) rollback transaction
2375
+  (0.0ms) begin transaction
2376
+  (0.0ms) rollback transaction
2377
+  (0.0ms) begin transaction
2378
+  (0.0ms) rollback transaction
2379
+  (0.0ms) begin transaction
2380
+  (0.0ms) rollback transaction
2381
+  (0.0ms) begin transaction
2382
+  (0.0ms) rollback transaction
2383
+  (0.1ms) begin transaction
2384
+  (0.0ms) rollback transaction
2385
+  (0.0ms) begin transaction
2386
+  (0.0ms) rollback transaction
2387
+  (0.0ms) begin transaction
2388
+  (0.0ms) rollback transaction
2389
+  (0.0ms) begin transaction
2390
+  (0.0ms) rollback transaction
2391
+  (0.0ms) begin transaction
2392
+  (0.0ms) rollback transaction
2393
+  (0.0ms) begin transaction
2394
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2395
+ Completed 200 OK in 11ms (Views: 10.1ms | ActiveRecord: 0.0ms)
2396
+  (0.1ms) rollback transaction
2397
+  (0.0ms) begin transaction
2398
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2399
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2400
+ Processing by WebConsole::ConsoleSessionsController#pending_output as HTML
2401
+ Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
2402
+  (0.1ms) rollback transaction
2403
+  (0.0ms) begin transaction
2404
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2405
+ Completed 200 OK in 2ms (Views: 2.0ms | ActiveRecord: 0.0ms)
2406
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2407
+ Unpermitted parameters: id
2408
+ Completed 200 OK in 2ms (Views: 0.8ms | ActiveRecord: 0.0ms)
2409
+  (0.1ms) rollback transaction
2410
+  (0.0ms) begin transaction
2411
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2412
+ Completed 200 OK in 3ms (Views: 2.9ms | ActiveRecord: 0.0ms)
2413
+ Processing by WebConsole::ConsoleSessionsController#input as HTML
2414
+ Unpermitted parameters: id
2415
+ Completed 422 Unprocessable Entity in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2416
+  (0.1ms) rollback transaction
2417
+  (0.0ms) begin transaction
2418
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2419
+ Completed 200 OK in 2ms (Views: 2.1ms | ActiveRecord: 0.0ms)
2420
+  (0.1ms) rollback transaction
2421
+  (0.0ms) begin transaction
2422
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2423
+ Filter chain halted as :prevent_unauthorized_requests! rendered or redirected
2424
+ Completed 401 Unauthorized in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms)
2425
+  (0.1ms) rollback transaction
2426
+  (0.0ms) begin transaction
2427
+  (0.1ms) rollback transaction
2428
+  (0.0ms) begin transaction
2429
+ Processing by WebConsole::ConsoleSessionsController#index as HTML
2430
+ Completed 200 OK in 3ms (Views: 2.2ms | ActiveRecord: 0.0ms)
2431
+  (0.1ms) rollback transaction
2432
+  (0.1ms) begin transaction
2433
+  (0.0ms) rollback transaction
2434
+  (0.0ms) begin transaction
2435
+  (0.0ms) rollback transaction
2436
+  (0.0ms) begin transaction
2437
+  (0.0ms) rollback transaction
2438
+  (0.0ms) begin transaction
2439
+  (0.0ms) rollback transaction
2440
+  (0.0ms) begin transaction
2441
+  (0.0ms) rollback transaction
2442
+  (0.0ms) begin transaction
2443
+  (0.0ms) rollback transaction
2444
+  (0.0ms) begin transaction
2445
+  (0.0ms) rollback transaction
2446
+  (0.0ms) begin transaction
2447
+  (0.0ms) rollback transaction
2448
+  (0.0ms) begin transaction
2449
+  (0.0ms) rollback transaction
2450
+  (0.0ms) begin transaction
2451
+  (0.0ms) rollback transaction
@@ -5,72 +5,40 @@ module WebConsole
5
5
  include ActiveModel::Lint::Tests
6
6
 
7
7
  setup do
8
- reset_persistent_storage!
9
- @model1 = @model = new_valid_model
10
- @model2 = new_valid_model
8
+ PTY.stubs(:spawn).returns([String.new, String.new, Random.rand(20000)])
9
+ ConsoleSession::INMEMORY_STORAGE.clear
10
+ @model1 = @model = ConsoleSession.new
11
+ @model2 = ConsoleSession.new
11
12
  end
12
13
 
13
- test 'consequential ids on creation' do
14
- assert_equal 1, @model1.id
15
- assert_equal 2, @model2.id
16
- end
17
-
18
- test 'populates output on save' do
19
- model = new_model
20
- assert_nil model.output
21
- model.save(input: 'puts "foo"')
22
- assert_match %r{foo}, model.output
23
- end
24
-
25
- test 'populates prompt on save' do
26
- assert_not_nil @model.prompt
27
- end
28
-
29
- test 'preserved models can be found' do
30
- id = @model.tap(&:save).id
31
- assert_equal @model, ConsoleSession.find(id)
32
- end
33
-
34
- test 'trying to find a model fails if no longer in storage' do
35
- assert_raises(ConsoleSession::NotFound) { ConsoleSession.find(0) }
14
+ test 'raises ConsoleSession::NotFound on not found sessions' do
15
+ assert_raises(ConsoleSession::NotFound) { ConsoleSession.find(-1) }
36
16
  end
37
17
 
38
18
  test 'find coerces ids' do
39
- id = @model.tap(&:save).id
40
- assert_equal @model, ConsoleSession.find("#{id}")
19
+ assert_equal @model.persist, ConsoleSession.find("#{@model.pid}")
41
20
  end
42
21
 
43
22
  test 'not found exceptions are json serializable' do
44
- exception = assert_raises(ConsoleSession::NotFound) do
45
- ConsoleSession.find(0)
46
- end
23
+ exception = assert_raises(ConsoleSession::NotFound) { ConsoleSession.find(-1) }
47
24
  assert_equal '{"error":"Session unavailable"}', exception.to_json
48
25
  end
49
26
 
27
+ test 'can be used as slave as the methods are delegated' do
28
+ slave_methods = Slave.instance_methods - @model.methods
29
+ slave_methods.each { |method| assert @model.respond_to?(method) }
30
+ end
31
+
50
32
  test 'persisted models knows that they are in memory' do
51
33
  refute @model.persisted?
52
- @model.save
34
+ @model.persist
53
35
  assert @model.persisted?
54
36
  end
55
37
 
56
38
  test 'persisted models knows about their keys' do
57
39
  assert_nil @model.to_key
58
- @model.save
59
- assert_equal [1], @model.to_key
60
- end
61
-
62
- test 'supports json serialization' do
63
- rails3 = Rails::VERSION::MAJOR == 3
64
-
65
- with_dummy_adapter do
66
- model = new_model
67
- expected_nil_json = "{\"id\":3,\"input\":null,\"output\":null,\"prompt\":\"#{rails3 ? ">>" : "\\u003E\\u003E"} \"}"
68
- assert_equal expected_nil_json, model.to_json
69
-
70
- model.save(input: 'puts "foo"')
71
- expected_json = "{\"id\":3,\"input\":\"puts \\\"foo\\\"\",\"output\":\"foo\\n=#{rails3 ? ">" : "\\u003E"} nil\\n\",\"prompt\":\"#{rails3 ? ">>" : "\\u003E\\u003E"} \"}"
72
- assert_equal expected_json, model.to_json
73
- end
40
+ @model.persist
41
+ assert_not_nil @model.to_key
74
42
  end
75
43
 
76
44
  test 'create gives already persisted models' do
@@ -80,32 +48,5 @@ module WebConsole
80
48
  test 'no gives not persisted models' do
81
49
  refute ConsoleSession.new.persisted?
82
50
  end
83
-
84
- private
85
- def new_model(attributes = {})
86
- ConsoleSession.new(attributes)
87
- end
88
-
89
- def new_valid_model(attributes = {})
90
- attributes.merge!(input: 'puts "foo"') unless attributes[:input].present?
91
- new_model(attributes)
92
- end
93
-
94
- def reset_persistent_storage!
95
- ConsoleSession::INMEMORY_STORAGE.clear
96
- ConsoleSession.class_variable_set(:@@counter, 0)
97
- end
98
-
99
- def with_dummy_adapter
100
- previous_method = WebConsole::REPL.method(:default)
101
- WebConsole::REPL.module_eval do
102
- define_singleton_method(:default) { WebConsole::REPL::Dummy }
103
- end
104
- yield
105
- ensure
106
- WebConsole::REPL.module_eval do
107
- define_singleton_method(:default, &previous_method)
108
- end
109
- end
110
51
  end
111
52
  end