Replace `Status#translatable?` with language matrix in separate endpoint (#24037)
parent
630436ab2d
commit
bd047acc35
19 changed files with 164 additions and 179 deletions
@ -0,0 +1,23 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
class Api::V1::Instances::TranslationLanguagesController < Api::BaseController |
||||
skip_before_action :require_authenticated_user!, unless: :whitelist_mode? |
||||
|
||||
before_action :set_languages |
||||
|
||||
def show |
||||
expires_in 1.day, public: true |
||||
render json: @languages |
||||
end |
||||
|
||||
private |
||||
|
||||
def set_languages |
||||
if TranslationService.configured? |
||||
@languages = Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages } |
||||
@languages['und'] = @languages.delete(nil) if @languages.key?(nil) |
||||
else |
||||
@languages = {} |
||||
end |
||||
end |
||||
end |
@ -0,0 +1,31 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
require 'rails_helper' |
||||
|
||||
describe Api::V1::Instances::TranslationLanguagesController do |
||||
describe 'GET #show' do |
||||
context 'when no translation service is configured' do |
||||
it 'returns empty language matrix' do |
||||
get :show |
||||
|
||||
expect(response).to have_http_status(200) |
||||
expect(body_as_json).to eq({}) |
||||
end |
||||
end |
||||
|
||||
context 'when a translation service is configured' do |
||||
before do |
||||
service = instance_double(TranslationService::DeepL, languages: { nil => %w(en de), 'en' => ['de'] }) |
||||
allow(TranslationService).to receive(:configured?).and_return(true) |
||||
allow(TranslationService).to receive(:configured).and_return(service) |
||||
end |
||||
|
||||
it 'returns language matrix' do |
||||
get :show |
||||
|
||||
expect(response).to have_http_status(200) |
||||
expect(body_as_json).to eq({ und: %w(en de), en: ['de'] }) |
||||
end |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue