This rule was added in rubocop-rspec 2.9.0. Once again, we were applying it about 50% of the time.
230 lines
8.1 KiB
Ruby
230 lines
8.1 KiB
Ruby
require "rails_helper"
|
|
|
|
describe RemoteTranslations::Caller, :remote_translations do
|
|
before do
|
|
RemoteTranslation.skip_callback(:create, :after, :enqueue_remote_translation)
|
|
end
|
|
|
|
after do
|
|
RemoteTranslation.set_callback(:create, :after, :enqueue_remote_translation)
|
|
end
|
|
|
|
let(:client) { RemoteTranslations::Microsoft::Client }
|
|
|
|
describe "#call" do
|
|
context "Debates" do
|
|
let(:debate) { create(:debate) }
|
|
let(:remote_translation) do
|
|
create(:remote_translation, remote_translatable: debate, locale: :es)
|
|
end
|
|
let(:caller) { RemoteTranslations::Caller.new(remote_translation) }
|
|
|
|
it "returns the resource with new translation persisted" do
|
|
response = ["Título traducido", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(debate.translations.count).to eq(2)
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale skip length validations" do
|
|
response = ["TT", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to be nil
|
|
expect(debate.translations.count).to eq(2)
|
|
expect(debate.valid?).to be true
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale not skip presence validations" do
|
|
response = ["", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to include("can't be blank")
|
|
expect(debate.translations.count).to eq(1)
|
|
expect(debate.valid?).to be false
|
|
end
|
|
|
|
it "destroy remote translation instance" do
|
|
response = ["Título traducido", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(RemoteTranslation.count).to eq(0)
|
|
end
|
|
end
|
|
|
|
context "Proposals" do
|
|
let!(:proposal) { create(:proposal) }
|
|
let(:remote_translation) do
|
|
create(:remote_translation, remote_translatable: proposal, locale: :es)
|
|
end
|
|
let(:caller) { RemoteTranslations::Caller.new(remote_translation) }
|
|
|
|
it "returns the resource with new translation persisted" do
|
|
response = ["Título traducido", "Descripción traducida", "Pregunta traducida",
|
|
"Resumen traducido", nil]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(proposal.translations.count).to eq(2)
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale skip lenght validations" do
|
|
response = ["TT", "Descripción traducida", "Pregunta traducida", "Resumen traducido", nil]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to be nil
|
|
expect(proposal.translations.count).to eq(2)
|
|
expect(proposal.valid?).to be true
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale do not skip presence validations" do
|
|
response = ["", "Descripción traducida", "Pregunta traducida", "Resumen traducido", nil]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to include("can't be blank")
|
|
expect(proposal.translations.count).to eq(1)
|
|
expect(proposal.valid?).to be false
|
|
end
|
|
|
|
it "destroy remote translation instance" do
|
|
response = ["Título traducido", "Descripción traducida", "Pregunta traducida",
|
|
"Resumen traducido", nil]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(RemoteTranslation.count).to eq(0)
|
|
end
|
|
end
|
|
|
|
context "Budget Investments" do
|
|
let(:budget_investment) { create(:budget_investment) }
|
|
let(:remote_translation) do
|
|
create(:remote_translation, remote_translatable: budget_investment, locale: :es)
|
|
end
|
|
let(:caller) { RemoteTranslations::Caller.new(remote_translation) }
|
|
|
|
it "returns the resource with new translation persisted" do
|
|
response = ["Título traducido", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(budget_investment.translations.count).to eq(2)
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale skip lenght validations" do
|
|
response = ["TT", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to be nil
|
|
expect(budget_investment.translations.count).to eq(2)
|
|
expect(budget_investment.valid?).to be true
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale not skip presence validations" do
|
|
response = ["", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to include("can't be blank")
|
|
expect(budget_investment.translations.count).to eq(1)
|
|
expect(budget_investment.valid?).to be false
|
|
end
|
|
|
|
it "destroy remote translation instance" do
|
|
response = ["Título traducido", "Descripción traducida"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(RemoteTranslation.count).to eq(0)
|
|
end
|
|
end
|
|
|
|
context "Comments" do
|
|
let(:comment) { create(:comment) }
|
|
let(:remote_translation) do
|
|
create(:remote_translation, remote_translatable: comment, locale: :es)
|
|
end
|
|
let(:caller) { RemoteTranslations::Caller.new(remote_translation) }
|
|
|
|
it "returns the resource with new translation persisted" do
|
|
response = ["Body traducido"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(comment.translations.count).to eq(2)
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale skip lenght validations" do
|
|
response = ["BT"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to be nil
|
|
expect(comment.translations.count).to eq(2)
|
|
expect(comment.valid?).to be true
|
|
end
|
|
|
|
it "when new translation locale is distinct to default_locale not skip presence validations" do
|
|
response = [""]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(remote_translation.error_message).to include("can't be blank")
|
|
expect(comment.translations.count).to eq(1)
|
|
expect(comment.valid?).to be false
|
|
end
|
|
|
|
it "destroy remote translation instance" do
|
|
response = ["Body traducido"]
|
|
expect_any_instance_of(client).to receive(:call).and_return(response)
|
|
|
|
caller.call
|
|
|
|
expect(RemoteTranslation.count).to eq(0)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#field values" do
|
|
let!(:proposal) { create(:proposal, description: "Σ with sample text") }
|
|
let(:remote_translation) do
|
|
create(:remote_translation, remote_translatable: proposal, locale: :es)
|
|
end
|
|
let(:caller) { RemoteTranslations::Caller.new(remote_translation) }
|
|
|
|
it "sanitize field value when the field contains entity references as Σ" do
|
|
field_values_sanitized = [proposal.title, "Σ with sample text", proposal.summary,
|
|
proposal.retired_reason]
|
|
locale = remote_translation.locale
|
|
fake_response = ["translated title", "translated description", "translated summary", nil]
|
|
|
|
expect_any_instance_of(client).to receive(:call).with(field_values_sanitized, locale)
|
|
.and_return(fake_response)
|
|
|
|
caller.call
|
|
end
|
|
end
|
|
end
|