haml-i18n-extractor 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+
3
+ module Haml
4
+ class ExtractorTest < MiniTest::Unit::TestCase
5
+
6
+ def setup
7
+ @ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
8
+ end
9
+
10
+ test "it can process the haml and replace it with other text!" do
11
+ @ex1.run
12
+ end
13
+
14
+ test "can not initialize if the haml is not valid syntax" do
15
+ begin
16
+ Haml::I18n::Extractor.new(file_path("bad.haml"))
17
+ assert false, "should not get here"
18
+ rescue Haml::I18n::Extractor::InvalidSyntax
19
+ assert true, "it should fail with invalid syntax"
20
+ end
21
+ end
22
+
23
+ test "can initialize if the haml is valid syntax" do
24
+ # setup method initializes
25
+ assert true, "extractor can initialize"
26
+ end
27
+
28
+ test "it can replace a string body and have expected output" do
29
+ expected_output = File.read(file_path("ex1.output.haml"))
30
+ assert_equal @ex1.new_body, expected_output
31
+ end
32
+
33
+ test "it writes the haml to an out file if valid haml output" do
34
+ FileUtils.rm_rf(@ex1.haml_writer.path)
35
+ assert_equal File.exists?(@ex1.haml_writer.path), false
36
+ @ex1.run
37
+ assert_equal File.exists?(@ex1.haml_writer.path), true
38
+ end
39
+
40
+ test "it writes the locale info to an out file when run" do
41
+ assert_equal File.exists?(@ex1.yaml_tool.locale_file), false
42
+ @ex1.run
43
+ assert_equal File.exists?(@ex1.yaml_tool.locale_file), true
44
+ assert_equal YAML.load(File.read(@ex1.yaml_tool.locale_file)), @ex1.yaml_tool.yaml_hash
45
+ end
46
+
47
+ test "it raises if there is nothing to translate" do
48
+ begin
49
+ @nothing_to_translate = Haml::I18n::Extractor.new(file_path("nothing_to_translate.haml"))
50
+ assert_equal @ex1.yaml_tool.locale_hash, nil
51
+ @nothing_to_translate.run
52
+ rescue Haml::I18n::Extractor::NothingToTranslate
53
+ assert true, "NothingToTranslate raised"
54
+ end
55
+ end
56
+
57
+ test "sends a hash over of replacement info to its yaml tool when run" do
58
+ @ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
59
+ assert_equal @ex1.yaml_tool.locale_hash, nil
60
+ @ex1.run
61
+ assert @ex1.yaml_tool.locale_hash.is_a?(Hash), "its is hash of info about the files lines"
62
+ assert_equal @ex1.yaml_tool.locale_hash.size, @ex1.haml_reader.lines.size
63
+ end
64
+
65
+ test "it fails before it writes to an out file if it is not valid" do
66
+ begin
67
+ @ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
68
+ @ex1.stub(:assign_new_body, nil) do #nop
69
+ @ex1.haml_writer.body = File.read(file_path("bad.haml"))
70
+ @ex1.run
71
+ end
72
+ rescue Haml::I18n::Extractor::InvalidSyntax
73
+ assert true, "it should not allow invalid output to be written"
74
+ end
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+ require 'fileutils'
3
+
4
+ module Haml
5
+ class HamlReaderTest < MiniTest::Unit::TestCase
6
+
7
+ TEMP_FILE_PATH = "/tmp/foo_haml_extractor_test"
8
+
9
+ def setup
10
+ FileUtils.rm_rf(TEMP_FILE_PATH)
11
+ 10.times do |index|
12
+ File.open(TEMP_FILE_PATH, "a+") do |f|
13
+ f.puts "line #{index}"
14
+ end
15
+ end
16
+ @reader = Haml::I18n::Extractor::HamlReader.new(TEMP_FILE_PATH)
17
+ end
18
+
19
+ test "has a body and a path" do
20
+ assert_equal @reader.path, TEMP_FILE_PATH
21
+ assert_equal @reader.body, File.read(TEMP_FILE_PATH)
22
+ end
23
+
24
+ test "has an array of lines in that file" do
25
+ assert_equal @reader.lines.size, 10
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+ require 'fileutils'
3
+
4
+ module Haml
5
+ class HamlWriterTest < MiniTest::Unit::TestCase
6
+
7
+ ORIG_TEMP_FILE_PATH = "/tmp/foo_haml_extractor_test.haml"
8
+
9
+ def setup
10
+ File.open(ORIG_TEMP_FILE_PATH, "w") do |f|
11
+ 10.times do |i|
12
+ f.puts "line #{i}"
13
+ end
14
+ end
15
+ end
16
+
17
+ def teardown
18
+ FileUtils.rm_rf(ORIG_TEMP_FILE_PATH)
19
+ end
20
+
21
+ test "is initialized with an array of lines, an original path and constructs a body and path with it" do
22
+ @writer = Haml::I18n::Extractor::HamlWriter.new(ORIG_TEMP_FILE_PATH)
23
+ assert_equal @writer.path, "/tmp/foo_haml_extractor_test.i18n-extractor.haml"
24
+ end
25
+
26
+ test "it can write the file" do
27
+ @writer = Haml::I18n::Extractor::HamlWriter.new(ORIG_TEMP_FILE_PATH)
28
+ @writer.body = "This is what it is"
29
+ @writer.write_file
30
+ assert_equal File.read(@writer.path), "This is what it is\n"
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,12 @@
1
+ #clz
2
+ - else
3
+ 'foo'
4
+ -this is
5
+ -not correct_haml
6
+
7
+ = in
8
+ kljlk
9
+ lkjl
10
+ ~invliz
11
+ ~invliz
12
+
@@ -0,0 +1,28 @@
1
+ #header.page
2
+ %p#brand= link_to "Some place", '/'
3
+ #menu
4
+ %ul.header-links
5
+ - if true
6
+ - if false
7
+ %li
8
+ %a#cheese-rice{:href => url_for([:admin, :dashboard])}
9
+ %span.thing-ok Admin
10
+ #bla
11
+ %ul#admin-dropdown-box
12
+ %li
13
+ %a{:href => url_for([:admin, :dashboard])}
14
+ %span Admin Dashboard
15
+ %li
16
+ %a{:href => url_for([:admin, :stacks])}
17
+ %span Stacks
18
+ %li
19
+ %a{:href => url_for([:admin, :environments])}
20
+ %span t('.alerts')
21
+ %li
22
+ %a{:href => url_for([:admin, :environments])}
23
+ %span= t('.alerts')
24
+ %li
25
+ %a{:href => url_for([:admin, :accounts])}
26
+ %span Accounts
27
+ - if true
28
+ What is@ supposed to be, is supposed to be! ~
@@ -0,0 +1,28 @@
1
+ #header.page
2
+ %p#brand= link_to t('.some_place'), '/'
3
+ #menu
4
+ %ul.header-links
5
+ - if true
6
+ - if false
7
+ %li
8
+ %a#cheese-rice{:href => url_for([:admin, :dashboard])}
9
+ %span.thing-ok= t('.admin')
10
+ #bla
11
+ %ul#admin-dropdown-box
12
+ %li
13
+ %a{:href => url_for([:admin, :dashboard])}
14
+ %span= t('.admin_dashboard')
15
+ %li
16
+ %a{:href => url_for([:admin, :stacks])}
17
+ %span= t('.stacks')
18
+ %li
19
+ %a{:href => url_for([:admin, :environments])}
20
+ %span t('.alerts')
21
+ %li
22
+ %a{:href => url_for([:admin, :environments])}
23
+ %span= t('.alerts')
24
+ %li
25
+ %a{:href => url_for([:admin, :accounts])}
26
+ %span= t('.accounts')
27
+ - if true
28
+ = t('.what_is_supposed_to_be_is_supp')
@@ -0,0 +1,28 @@
1
+ #header.page
2
+ %p#brand= link_to t('.some_place'), '/'
3
+ #menu
4
+ %ul.header-links
5
+ - if true
6
+ - if false
7
+ %li
8
+ %a#cheese-rice{:href => url_for([:admin, :dashboard])}
9
+ %span.thing-ok= t('.admin')
10
+ #bla
11
+ %ul#admin-dropdown-box
12
+ %li
13
+ %a{:href => url_for([:admin, :dashboard])}
14
+ %span= t('.admin_dashboard')
15
+ %li
16
+ %a{:href => url_for([:admin, :stacks])}
17
+ %span= t('.stacks')
18
+ %li
19
+ %a{:href => url_for([:admin, :environments])}
20
+ %span t('.alerts')
21
+ %li
22
+ %a{:href => url_for([:admin, :environments])}
23
+ %span= t('.alerts')
24
+ %li
25
+ %a{:href => url_for([:admin, :accounts])}
26
+ %span= t('.accounts')
27
+ - if true
28
+ = t('.what_is_supposed_to_be_is_supp')
@@ -0,0 +1,2 @@
1
+ #menu
2
+ .whatever
@@ -0,0 +1,2 @@
1
+ #menu
2
+ .whatever
@@ -0,0 +1,98 @@
1
+ #######################################################################
2
+ ## copied over from haml for this to just work. TODO Cleanup. ##
3
+ ## mini test stuff ##
4
+ #######################################################################
5
+
6
+ require 'rubygems'
7
+ gem "minitest"
8
+ require 'bundler/setup'
9
+ require 'minitest/autorun'
10
+ require 'action_pack'
11
+ require 'action_controller'
12
+ require 'action_view'
13
+ require 'nokogiri'
14
+ require 'rails'
15
+ require 'fileutils'
16
+
17
+ require 'pry'
18
+ module Declarative
19
+ def test(name, &block)
20
+ define_method("test #{name}", &block)
21
+ end
22
+ end
23
+
24
+ class MiniTest::Unit::TestCase
25
+
26
+ extend Declarative
27
+
28
+ def render(text, options = {}, base = nil, &block)
29
+ scope = options.delete(:scope) || Object.new
30
+ locals = options.delete(:locals) || {}
31
+ engine = Haml::Engine.new(text, options)
32
+ return engine.to_html(base) if base
33
+ engine.to_html(scope, locals, &block)
34
+ end
35
+
36
+ def assert_warning(message)
37
+ the_real_stderr, $stderr = $stderr, StringIO.new
38
+ yield
39
+
40
+ if message.is_a?(Regexp)
41
+ assert_match message, $stderr.string.strip
42
+ else
43
+ assert_equal message.strip, $stderr.string.strip
44
+ end
45
+ ensure
46
+ $stderr = the_real_stderr
47
+ end
48
+
49
+ def silence_warnings(&block)
50
+ Haml::Util.silence_warnings(&block)
51
+ end
52
+
53
+ def rails_form_opener
54
+ '<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>'
55
+ end
56
+
57
+ def assert_raises_message(klass, message)
58
+ yield
59
+ rescue Exception => e
60
+ assert_instance_of(klass, e)
61
+ assert_equal(message, e.message)
62
+ else
63
+ flunk "Expected exception #{klass}, none raised"
64
+ end
65
+
66
+ def self.error(*args)
67
+ Haml::Error.message(*args)
68
+ end
69
+
70
+ end
71
+
72
+ ##############################
73
+ ## project specific helpers ##
74
+ ##############################
75
+
76
+ require File.dirname(__FILE__) + "/../lib/" + 'haml-i18n-extractor'
77
+
78
+ def file_path(name)
79
+ File.dirname(__FILE__) + "/support/#{name}"
80
+ end
81
+
82
+ def without_rails_mode
83
+ Object.send(:remove_const, :Rails) if defined?(Rails)
84
+ yield
85
+ end
86
+
87
+ def with_rails_mode
88
+ create_klass=<<EOR
89
+ module Rails
90
+ def self.root
91
+ "/data/current/name"
92
+ end
93
+ end
94
+ EOR
95
+ eval create_klass
96
+ yield
97
+ end
98
+
@@ -0,0 +1,130 @@
1
+ require 'test_helper'
2
+
3
+ module Haml
4
+ class StringFinderTest < MiniTest::Unit::TestCase
5
+
6
+ # empty line
7
+ test "empty line does not explode" do
8
+ assert_equal find_text(""), ""
9
+ assert_equal find_type(""), :text
10
+ end
11
+
12
+ # regular text mode
13
+ test "regular text without whitespaces" do
14
+ assert_equal find_text("iphone"), "iphone"
15
+ assert_equal find_type("iphone"), :text
16
+ end
17
+
18
+ test "regular text with whitespaces" do
19
+ assert_equal find_text(" iphone4"), "iphone4"
20
+ assert_equal find_type(" iphone4"), :text
21
+ end
22
+
23
+ # silent script mode
24
+ test "silent scripts with strings" do
25
+ assert_equal find_text("- 'jessica'"), "jessica"
26
+ assert_equal find_type("- 'jessica'"), :silent
27
+ end
28
+
29
+ test "silent scripts with no strings" do
30
+ assert_equal find_text("- if true"), ""
31
+ assert_equal find_type("- if true"), :silent
32
+ end
33
+
34
+ # html element mode
35
+ test "%tag Text is an element" do
36
+ assert_equal find_text("%span Text to find"), "Text to find"
37
+ assert_equal find_type("%span Text to find"), :element
38
+ end
39
+
40
+ test "%tag Text with class is an element" do
41
+ assert_equal find_text("%span.whatever-with-thing Text to find"), "Text to find"
42
+ assert_equal find_type("%span.whatever-with-thing Text to find"), :element
43
+ end
44
+
45
+ test "%tag Text with ruby eval code is a loud script" do
46
+ assert_equal find_text("%span= ruby_eval_code"), ""
47
+ assert_equal find_type("%span= ruby_eval_code"), :loud
48
+ end
49
+
50
+ test "%tag Text with ruby eval code and class is a loud script" do
51
+ assert_equal find_text( "%span#whatever-with-thing= ruby_eval_code"), ""
52
+ assert_equal find_type( "%span#whatever-with-thing= ruby_eval_code"), :loud
53
+ end
54
+
55
+ test "Ruby style tags %a{'href' => 'http://whatever'} whatever" do
56
+ assert_equal find_text("%a{'href' => 'http://whatever'} whatever"), "whatever"
57
+ assert_equal find_type("%a{'href' => 'http://whatever'} whatever"), :element
58
+ end
59
+
60
+ # loud scripts / ruby eval mode
61
+ test "loud scripts with strings" do
62
+ assert_equal find_text('= "bob"'), "bob"
63
+ assert_equal find_text("= 'bob'"), "bob"
64
+ assert_equal find_type("= 'bob'"), :loud
65
+ end
66
+
67
+ test "loud scripts does not interpolate ruby vars in strings" do
68
+ assert_equal find_text('= "ruby can #{var}"'), "ruby can \#{var}"
69
+ assert_equal find_type('= "ruby can #{var}"'), :loud
70
+ end
71
+
72
+ # special loud scripts exceptions
73
+ test "it finds link_to texts as an exception to the rule" do
74
+ assert_equal find_text('= link_to "This should be found", "/"'), "This should be found"
75
+ assert_equal find_type('= link_to "This should be found", "/"'), :loud
76
+ end
77
+
78
+ test "it finds link_to texts as an exception to the rule and does not interpolate" do
79
+ assert_equal find_text('= "Statistics for #{@name}"'), "Statistics for \#{@name}"
80
+ assert_equal find_type('= "Statistics for #{@name}"'), :loud
81
+ end
82
+
83
+ # html element mode with ruby evaling
84
+ test "html element with ruby eval with strings" do
85
+ assert_equal find_text('%p= "bob"'), "bob"
86
+ assert_equal find_text("%p.what= 'bob'"), "bob"
87
+ assert_equal find_text("%p.what{:attr => :val}= 'bob'"), "bob"
88
+ assert_equal find_type("%p.what{:attr => :val}= 'bob'"), :loud
89
+ end
90
+
91
+ test "html element loud scripts does not interpolate ruby vars in strings" do
92
+ assert_equal find_text('%p= "ruby can #{var}"'), "ruby can \#{var}"
93
+ assert_equal find_text('%p.what= "ruby can #{var}"'), "ruby can \#{var}"
94
+ assert_equal find_text('%p.what{:attr => :val}= "ruby can #{var}"'), "ruby can \#{var}"
95
+ assert_equal find_type('%p.what{:attr => :val}= "ruby can #{var}"'), :loud
96
+ end
97
+
98
+ test "html element it finds link_to texts as an exception to the rule" do
99
+ assert_equal find_text('%p= link_to "This should be found", "/"'), "This should be found"
100
+ assert_equal find_text('%p.what= link_to "This should be found", "/"'), "This should be found"
101
+ assert_equal find_text('%p.what{:attr => :val}= link_to "This should be found", "/"'), "This should be found"
102
+ assert_equal find_type('%p.what{:attr => :val}= link_to "This should be found", "/"'), :loud
103
+ end
104
+
105
+ test "html element it finds link_to texts as an exception to the rule and does not interpolate" do
106
+ assert_equal find_text('%p= "Statistics for #{@name}"'), "Statistics for \#{@name}"
107
+ assert_equal find_text('%p.what= "Statistics for #{@name}"'), "Statistics for \#{@name}"
108
+ assert_equal find_text('%p.what{:attr => :val}= "Statistics for #{@name}"'), "Statistics for \#{@name}"
109
+ assert_equal find_type('%p.what{:attr => :val}= "Statistics for #{@name}"'), :loud
110
+ end
111
+
112
+ private
113
+
114
+ def process_haml(haml)
115
+ text_finder = Haml::I18n::Extractor::TextFinder.new(haml)
116
+ text_finder.process_by_regex
117
+ end
118
+
119
+ def find_type(haml)
120
+ type, text = process_haml(haml)
121
+ type
122
+ end
123
+
124
+ def find_text(haml)
125
+ type, text = process_haml(haml)
126
+ text
127
+ end
128
+
129
+ end
130
+ end
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+
3
+ module Haml
4
+ class TextReplacerTest < MiniTest::Unit::TestCase
5
+
6
+ test "it initializes with the line it is going to replace and the match to replace" do
7
+ Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :text)
8
+ end
9
+
10
+ test "but it raises if passed a wrong line type" do
11
+ begin
12
+ replacer = Haml::I18n::Extractor::TextReplacer.new("regular text", "regular text", :this_is_not_defined)
13
+ assert false, 'should raise'
14
+ rescue Haml::I18n::Extractor::NotDefinedLineType
15
+ assert true, 'raised NotDefinedLineType'
16
+ end
17
+ end
18
+
19
+ # some text replacement examples
20
+ test "it can replace the body of haml with t() characters" do
21
+ replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever", "this is whatever", :text)
22
+ assert_equal replacer.replace_hash, { :modified_line => "= t('.this_is_whatever')",
23
+ :keyname => "t('.this_is_whatever')", :replaced_text => "this is whatever" }
24
+ end
25
+
26
+ test "it can replace the body of haml with t() characters example" do
27
+ replacer = Haml::I18n::Extractor::TextReplacer.new("%span Admin Dashboard", "Admin Dashboard", :element)
28
+ assert_equal replacer.replace_hash, { :modified_line => "%span= t('.admin_dashboard')",
29
+ :keyname => "t('.admin_dashboard')", :replaced_text => "Admin Dashboard" }
30
+ end
31
+
32
+ test "it won't replace already replaced t() characters if they are not ruby evaled" do
33
+ replacer = Haml::I18n::Extractor::TextReplacer.new("%span t('.admin_dashboard')", "t('.admin_dashboard')", :element)
34
+ assert_equal replacer.replace_hash, { :modified_line => "%span t('.admin_dashboard')",
35
+ :keyname => "t('.admin_dashboard')", :replaced_text => "t('.admin_dashboard')" }
36
+ end
37
+
38
+ test "it won't replace already replaced t() characters that are ruby evaled" do
39
+ replacer = Haml::I18n::Extractor::TextReplacer.new("%span= t('.admin_dashboard')", "t('.admin_dashboard')", :loud)
40
+ assert_equal replacer.replace_hash, { :modified_line => "%span= t('.admin_dashboard')",
41
+ :keyname => "t('.admin_dashboard')", :replaced_text => "t('.admin_dashboard')" }
42
+ end
43
+
44
+ test "it can replace the body of haml with t() characters example for link_to and removes surrounding quotes as well" do
45
+ replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to 'Some Place', '/'}, "Some Place", :loud)
46
+ assert_equal replacer.replace_hash, { :modified_line => %{%p#brand= link_to t('.some_place'), '/'} ,
47
+ :keyname => "t('.some_place')", :replaced_text => "Some Place" }
48
+
49
+ replacer = Haml::I18n::Extractor::TextReplacer.new(%{%p#brand= link_to "Some Place", "/"}, "Some Place", :loud)
50
+ assert_equal replacer.replace_hash, { :modified_line => %{%p#brand= link_to t('.some_place'), "/"} ,
51
+ :keyname => "t('.some_place')", :replaced_text => "Some Place" }
52
+ end
53
+
54
+ # keyname restrictions
55
+ test "it limits the characters of the t namespace it provides to LIMIT_KEY_NAME" do
56
+ replacer = Haml::I18n::Extractor::TextReplacer.new("this is whatever" * 80, "this is whatever" * 80, :text)
57
+ assert_equal replacer.replace_hash[:modified_line].size, Haml::I18n::Extractor::TextReplacer::LIMIT_KEY_NAME + 8 # = t('.')
58
+ end
59
+
60
+ test "it does not allow weird characters in the keyname" do
61
+ replacer = Haml::I18n::Extractor::TextReplacer.new("this (is `ch@racter ~ madness!", "this (is `ch@racter ~ madness!", :text)
62
+ assert_equal replacer.replace_hash, { :modified_line => "= t('.this_is_chracter_madness')",
63
+ :keyname => "t('.this_is_chracter_madness')", :replaced_text => "this (is `ch@racter ~ madness!" }
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,68 @@
1
+ require 'test_helper'
2
+
3
+ module Haml
4
+ class YamlToolTest < MiniTest::Unit::TestCase
5
+
6
+ def setup
7
+ @temp_locale_dir = File.expand_path(__FILE__) + "/tmp/"
8
+ end
9
+
10
+ def setup_locale_hash
11
+ @ex1 = Haml::I18n::Extractor.new(file_path("ex1.haml"))
12
+ @ex1.run
13
+ end
14
+
15
+ def ex1_yaml_hash
16
+ {"en"=>
17
+ {"support"=>
18
+ {"some_place"=>"Some place",
19
+ "admin"=>"Admin",
20
+ "admin_dashboard"=>"Admin Dashboard",
21
+ "stacks"=>"Stacks",
22
+ "alerts"=>"t('.alerts')",
23
+ "accounts"=>"Accounts",
24
+ "what_is_supposed_to_be_is_supp"=>
25
+ "What is@ supposed to be, is supposed to be! ~"
26
+ }
27
+ }
28
+ }
29
+ end
30
+
31
+ # test "locale dir defaults for rails if you do not pass anything" do
32
+ # with_rails_mode do
33
+ # yaml_tool = Haml::I18n::Extractor::YamlTool.new
34
+ # assert_equal yaml_tool.locales_dir, "/data/current/name/config/locales"
35
+ # end
36
+ # end
37
+
38
+ test "locale dir defaults to cwd if no rails" do
39
+ without_rails_mode do
40
+ yaml_tool = Haml::I18n::Extractor::YamlTool.new
41
+ assert_equal yaml_tool.locales_dir, File.expand_path(".")
42
+ end
43
+ end
44
+
45
+ test "you can set the locale_dir" do
46
+ yaml_tool = Haml::I18n::Extractor::YamlTool.new(@temp_locale_dir)
47
+ assert_equal yaml_tool.locales_dir, @temp_locale_dir
48
+ end
49
+
50
+ test "it relies on the locale_hash having a certain format" do
51
+ setup_locale_hash
52
+ @ex1.yaml_tool.locale_hash.each do |line_no, info_for_line|
53
+ assert info_for_line.has_key?(:modified_line), "hash info has :modified_line key"
54
+ assert info_for_line.has_key?(:keyname), "hash info has :keyname key"
55
+ assert info_for_line.has_key?(:replaced_text), "hash info has :replaced_text key"
56
+ # FIXME: since the scope right now is we're running this per file this will be the same, but keeping this right now.
57
+ assert info_for_line.has_key?(:path), "hash info has :path key"
58
+ end
59
+ end
60
+
61
+ test "constructs a yaml hash according to the view in rails mode" do
62
+ setup_locale_hash
63
+ yaml_tool = @ex1.yaml_tool
64
+ assert_equal yaml_tool.yaml_hash, ex1_yaml_hash
65
+ end
66
+
67
+ end
68
+ end