require 'test_helper' require 'review/epubmaker' require 'review/epubmaker/zip_exporter' require 'fileutils' class ZipExporterTest < Test::Unit::TestCase def setup @tmpdir = Dir.mktmpdir @epubdir = File.join(@tmpdir, 'epubdir') FileUtils.mkdir_p(File.join(@epubdir, 'META-INF')) FileUtils.mkdir_p(File.join(@epubdir, 'OEBPS')) File.write(File.join(@epubdir, 'mimetype'), 'application/epub+zip') container_xml = <<-EOB EOB book_opf = <<-EOB sample epub AUTHOR ja http://example.com/epub/sample/sample1.epub EOB ch1_xhtml = <<-EOB test

hello, world!

EOB File.write(File.join(@epubdir, 'META-INF/container.xml'), container_xml) File.write(File.join(@epubdir, 'OEBPS/book.opf'), book_opf) File.write(File.join(@epubdir, 'OEBPS/ch1.xhtml'), ch1_xhtml) end def test_export_zipcmd if Gem.win_platform? ## skip this test return end config = { 'epubmaker' => {} } epubfile = File.join(@tmpdir, 'test.epub') exporter = ReVIEW::EPUBMaker::ZipExporter.new(@epubdir, config) exporter.export_zip_extcmd(epubfile) assert_true(File.exist?(epubfile)) if defined?(Zip) File.open(epubfile) do |f| ::Zip::InputStream.open(f) do |fzip| ## get first entry entry = fzip.get_next_entry assert_equal 'mimetype', entry.name assert_equal 'application/epub+zip', fzip.read end end end end def test_export_rubyzip return unless defined?(Zip) ## skip test config = { 'epubmaker' => {} } epubfile = File.join(@tmpdir, 'test.epub') exporter = ReVIEW::EPUBMaker::ZipExporter.new(@epubdir, config) exporter.export_zip_rubyzip(epubfile) assert_true(File.exist?(epubfile)) File.open(epubfile) do |f| ::Zip::InputStream.open(f) do |fzip| ## get first entry entry = fzip.get_next_entry assert_equal 'mimetype', entry.name assert_equal 'application/epub+zip', fzip.read end end end def teardown FileUtils.remove_entry_secure(@tmpdir) end end