Skip to content

Commit

Permalink
Add HTTPServer.default_url{,=}
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Mar 27, 2019
1 parent a57a2cd commit c3e120e
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 30 deletions.
17 changes: 15 additions & 2 deletions lib/chupa-text/decomposers/http-server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,22 @@ module Decomposers
class HTTPServer < Decomposer
registry.register("http-server", self)

@@default_url = nil
class << self
def default_url
@@default_url
end

def default_url=(url)
@@default_url = url
end
end

def initialize(options)
super
@url = @options[:url] || ENV["CHUPA_TEXT_HTTP_SERVER_URL"]
@url = @options[:url] ||
self.class.default_url ||
ENV["CHUPA_TEXT_HTTP_SERVER_URL"]
@url = URI(@url) if @url
end

Expand All @@ -36,7 +49,7 @@ def target?(data)

def target_score(data)
if target?(data)
-100
100
else
nil
end
Expand Down
84 changes: 56 additions & 28 deletions test/decomposers/test-http-server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ class TestDecomposersHTTPServer < Test::Unit::TestCase
include Helper

def setup
ChupaText::Decomposers::HTTPServer.default_url = nil
setup_server
setup_data
setup_decomposer
end

def setup_server
@port = 40080
@path = "/extraction.json"
@server_url = "http://127.0.0.1:#{@port}#{@path}"
Expand All @@ -28,54 +35,75 @@ def setup
AccessLog: [])
@server.mount_proc(@path) do |request, response|
response["Content-Type"] = "application/json"
response.body = JSON.generate(@actual)
response.body = JSON.generate(@extracted)
end
@server_thread = Thread.new do
@server.start
end
@decomposer = ChupaText::Decomposers::HTTPServer.new(:url => @server_url)
end

def teardown
@server.shutdown
@server_thread.join
end

sub_test_case("decompose") do
def test_valid
csv = <<-CSV
def setup_data
@input_data = <<-CSV
Hello,World
Ruby,ChupaText
CSV
extracted = csv.gsub(/,/, "\t")
@actual = {
"mime-type" => "text/csv",
"uri" => "file:///tmp/hello.csv",
"path" => "/tmp/hello.csv",
"size" => csv.bytesize,
CSV
@input_mime_type = "text/csv"
@input_path = "/tmp/hello.csv"
@extracted_text = @input_data.gsub(/,/, "\t")
@extracted_path = @input_path.gsub(/\.csv\z/, ".txt")
@extracted = {
"mime-type" => @input_mime_type,
"uri" => "file://#{@input_path}",
"path" => @input_path,
"size" => @input_data.bytesize,
"texts" => [
{
"mime-type" => "text/plain",
"uri" => "file:///tmp/hello.txt",
"path" => "/tmp/hello.txt",
"size" => extracted.bytesize,
"uri" => "file://#{@extracted_path}",
"path" => @extracted_path,
"size" => @extracted_text.bytesize,
"source-mime-types" => [
"text/csv",
@input_mime_type,
],
"body" => extracted,
"body" => @extracted_text,
},
],
}
assert_equal([extracted],
decompose(csv).collect(&:body))

end

def setup_decomposer
@decomposer = ChupaText::Decomposers::HTTPServer.new(:url => @server_url)
end

def teardown
teardown_server
end

def teardown_server
@server.shutdown
@server_thread.join
end

sub_test_case("decompose") do
def test_valid
assert_equal([@extracted_text],
decompose.collect(&:body))
end

def test_default_url
ChupaText::Decomposers::HTTPServer.default_url = @server_url
@decomposer = ChupaText::Decomposers::HTTPServer.new({})
assert_equal([@extracted_text],
decompose.collect(&:body))
end

private
def decompose(csv)
def decompose
data = ChupaText::Data.new
data.path = "/tmp/hello.csv"
data.mime_type = "text/csv"
data.body = csv
data.path = @input_path
data.mime_type = @input_mime_type
data.body = @input_data

decomposed = []
@decomposer.decompose(data) do |decomposed_data|
Expand Down

0 comments on commit c3e120e

Please sign in to comment.