web-console-rails3 0.2.0 → 0.3.0

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.
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