spec/models/remote_translation_spec.rb
require "rails_helper"
describe RemoteTranslation, :remote_translations do
let(:remote_translation) { build(:remote_translation, locale: :es) }
it "is valid" do
expect(remote_translation).to be_valid
end
it "is valid without error_message" do
remote_translation.error_message = nil
expect(remote_translation).to be_valid
end
it "is not valid without to" do
remote_translation.locale = nil
expect(remote_translation).not_to be_valid
end
it "is not valid without a remote_translatable_id" do
remote_translation.remote_translatable_id = nil
expect(remote_translation).not_to be_valid
end
it "is not valid without a remote_translatable_type" do
remote_translation.remote_translatable_type = nil
expect(remote_translation).not_to be_valid
end
it "is not valid without an available_locales" do
remote_translation.locale = "unavailable_locale"
expect(remote_translation).not_to be_valid
end
it "is not valid when exists a translation for locale" do
remote_translation.locale = :en
expect(remote_translation).not_to be_valid
end
it "checks available locales dynamically" do
allow(RemoteTranslations::Microsoft::AvailableLocales)
.to receive(:locales).and_return(["en"])
expect(remote_translation).not_to be_valid
allow(RemoteTranslations::Microsoft::AvailableLocales)
.to receive(:locales).and_return(["es"])
expect(remote_translation).to be_valid
end
it "is valid with a locale that uses a different name in the remote service" do
allow(RemoteTranslations::Microsoft::AvailableLocales).to receive(:locales).and_call_original
allow(RemoteTranslations::Microsoft::AvailableLocales).to receive(:remote_available_locales)
.and_return(["pt"])
remote_translation.locale = :"pt-BR"
expect(remote_translation).to be_valid
end
describe "#enqueue_remote_translation", :delay_jobs do
it "after create enqueue Delayed Job" do
expect { remote_translation.save }.to change { Delayed::Job.count }.by(1)
end
end
end