Class: Mumukit::Server::TestServer

Inherits:
Object
  • Object
show all
Includes:
WithContentType
Defined in:
lib/mumukit/server/test_server.rb

Instance Method Summary collapse

Methods included from WithContentType

#content_type

Instance Method Details

#info(url) ⇒ Object



12
13
14
# File 'lib/mumukit/server/test_server.rb', line 12

def info(url)
  runtime.info.merge(runtime..).merge(url: url)
end

#parse_request(sinatra_request) ⇒ Object



19
20
21
# File 'lib/mumukit/server/test_server.rb', line 19

def parse_request(sinatra_request)
  OpenStruct.new parse_request_headers(sinatra_request).merge(parse_request_body(sinatra_request))
end

#parse_request_body(sinatra_request) ⇒ Object



27
28
29
30
31
# File 'lib/mumukit/server/test_server.rb', line 27

def parse_request_body(sinatra_request)
  JSON.parse(sinatra_request.body.read).tap do |it|
    I18n.locale = it['locale'] || :en
  end rescue {}
end

#parse_request_headers(sinatra_request) ⇒ Object



23
24
25
# File 'lib/mumukit/server/test_server.rb', line 23

def parse_request_headers(sinatra_request)
  {}
end

#query!(request) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/mumukit/server/test_server.rb', line 51

def query!(request)
  respond_to(request) do |r|
    results = run_query!(r)
    Mumukit::Server::ResponseBuilder.build do
      add_query_results(results)
    end
  end
end

#run_expectations!(request) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/mumukit/server/test_server.rb', line 70

def run_expectations!(request)
  if request.expectations
    compile_and_run runtime.expectations_hook, request
  else
    []
  end
end

#run_feedback!(request, results) ⇒ Object



78
79
80
# File 'lib/mumukit/server/test_server.rb', line 78

def run_feedback!(request, results)
  runtime.feedback_hook.run!(request, results)
end

#run_query!(request) ⇒ Object



60
61
62
# File 'lib/mumukit/server/test_server.rb', line 60

def run_query!(request)
  compile_and_run runtime.query_hook, request
end

#run_tests!(request) ⇒ Object



64
65
66
67
68
# File 'lib/mumukit/server/test_server.rb', line 64

def run_tests!(request)
  return ['', :passed] if request.test.blank?

  compile_and_run runtime.test_hook, request
end

#runtimeObject



8
9
10
# File 'lib/mumukit/server/test_server.rb', line 8

def runtime
  Mumukit.runtime
end

#start_request!(_request) ⇒ Object



16
17
# File 'lib/mumukit/server/test_server.rb', line 16

def start_request!(_request)
end

#test!(request) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/mumukit/server/test_server.rb', line 33

def test!(request)
  respond_to(request) do |r|
    test_results = run_tests! r
    expectation_results = run_expectations! r

    results = OpenStruct.new(test_results: test_results,
                             expectation_results: expectation_results)

    feedback = run_feedback! r, results

    Mumukit::Server::ResponseBuilder.build do
      add_test_results(test_results)
      add_expectation_results(expectation_results)
      add_feedback(feedback)
    end
  end
end