linguara 0.0.3 → 0.0.4
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.
- data/.gitignore +1 -0
- data/LICENSE +2 -0
- data/README.rdoc +25 -1
- data/Rakefile +13 -1
- data/VERSION +1 -1
- data/init.rb +1 -0
- data/lib/linguara/active_record.rb +29 -6
- data/lib/linguara/configuration.rb +3 -1
- data/lib/linguara/translation.rb +22 -0
- data/lib/linguara/utils.rb +8 -5
- data/lib/linguara.rb +89 -23
- data/linguara.gemspec +9 -5
- data/spec/helper_model/blog_post.rb +1 -1
- data/spec/linguara_spec.rb +88 -10
- data/spec/spec_helper.rb +3 -4
- data/spec/translation_spec.rb +24 -0
- metadata +9 -4
data/.gitignore
CHANGED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,30 @@
|
|
1
1
|
= linguara
|
2
2
|
|
3
|
-
This gem allows
|
3
|
+
This gem allows integration with Linguara WebAPI.
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
You need to somehow store your translation. We assume you use globalize2
|
8
|
+
|
9
|
+
gem install globalize2
|
10
|
+
gem install linguara
|
11
|
+
|
12
|
+
Create configuration file in config/initializers/linguara.rb:
|
13
|
+
|
14
|
+
Linguara.configure do |config|
|
15
|
+
config.api_key = 'api_key'
|
16
|
+
config.server_path = 'http://www.example.com/'
|
17
|
+
config.return_url = 'http://maverick.kumulator.com:82/linguara'
|
18
|
+
end
|
19
|
+
|
20
|
+
In your model add these two lines:
|
21
|
+
|
22
|
+
BlogPost < ActiveRecord::Base
|
23
|
+
translates :name, :description
|
24
|
+
translates_with_linguara :name, :description
|
25
|
+
end
|
26
|
+
|
27
|
+
And that's all, evrything else is magic. Now every time you create your model (by default), a request is being send to linguara. When translation will be accepted, request will be sent back to your application and model will be updated.
|
4
28
|
|
5
29
|
== Note on Patches/Pull Requests
|
6
30
|
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ begin
|
|
9
9
|
gem.description = %Q{Gem to integrate with linguara api}
|
10
10
|
gem.email = "aleks@kumulator.pl"
|
11
11
|
gem.homepage = "http://github.com/tjeden/linguara"
|
12
|
-
gem.authors = ["Aleksander Dabrowski"]
|
12
|
+
gem.authors = ["Aleksander Dabrowski", "Piotr Barczuk"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
14
|
gem.files += FileList['lib/**/*.rb']
|
15
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
@@ -44,3 +44,15 @@ Rake::RDocTask.new do |rdoc|
|
|
44
44
|
rdoc.rdoc_files.include('README*')
|
45
45
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
46
46
|
end
|
47
|
+
|
48
|
+
task :metric do
|
49
|
+
FLAY_MAX = 100
|
50
|
+
correct = true
|
51
|
+
metric_output = %x[flay -s lib/*]
|
52
|
+
if metric_output.first.gsub("Total score (lower is better) = ","").to_i > FLAY_MAX
|
53
|
+
correct = false
|
54
|
+
puts "Too much flay. It should be less than: #{FLAY_MAX}"
|
55
|
+
puts metric_output
|
56
|
+
end
|
57
|
+
exit(1) unless correct
|
58
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'linguara'
|
@@ -7,12 +7,15 @@ module Linguara
|
|
7
7
|
module LinguaraMethods
|
8
8
|
def translates_with_linguara(*attr_names)
|
9
9
|
include InstanceMethods
|
10
|
+
|
11
|
+
options = attr_names.extract_options!
|
10
12
|
|
11
13
|
class_inheritable_accessor :linguara_translation_attribute_names
|
12
14
|
|
13
15
|
self.linguara_translation_attribute_names = attr_names.map(&:to_sym)
|
14
16
|
|
15
|
-
after_create :send_to_linguara
|
17
|
+
after_create :send_to_linguara if options[:send_on] == :create
|
18
|
+
after_save :send_to_linguara if options[:send_on] == :save
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
@@ -22,20 +25,40 @@ module Linguara
|
|
22
25
|
prepared_fields = {}
|
23
26
|
linguara_translation_attribute_names.each_with_index do |name, index|
|
24
27
|
key_name = linguara_key_name(name, index)
|
25
|
-
prepared_fields[key_name] =
|
28
|
+
prepared_fields[key_name] = self.send(name)
|
26
29
|
end
|
27
30
|
prepared_fields
|
28
31
|
end
|
32
|
+
|
33
|
+
def send_to_linguara(options = {})
|
34
|
+
options = before_send_to_linguara(options)
|
35
|
+
res = Linguara.send_translation_request(self, options )
|
36
|
+
after_send_to_linguara(res)
|
37
|
+
res
|
38
|
+
end
|
39
|
+
|
40
|
+
def send_status_query(translation_request_id)
|
41
|
+
Linguara.send_status_query(translation_request_id)
|
42
|
+
end
|
29
43
|
|
30
44
|
protected
|
31
45
|
|
32
46
|
def linguara_key_name(field, index)
|
33
47
|
"#{self.class.class_name}_#{self.id}_#{index}_#{field}"
|
34
|
-
end
|
48
|
+
end
|
35
49
|
|
36
|
-
|
37
|
-
|
38
|
-
|
50
|
+
#override this if you want to have a customised method for determining which language to use.
|
51
|
+
def linguara_default_translation_language
|
52
|
+
'en'
|
53
|
+
end
|
54
|
+
|
55
|
+
#override for some callbacks
|
56
|
+
def before_send_to_linguara(options)
|
57
|
+
options
|
58
|
+
end
|
59
|
+
|
60
|
+
def after_send_to_linguara(response)
|
61
|
+
end
|
39
62
|
|
40
63
|
end
|
41
64
|
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Linguara
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :api_key, :server_path, :return_url, :user, :password
|
3
|
+
attr_accessor :api_key, :server_path, :return_url, :user, :password, :request_valid_for, :site_url, :log, :return_request
|
4
4
|
|
5
5
|
def initialize
|
6
|
+
self.log = true
|
7
|
+
self.request_valid_for = 30
|
6
8
|
end
|
7
9
|
end
|
8
10
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Translation
|
2
|
+
|
3
|
+
attr_accessor :translation_hash
|
4
|
+
|
5
|
+
def initialize(element,options = {})
|
6
|
+
unless options[:translation] && options[:translation][:due_date]
|
7
|
+
options[:translation] = Hash.new
|
8
|
+
options[:translation][:due_date] ||= Date.today + Linguara.configuration.request_valid_for.to_i.days unless Linguara.configuration.request_valid_for.blank?
|
9
|
+
options[:translation][:due_date] ||= Date.today + 1.month
|
10
|
+
end
|
11
|
+
options[:return_url] ||= Linguara.configuration.return_url
|
12
|
+
options[:source_language] ||= I18n.locale.to_s
|
13
|
+
options[:content] = Hash.new
|
14
|
+
options[:content][:plain] = Hash.new
|
15
|
+
options[:content][:plain][:paragraphs] = element.fields_to_send
|
16
|
+
self.translation_hash = options
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_hash
|
20
|
+
self.translation_hash
|
21
|
+
end
|
22
|
+
end
|
data/lib/linguara/utils.rb
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
module Linguara
|
2
2
|
module Utils
|
3
|
-
|
3
|
+
#TODO describe it, spec and move somewhere else
|
4
4
|
# http://www.keyongtech.com/5211204-nested-http-params-on-ruby
|
5
5
|
def serialize_form_data(data, path = "",serialized_params = [])
|
6
6
|
if data.kind_of? Hash
|
7
|
-
data.each_pair{|k,v| token = (path == "" ?
|
8
|
-
elsif data.kind_of? Array
|
9
|
-
data.each{|v| serialize_form_data(v, "#{path}[]", serialized_params) }
|
7
|
+
data.each_pair{|k,v| token = (path == "" ? CGI::escape(k.to_s) : "[#{CGI::escape(k.to_s)}]"); serialize_form_data(v, "#{path}#{token}",serialized_params)}
|
10
8
|
else
|
11
9
|
#end of recursion
|
12
|
-
serialized_params << "#{path}=#{
|
10
|
+
serialized_params << "#{path}=#{CGI::escape(data.to_s)}"
|
13
11
|
end
|
14
12
|
|
15
13
|
return serialized_params.join("&") if (path == "")
|
16
14
|
end
|
15
|
+
|
16
|
+
def strip_blank_attributes(data)
|
17
|
+
data = data.each_pair { |k,v| v.is_a?(Hash) ? (strip_blank_attributes(v)) : (v) }
|
18
|
+
data.delete_if { |k,v| v.blank?}
|
19
|
+
end
|
17
20
|
end
|
18
21
|
end
|
data/lib/linguara.rb
CHANGED
@@ -2,6 +2,7 @@ require 'net/http'
|
|
2
2
|
require 'uri'
|
3
3
|
require 'linguara/configuration'
|
4
4
|
require 'linguara/utils'
|
5
|
+
require 'linguara/translation'
|
5
6
|
|
6
7
|
module Linguara
|
7
8
|
extend Linguara::Utils
|
@@ -15,47 +16,112 @@ module Linguara
|
|
15
16
|
yield(configuration)
|
16
17
|
end
|
17
18
|
|
19
|
+
# Use this method in your controller to accepr and save incoming translations
|
18
20
|
def accept_translation(translation)
|
19
21
|
target_language = translation[:target_language]
|
20
|
-
translation[:
|
21
|
-
class_name,id,order,field_name =
|
22
|
-
content = value[:content]
|
22
|
+
translation[:paragraphs].each do |key,value|
|
23
|
+
class_name,id,order,field_name = key.split('_')
|
23
24
|
original_locale = I18n.locale
|
24
25
|
element = class_name.constantize.find(id)
|
25
26
|
|
26
27
|
I18n.locale = target_language
|
27
|
-
element.send("#{field_name}=",
|
28
|
+
element.send("#{field_name}=", value.gsub(/<p>(.*?)<\/p>/, "\\1\n") )
|
28
29
|
element.save(false)
|
29
30
|
I18n.locale = original_locale
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
req
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
def send_translation_request(element, options = {})
|
35
|
+
translation = Translation.new(element, options)
|
36
|
+
url= URI.parse("#{Linguara.configuration.server_path}api/translations.xml")
|
37
|
+
req = prepare_request(url, translation.to_hash.merge( :authorization => true))
|
38
|
+
send_linguara_request(req, url)
|
39
|
+
end
|
40
|
+
|
41
|
+
def send_status_query(translation_request_id)
|
42
|
+
url= URI.parse("#{Linguara.configuration.server_path}api/translations/#{translation_request_id}/status.xml")
|
43
|
+
req = prepare_request(url, :authorization => true)
|
44
|
+
send_linguara_request(req, url)
|
45
|
+
end
|
46
|
+
|
47
|
+
def send_languages_request(options={})
|
48
|
+
url= URI.parse("#{Linguara.configuration.server_path}api/languages.xml")
|
49
|
+
req = prepare_request(url, options.merge(:method => :get))
|
50
|
+
send_linguara_request(req, url)
|
51
|
+
end
|
52
|
+
|
53
|
+
def send_specializations_request(options)
|
54
|
+
url= URI.parse("#{Linguara.configuration.server_path}api/specializations.xml")
|
55
|
+
req = prepare_request(url, options.merge(:method => :get))
|
56
|
+
send_linguara_request(req, url)
|
57
|
+
end
|
58
|
+
|
59
|
+
def send_translators_request(options)
|
60
|
+
url= URI.parse("#{Linguara.configuration.server_path}api/translators.xml")
|
61
|
+
req = prepare_request(url, options.merge(:method => :get))
|
62
|
+
send_linguara_request(req, url)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Override this method if you want to perform some action when connection
|
66
|
+
# with linguara cannot be established e.g. log request or redo the send
|
67
|
+
def handle_request_error
|
68
|
+
log("ERROR WHILE SENDING REQUEST TO LINGUARA: #{$!}")
|
69
|
+
end
|
70
|
+
|
71
|
+
# Log a linguara-specific line. Uses Rails.logger
|
72
|
+
# by default. Set Lingurara.config.log = false to turn off.
|
73
|
+
def log message
|
74
|
+
logger.info("[linguara] #{message}") if logging?
|
75
|
+
end
|
76
|
+
|
77
|
+
def logger #:nodoc:
|
78
|
+
Rails.logger
|
79
|
+
end
|
80
|
+
|
81
|
+
def logging? #:nodoc:
|
82
|
+
Linguara.configuration.log
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def prepare_request(url, data = {} )
|
88
|
+
data = strip_blank_attributes(data)
|
89
|
+
if data[:method] == :get
|
90
|
+
req = Net::HTTP::Get.new(url.path)
|
91
|
+
data.delete(:method)
|
92
|
+
else
|
93
|
+
req = Net::HTTP::Post.new(url.path)
|
94
|
+
end
|
95
|
+
if data[:authorization]
|
96
|
+
data.delete(:authorization)
|
97
|
+
req.body = serialize_form_data({
|
98
|
+
:site_url => Linguara.configuration.site_url,
|
99
|
+
:account_token => Linguara.configuration.api_key
|
100
|
+
}.merge(data))
|
101
|
+
else
|
102
|
+
req.body = serialize_form_data(data)
|
103
|
+
end
|
44
104
|
req.content_type = 'application/x-www-form-urlencoded'
|
45
|
-
req.basic_auth
|
105
|
+
req.basic_auth(Linguara.configuration.user, Linguara.configuration.password)
|
106
|
+
req
|
107
|
+
end
|
108
|
+
|
109
|
+
def send_linguara_request(req, url)
|
46
110
|
#TODO handle timeout
|
47
111
|
begin
|
48
|
-
|
112
|
+
log("SENDING LINGUARA REQUEST TO #{url.path}: \n#{req.body}")
|
113
|
+
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
|
114
|
+
log("LINGUARA RESPONSE: #{res.message} -- #{res.body}")
|
115
|
+
#TODO there should be object returned, whih contains request and respnse
|
116
|
+
if Linguara.configuration.return_request
|
117
|
+
return req
|
118
|
+
else
|
119
|
+
return res
|
120
|
+
end
|
49
121
|
rescue Errno::ETIMEDOUT
|
50
122
|
handle_request_error
|
51
123
|
end
|
52
124
|
end
|
53
|
-
|
54
|
-
# ovverride this method if you want to perform some action when connection
|
55
|
-
# with linguara cannot be established e.g. log request or redo the send
|
56
|
-
def handle_request_error
|
57
|
-
end
|
58
|
-
|
59
125
|
end
|
60
126
|
end
|
61
127
|
|
data/linguara.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{linguara}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Aleksander Dabrowski"]
|
12
|
-
s.date = %q{2010-
|
11
|
+
s.authors = ["Aleksander Dabrowski", "Piotr Barczuk"]
|
12
|
+
s.date = %q{2010-07-23}
|
13
13
|
s.description = %q{Gem to integrate with linguara api}
|
14
14
|
s.email = %q{aleks@kumulator.pl}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,9 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
"README.rdoc",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
|
+
"init.rb",
|
26
27
|
"lib/linguara.rb",
|
27
28
|
"lib/linguara/active_record.rb",
|
28
29
|
"lib/linguara/configuration.rb",
|
30
|
+
"lib/linguara/translation.rb",
|
29
31
|
"lib/linguara/utils.rb",
|
30
32
|
"linguara.gemspec",
|
31
33
|
"spec/data/schema.rb",
|
@@ -33,7 +35,8 @@ Gem::Specification.new do |s|
|
|
33
35
|
"spec/helper_model/database_mock.rb",
|
34
36
|
"spec/linguara_spec.rb",
|
35
37
|
"spec/spec.opts",
|
36
|
-
"spec/spec_helper.rb"
|
38
|
+
"spec/spec_helper.rb",
|
39
|
+
"spec/translation_spec.rb"
|
37
40
|
]
|
38
41
|
s.homepage = %q{http://github.com/tjeden/linguara}
|
39
42
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -45,7 +48,8 @@ Gem::Specification.new do |s|
|
|
45
48
|
"spec/helper_model/blog_post.rb",
|
46
49
|
"spec/helper_model/database_mock.rb",
|
47
50
|
"spec/linguara_spec.rb",
|
48
|
-
"spec/spec_helper.rb"
|
51
|
+
"spec/spec_helper.rb",
|
52
|
+
"spec/translation_spec.rb"
|
49
53
|
]
|
50
54
|
|
51
55
|
if s.respond_to? :specification_version then
|
data/spec/linguara_spec.rb
CHANGED
@@ -2,24 +2,26 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "Linguara" do
|
4
4
|
|
5
|
-
it "
|
6
|
-
FakeWeb.register_uri(:post, 'http://www.example.com/', :exception => Net::HTTPError)
|
5
|
+
it "sent message to linguara for translatable classes" do
|
6
|
+
FakeWeb.register_uri(:post, 'http://www.example.com/api/translations.xml', :exception => Net::HTTPError)
|
7
7
|
blog_post = BlogPost.new( :title => "Title text", :body => "Body text")
|
8
8
|
lambda {
|
9
9
|
blog_post.save
|
10
10
|
}.should raise_error(Net::HTTPError)
|
11
|
+
FakeWeb.clean_registry
|
11
12
|
end
|
12
13
|
|
13
|
-
it '
|
14
|
-
FakeWeb.register_uri(:post, 'http://www.example.com/', :body => 'response_for_linguara', :status => 200)
|
14
|
+
it 'accepts correct translation' do
|
15
|
+
FakeWeb.register_uri(:post, 'http://www.example.com/', :body => 'response_for_linguara', :status => 200)
|
16
|
+
FakeWeb.register_uri(:post, 'http://www.example.com/api/translations.xml', :status => 200)
|
15
17
|
blog_post = BlogPost.new( :title => "Old title", :body => "Old body")
|
16
18
|
blog_post.save
|
17
19
|
id = blog_post.id
|
18
20
|
lambda {
|
19
21
|
Linguara.accept_translation(
|
20
|
-
:
|
21
|
-
"BlogPost_#{id}_0_title"
|
22
|
-
"BlogPost_#{id}_1_body"
|
22
|
+
:paragraphs => {
|
23
|
+
"BlogPost_#{id}_0_title" => "Hello World!",
|
24
|
+
"BlogPost_#{id}_1_body" => "Today is great weather, and I am going to EuRuKo."
|
23
25
|
},
|
24
26
|
:source_language =>"pl",
|
25
27
|
:target_language =>"en"
|
@@ -29,6 +31,83 @@ describe "Linguara" do
|
|
29
31
|
translation.title.should eql("Hello World!")
|
30
32
|
translation.body.should eql("Today is great weather, and I am going to EuRuKo.")
|
31
33
|
end
|
34
|
+
|
35
|
+
describe '#send_translation_request' do
|
36
|
+
it 'sends request' do
|
37
|
+
blog_post = BlogPost.new( :title => "Old title", :body => "Old body")
|
38
|
+
FakeWeb.register_uri(:post, "http://www.example.com/api/translations.xml", :body => 'response_from_linguara', :status => 200)
|
39
|
+
response = Linguara.send_translation_request(blog_post)
|
40
|
+
response.body.should eql('response_from_linguara')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#send_status_query' do
|
45
|
+
it 'sends request' do
|
46
|
+
FakeWeb.register_uri(:post, "http://www.example.com/api/translations/5/status.xml", :body => 'response_from_linguara', :status => 200)
|
47
|
+
response = Linguara.send_status_query(5)
|
48
|
+
response.body.should eql('response_from_linguara')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#send_languages_request' do
|
53
|
+
it 'sends request' do
|
54
|
+
FakeWeb.register_uri(:get, "http://www.example.com/api/languages.xml", :body => 'response_from_linguara', :status => 200)
|
55
|
+
response = Linguara.send_languages_request("city"=>"321", "specialization"=>"technical", "country"=>"pl", "native_speaker"=>"1", "max_price"=>"12")
|
56
|
+
response.body.should eql('response_from_linguara')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#send_specializations_request' do
|
61
|
+
it 'sends request' do
|
62
|
+
FakeWeb.register_uri(:get, "http://www.example.com/api/specializations.xml", :body => 'response_from_linguara', :status => 200)
|
63
|
+
response = Linguara.send_specializations_request("language"=>"suomi", "sworn" => "1", "native_speaker"=>"1", "max_price"=>"12")
|
64
|
+
response.body.should eql('response_from_linguara')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#send_translators_request' do
|
69
|
+
it 'sends request' do
|
70
|
+
FakeWeb.register_uri(:get, "http://www.example.com/api/translators.xml", :body => 'response_from_linguara', :status => 200)
|
71
|
+
response = Linguara.send_translators_request("city"=>"warsaw", "country"=>"pl", "max_price"=>"12", "query"=>"wojcisz", "target_language"=>"en", "source_language" => "pl")
|
72
|
+
response.body.should eql('response_from_linguara')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '#prepare_request' do
|
77
|
+
before :each do
|
78
|
+
@url = URI.parse("http://www.example.com/api/translations")
|
79
|
+
@options = { :translation => { :translator => { :city => "Prague"}}}
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'sets :POST by deafault' do
|
83
|
+
request = Linguara.send(:prepare_request, @url, @options)
|
84
|
+
request.is_a?(Net::HTTP::Post).should be_true
|
85
|
+
request.body.include?("post").should be_false
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'sets :GET when option given' do
|
89
|
+
request = Linguara.send(:prepare_request, @url, @options.merge(:method => :get))
|
90
|
+
request.is_a?(Net::HTTP::Get).should be_true
|
91
|
+
request.body.include?("get").should be_false
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'skips blank parameters' do
|
95
|
+
request = Linguara.send(:prepare_request, @url, @options.merge(:blank_attribute => ""))
|
96
|
+
request.body.include?("blank_attribute").should be_false
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'skips blank parameters deep' do
|
100
|
+
request = Linguara.send(:prepare_request, @url, @options.merge(:blank_parent => { :blank_attribute => ""}))
|
101
|
+
request.body.include?("blank_attribute").should be_false
|
102
|
+
request.body.include?("blank_parent").should be_false
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'sets content type to application/x-www-form-urlencoded' do
|
106
|
+
request = Linguara.send(:prepare_request, @url, @options)
|
107
|
+
request.content_type.should be_eql("application/x-www-form-urlencoded")
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
32
111
|
|
33
112
|
end
|
34
113
|
|
@@ -37,9 +116,8 @@ describe 'Linguara::ActiveRecord' do
|
|
37
116
|
blog_post = BlogPost.new( :title => "Title text", :body => "Body text")
|
38
117
|
fields_to_send = blog_post.fields_to_send.to_a.sort { |a,b| a[0] <=> b[0] }
|
39
118
|
fields_to_send.size.should eql(2)
|
40
|
-
|
41
|
-
fields_to_send.
|
42
|
-
fields_to_send.last[1][:content].should eql("Body text")
|
119
|
+
fields_to_send.first[1].should eql("Title text")
|
120
|
+
fields_to_send.last[1].should eql("Body text")
|
43
121
|
end
|
44
122
|
end
|
45
123
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'cgi'
|
5
5
|
require 'active_record'
|
6
6
|
require 'active_support'
|
7
7
|
require 'helper_model/database_mock'
|
8
8
|
require 'linguara'
|
9
9
|
require 'helper_model/blog_post'
|
10
|
-
require "erb"
|
11
|
-
include ERB::Util
|
12
10
|
require 'spec'
|
13
11
|
require 'spec/autorun'
|
14
12
|
require 'fakeweb'
|
@@ -16,9 +14,10 @@ require 'fakeweb'
|
|
16
14
|
prepare_database
|
17
15
|
|
18
16
|
Linguara.configure do |config|
|
19
|
-
config.api_key = '
|
17
|
+
config.api_key = 'api_key'
|
20
18
|
config.server_path = 'http://www.example.com/'
|
21
19
|
config.return_url = 'http://maverick.kumulator.com:82/linguara'
|
20
|
+
config.log = false
|
22
21
|
end
|
23
22
|
|
24
23
|
Spec::Runner.configure do |config|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
describe Translation do
|
4
|
+
subject do
|
5
|
+
@blog_post = BlogPost.new( :title => "Title text", :body => "Body text")
|
6
|
+
Translation.new(@blog_post)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'creates default due_date on default' do
|
10
|
+
subject.to_hash[:translation][:due_date].should eql(Date.today + Linguara.configuration.request_valid_for.to_i.days)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'creates return_url on default' do
|
14
|
+
subject.to_hash[:return_url].should eql(Linguara.configuration.return_url)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'sets source language on default' do
|
18
|
+
subject.to_hash[:source_language].should eql(I18n.locale.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'creates paragraphs for model' do
|
22
|
+
subject.to_hash[:content][:plain][:paragraphs].should eql(@blog_post.fields_to_send)
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linguara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Aleksander Dabrowski
|
14
|
+
- Piotr Barczuk
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-
|
19
|
+
date: 2010-07-23 00:00:00 +02:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -50,9 +51,11 @@ files:
|
|
50
51
|
- README.rdoc
|
51
52
|
- Rakefile
|
52
53
|
- VERSION
|
54
|
+
- init.rb
|
53
55
|
- lib/linguara.rb
|
54
56
|
- lib/linguara/active_record.rb
|
55
57
|
- lib/linguara/configuration.rb
|
58
|
+
- lib/linguara/translation.rb
|
56
59
|
- lib/linguara/utils.rb
|
57
60
|
- linguara.gemspec
|
58
61
|
- spec/data/schema.rb
|
@@ -61,6 +64,7 @@ files:
|
|
61
64
|
- spec/linguara_spec.rb
|
62
65
|
- spec/spec.opts
|
63
66
|
- spec/spec_helper.rb
|
67
|
+
- spec/translation_spec.rb
|
64
68
|
has_rdoc: true
|
65
69
|
homepage: http://github.com/tjeden/linguara
|
66
70
|
licenses: []
|
@@ -101,3 +105,4 @@ test_files:
|
|
101
105
|
- spec/helper_model/database_mock.rb
|
102
106
|
- spec/linguara_spec.rb
|
103
107
|
- spec/spec_helper.rb
|
108
|
+
- spec/translation_spec.rb
|