diff options
| -rw-r--r-- | lib/axlsx/package.rb | 8 | ||||
| -rw-r--r-- | test/tc_package.rb | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/axlsx/package.rb b/lib/axlsx/package.rb index 1b30c815..2faec2e3 100644 --- a/lib/axlsx/package.rb +++ b/lib/axlsx/package.rb @@ -206,12 +206,10 @@ module Axlsx # @private def parts parts = [ - {:entry => RELS_PN, :doc => relationships, :schema => RELS_XSD}, {:entry => "xl/#{STYLES_PN}", :doc => workbook.styles, :schema => SML_XSD}, {:entry => CORE_PN, :doc => @core, :schema => CORE_XSD}, {:entry => APP_PN, :doc => @app, :schema => APP_XSD}, {:entry => WORKBOOK_RELS_PN, :doc => workbook.relationships, :schema => RELS_XSD}, - {:entry => CONTENT_TYPES_PN, :doc => content_types, :schema => CONTENT_TYPES_XSD}, {:entry => WORKBOOK_PN, :doc => workbook, :schema => SML_XSD} ] @@ -256,7 +254,11 @@ module Axlsx end # Sort parts for correct MIME detection - parts.sort_by { |part| part[:entry] } + [ + {:entry => CONTENT_TYPES_PN, :doc => content_types, :schema => CONTENT_TYPES_XSD}, + {:entry => RELS_PN, :doc => relationships, :schema => RELS_XSD}, + *(parts.sort_by { |part| part[:entry] }.reverse) + ] end # Performs xsd validation for a signle document diff --git a/test/tc_package.rb b/test/tc_package.rb index b07f0d2f..6a943635 100644 --- a/test/tc_package.rb +++ b/test/tc_package.rb @@ -262,6 +262,10 @@ class TestPackage < Test::Unit::TestCase #no mystery parts assert_equal(25, p.size) + #sorted for correct MIME detection + assert_equal("[Content_Types].xml", p[0][:entry], "first entry should be `[Content_Types].xml`") + assert_equal("_rels/.rels", p[1][:entry], "second entry should be `_rels/.rels`") + assert_match(/\Axl\//, p[2][:entry], "third entry should begin with `xl/`") end def test_shared_strings_requires_part |
