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
15
16
17
# File 'lib/mumukit/server/test_server.rb', line 12

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

#parse_request(sinatra_request) ⇒ Object



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

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



30
31
32
33
34
35
36
37
38
# File 'lib/mumukit/server/test_server.rb', line 30

def parse_request_body(sinatra_request)
  begin
    parse_body(sinatra_request).tap do |it|
      I18n.locale = it['locale'] || :en
    end
  rescue StandardError => e
    raise StandardError.new("Error parsing request body. Cause: #{e}")
  end
end

#parse_request_headers(sinatra_request) ⇒ Object



26
27
28
# File 'lib/mumukit/server/test_server.rb', line 26

def parse_request_headers(sinatra_request)
  {}
end

#query!(request) ⇒ Object



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

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



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

def run_expectations!(request)
  return [] if should_skip_expectations?(request)

  compile_and_run runtime.expectations_hook, request
end

#run_feedback!(request, results) ⇒ Object



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

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

#run_tests!(request) ⇒ Object



67
68
69
70
71
# File 'lib/mumukit/server/test_server.rb', line 67

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

  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



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

def start_request!(_request)
end

#test!(request) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/mumukit/server/test_server.rb', line 40

def test!(request)
  respond_to(request) do |r|
    pipeline = Mumukit::Server::TestPipeline.new self, r
    pipeline.evaluate!
    pipeline.generate_feedback!
    pipeline.response
  end
end

#try!(request) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/mumukit/server/test_server.rb', line 58

def try!(request)
  respond_to(request) do |r|
    results = run_try!(r)
    Mumukit::Server::ResponseBuilder.build do
      add_try_results(results)
    end
  end
end