skoji / gepub

a generic EPUB library for Ruby : supports EPUB 3
Other
240 stars 42 forks source link

Book.add_item fails with exception if media_type or media_overlay is passed #109

Closed slonopotamus closed 4 years ago

slonopotamus commented 4 years ago

Test case:

    describe 'add_item' do
      it 'adds item with media type' do
        book = GEPUB::Book.new
        book.add_item 'chap3.xml', content: nil, media_type: 'application/docbook+xml'
        expect(book.items.size).to eq 1
      end
    end

Expected: test passes

Actual:

     NoMethodError:
       undefined method `add_media_type' for #<GEPUB::Item:0x0000000006d80a58>
     # ./lib/gepub/book.rb:474:in `block in add_item_internal'
     # ./lib/gepub/book.rb:467:in `each'
     # ./lib/gepub/book.rb:467:in `add_item_internal'
     # ./lib/gepub/book_add_item.rb:9:in `add_item'
     # ./spec/book_spec.rb:277:in `block (4 levels) in <top (required)>'

Same bug happens with Book.add_ordered_item.

Workaround:

item = book.add_item 'chap3.xml', content: nil
item.set_media_type: 'application/docbook+xml'