class TestCaseGenerator::GeneratorJavaScript
Public Instance Methods
can_handle?(source_fn)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 6 def can_handle?(source_fn) File.extname(source_fn).eql? '.js' end
make_class_name(filename)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 17 def make_class_name(filename) File.basename filename, '.*' end
write(ctx, source_fn)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 10 def write(ctx, source_fn) html_fn = File.join(File.dirname(source_fn), make_class_name(source_fn)) + '.html' write_html html_fn unless File.exist? html_fn write_skeleton source_fn unless File.exist? source_fn write_source ctx, source_fn end
write_html(html_fn)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 21 def write_html(html_fn) class_name = make_class_name(html_fn) File.open(html_fn, 'w') do |f| writer = IndentedWriter.new f writer.puts <<EOS <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine-html.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/boot.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.3.4/jasmine.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine-ajax/3.2.0/mock-ajax.js"></script> <script src="#{class_name}.js"></script> </head> <body> </body> </html> EOS end end
write_skeleton(source_fn)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 47 def write_skeleton(source_fn) class_name = make_class_name(source_fn) File.open(source_fn, 'w') do |f| writer = IndentedWriter.new f writer.puts <<EOS describe('#{class_name}', function() { beforeEach(function() { this.testTarget = null; // TODO }); afterEach(function() { }); // %% }); EOS end end
write_source(dsl_context, source_fn)
click to toggle source
# File lib/test_case_generator/generator_javascript.rb, line 68 def write_source(dsl_context, source_fn) tmp_fn = source_fn + '.tmp' source = File.open(source_fn).read File.open(tmp_fn, 'w') do |f| source.each_line do |line| f.puts line break if line =~ /^\s*\/\/\s*%%\s*$/ end writer = IndentedWriter.new f writer.blank writer.block_indent ' ' do writer.puts '//' writer.puts '// 以下の行は自動生成されているので直接編集しないでください。' writer.puts '//' writer.puts '// Generated by Test Case Generator' writer.puts '// https://rubygems.org/gems/test_case_generator' writer.puts '//' end dsl_context.each do |pattern| writer.block_indent ' ' do writer.blank writer.puts "it('#{pattern.join ', '}', function() {" pattern.each do |ptn| writer.block_indent ' ' do writer.puts "#{ptn}(this);" end end writer.puts '});' end end writer.blank writer.puts '});' end FileUtils.move tmp_fn, source_fn end