1# frozen_string_literal: true
2require 'minitest_helper'
3
4class TestRDocI18nLocale < RDoc::TestCase
5
6  def setup
7    super
8    @locale = locale('fr')
9
10    @tmpdir = File.join Dir.tmpdir, "test_rdoc_i18n_locale_#{$$}"
11    FileUtils.mkdir_p @tmpdir
12
13    @locale_dir = @tmpdir
14  end
15
16  def teardown
17    FileUtils.rm_rf @tmpdir
18    super
19  end
20
21  def test_name
22    assert_equal 'fr', locale('fr').name
23  end
24
25  def test_load_nonexistent_po
26    File.stub(:exist?, false) do
27      refute @locale.load('nonexsitent-locale')
28    end
29  end
30
31  def test_load_existent_po
32    begin
33      require 'gettext/po_parser'
34    rescue LoadError
35      skip 'gettext gem is not found'
36    end
37
38    fr_locale_dir = File.join @locale_dir, 'fr'
39    FileUtils.mkdir_p fr_locale_dir
40    File.open File.join(fr_locale_dir, 'rdoc.po'), 'w' do |po|
41      po.puts <<-PO
42msgid ""
43msgstr ""
44"Language: fr\n"
45"MIME-Version: 1.0\n"
46"Content-Type: text/plain; charset=UTF-8\n"
47"Content-Transfer-Encoding: 8bit\n"
48
49msgid "Hello"
50msgstr "Bonjour"
51      PO
52    end
53
54    assert @locale.load(@locale_dir)
55    assert_equal 'Bonjour', @locale.translate('Hello')
56  end
57
58  def test_translate_existent_message
59    messages = @locale.instance_variable_get(:@messages)
60    messages['Hello'] = 'Bonjour'
61    assert_equal 'Bonjour', @locale.translate('Hello')
62  end
63
64  def test_translate_nonexistent_message
65    assert_equal 'Hello', @locale.translate('Hello')
66  end
67
68  private
69
70  def locale(name)
71    RDoc::I18n::Locale.new(name)
72  end
73
74end
75