test/builder_test.rb in iostreams-1.1.0 vs test/builder_test.rb in iostreams-1.1.1

- old
+ new

@@ -1,133 +1,133 @@ -require_relative 'test_helper' +require_relative "test_helper" class BuilderTest < Minitest::Test describe IOStreams::Builder do - let(:file_name) { 'my/path/abc.bcd.xlsx.zip.gz.pgp' } + let(:file_name) { "my/path/abc.bcd.xlsx.zip.gz.pgp" } let(:streams) { IOStreams::Builder.new(file_name) } - describe '#option' do - it 'adds one option' do - streams.option(:pgp, passphrase: 'unlock-me') - assert_equal({pgp: {passphrase: 'unlock-me'}}, streams.options) + describe "#option" do + it "adds one option" do + streams.option(:pgp, passphrase: "unlock-me") + assert_equal({pgp: {passphrase: "unlock-me"}}, streams.options) end - it 'adds options in order' do - streams.option(:pgp, passphrase: 'unlock-me') + it "adds options in order" do + streams.option(:pgp, passphrase: "unlock-me") streams.option(:enc, compress: false) - assert_equal({pgp: {passphrase: 'unlock-me'}, enc: {compress: false}}, streams.options) + assert_equal({pgp: {passphrase: "unlock-me"}, enc: {compress: false}}, streams.options) end - it 'will not add an option if a stream was already set' do - streams.stream(:pgp, passphrase: 'unlock-me') + it "will not add an option if a stream was already set" do + streams.stream(:pgp, passphrase: "unlock-me") assert_raises ArgumentError do - streams.option(:pgp, passphrase: 'unlock-me') + streams.option(:pgp, passphrase: "unlock-me") end end - it 'will not add an invalid option' do + it "will not add an invalid option" do assert_raises ArgumentError do streams.option(:blah, value: 23) end end - describe 'with no file_name' do + describe "with no file_name" do let(:file_name) { nil } - it 'prevents options being set' do + it "prevents options being set" do assert_raises ArgumentError do - streams.option(:pgp, passphrase: 'unlock-me') + streams.option(:pgp, passphrase: "unlock-me") end end end end - describe '#stream' do - it 'adds one stream' do - streams.stream(:pgp, passphrase: 'unlock-me') - assert_equal({pgp: {passphrase: 'unlock-me'}}, streams.streams) + describe "#stream" do + it "adds one stream" do + streams.stream(:pgp, passphrase: "unlock-me") + assert_equal({pgp: {passphrase: "unlock-me"}}, streams.streams) end - it 'adds streams in order' do - streams.stream(:pgp, passphrase: 'unlock-me') + it "adds streams in order" do + streams.stream(:pgp, passphrase: "unlock-me") streams.stream(:enc, compress: false) - assert_equal({pgp: {passphrase: 'unlock-me'}, enc: {compress: false}}, streams.streams) + assert_equal({pgp: {passphrase: "unlock-me"}, enc: {compress: false}}, streams.streams) end - it 'will not add a stream if an option was already set' do - streams.option(:pgp, passphrase: 'unlock-me') + it "will not add a stream if an option was already set" do + streams.option(:pgp, passphrase: "unlock-me") assert_raises ArgumentError do - streams.stream(:pgp, passphrase: 'unlock-me') + streams.stream(:pgp, passphrase: "unlock-me") end end - it 'will not add an invalid stream' do + it "will not add an invalid stream" do assert_raises ArgumentError do streams.stream(:blah, value: 23) end end end - describe '#reader' do + describe "#reader" do let :gzip_string do - io_string = StringIO.new(''.b) + io_string = StringIO.new("".b) IOStreams::Gzip::Writer.stream(io_string) do |io| io.write("Hello World") end io_string.string end - it 'directly calls block for an empty stream' do + it "directly calls block for an empty stream" do string_io = StringIO.new value = nil streams.stream(:none) streams.reader(string_io) do |io| assert_equal io, string_io value = 32 end assert_equal 32, value end - it 'returns the reader' do + it "returns the reader" do string_io = StringIO.new(gzip_string) streams.stream(:gz) streams.reader(string_io) do |io| assert io.is_a?(::Zlib::GzipReader), io end end - it 'returns the last reader' do + it "returns the last reader" do string_io = StringIO.new(gzip_string) streams.stream(:encode) streams.stream(:gz) streams.reader(string_io) do |io| assert io.is_a?(IOStreams::Encode::Reader), io end end end - describe '#writer' do - it 'directly calls block for an empty stream' do + describe "#writer" do + it "directly calls block for an empty stream" do string_io = StringIO.new value = nil streams.stream(:none) streams.writer(string_io) do |io| assert_equal io, string_io value = 32 end assert_equal 32, value end - it 'returns the reader' do + it "returns the reader" do string_io = StringIO.new streams.stream(:zip) streams.writer(string_io) do |io| assert io.is_a?(ZipTricks::Streamer::Writable), io end end - it 'returns the last reader' do + it "returns the last reader" do string_io = StringIO.new streams.stream(:encode) streams.stream(:zip) streams.writer(string_io) do |io| assert io.is_a?(IOStreams::Encode::Writer), io @@ -135,110 +135,110 @@ end end # Internal methods - describe '#class_for_stream' do - it 'xlsx' do + describe "#class_for_stream" do + it "xlsx" do assert_equal IOStreams::Xlsx::Reader, streams.send(:class_for_stream, :reader, :xlsx) end - it 'gzip' do + it "gzip" do assert_equal IOStreams::Gzip::Writer, streams.send(:class_for_stream, :writer, :gzip) end - it 'unknown' do + it "unknown" do assert_raises ArgumentError do streams.send(:class_for_stream, :reader, :unknown) end end end - describe '#parse_extensions' do - it 'single stream' do - streams = IOStreams::Builder.new('my/path/abc.xlsx') + describe "#parse_extensions" do + it "single stream" do + streams = IOStreams::Builder.new("my/path/abc.xlsx") assert_equal %i[xlsx], streams.send(:parse_extensions) end - it 'empty' do - streams = IOStreams::Builder.new('my/path/abc.csv') + it "empty" do + streams = IOStreams::Builder.new("my/path/abc.csv") assert_equal [], streams.send(:parse_extensions) end - it 'handles multiple extensions' do + it "handles multiple extensions" do assert_equal %i[xlsx zip gz pgp], streams.send(:parse_extensions) end - describe 'case-insensitive' do - let(:file_name) { 'a.XlsX.GzIp' } + describe "case-insensitive" do + let(:file_name) { "a.XlsX.GzIp" } - it 'is case-insensitive' do + it "is case-insensitive" do assert_equal %i[xlsx gzip], streams.send(:parse_extensions) end end end - describe '#pipeline' do - it 'with stream and file name' do + describe "#pipeline" do + it "with stream and file name" do expected = {enc: {compress: false}} streams.stream(:enc, compress: false) assert_equal expected, streams.pipeline end - it 'no file name, streams, or options' do + it "no file name, streams, or options" do expected = {} streams = IOStreams::Builder.new assert_equal expected, streams.pipeline end - it 'file name without options' do - expected = {:xlsx => {}, :zip => {}, :gz => {}, :pgp => {}} + it "file name without options" do + expected = {xlsx: {}, zip: {}, gz: {}, pgp: {}} assert_equal expected, streams.pipeline end - it 'file name with encode option' do - expected = {encode: {encoding: 'BINARY'}, :xlsx => {}, :zip => {}, :gz => {}, :pgp => {}} - streams.option(:encode, encoding: 'BINARY') + it "file name with encode option" do + expected = {encode: {encoding: "BINARY"}, xlsx: {}, zip: {}, gz: {}, pgp: {}} + streams.option(:encode, encoding: "BINARY") assert_equal expected, streams.pipeline end - it 'file name with option' do - expected = {:xlsx => {}, :zip => {}, :gz => {}, :pgp => {passphrase: 'unlock-me'}} - streams.option(:pgp, passphrase: 'unlock-me') + it "file name with option" do + expected = {xlsx: {}, zip: {}, gz: {}, pgp: {passphrase: "unlock-me"}} + streams.option(:pgp, passphrase: "unlock-me") assert_equal expected, streams.pipeline end end - describe '#execute' do - it 'directly calls block for an empty stream' do + describe "#execute" do + it "directly calls block for an empty stream" do string_io = StringIO.new value = nil streams.send(:execute, :writer, {}, string_io) do |io| assert_equal io, string_io value = 32 end assert_equal 32, value end - it 'calls last block in one element stream' do - pipeline = {simple: {arg: 'first'}} + it "calls last block in one element stream" do + pipeline = {simple: {arg: "first"}} string_io = StringIO.new - streams.send(:execute, :writer, pipeline, string_io) { |io| io.write('last') } - assert_equal 'first>last', string_io.string + streams.send(:execute, :writer, pipeline, string_io) { |io| io.write("last") } + assert_equal "first>last", string_io.string end - it 'chains blocks in 2 element stream' do - pipeline = {simple: {arg: 'first'}, simple2: {arg: 'second'}} + it "chains blocks in 2 element stream" do + pipeline = {simple: {arg: "first"}, simple2: {arg: "second"}} string_io = StringIO.new - streams.send(:execute, :writer, pipeline, string_io) { |io| io.write('last') } - assert_equal 'second>first>last', string_io.string + streams.send(:execute, :writer, pipeline, string_io) { |io| io.write("last") } + assert_equal "second>first>last", string_io.string end - it 'chains blocks in 3 element stream' do - pipeline = {simple: {arg: 'first'}, simple2: {arg: 'second'}, simple3: {arg: 'third'}} + it "chains blocks in 3 element stream" do + pipeline = {simple: {arg: "first"}, simple2: {arg: "second"}, simple3: {arg: "third"}} string_io = StringIO.new - streams.send(:execute, :writer, pipeline, string_io) { |io| io.write('last') } - assert_equal 'third>second>first>last', string_io.string + streams.send(:execute, :writer, pipeline, string_io) { |io| io.write("last") } + assert_equal "third>second>first>last", string_io.string end end class SimpleStream def self.stream(io, **args)