60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: false
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| require "utils/formatter"
 | |
| require "utils/tty"
 | |
| 
 | |
| describe Formatter do
 | |
|   describe "::columns" do
 | |
|     subject(:columns) { described_class.columns(input) }
 | |
| 
 | |
|     let(:input) {
 | |
|       %w[
 | |
|         aa
 | |
|         bbb
 | |
|         ccc
 | |
|         dd
 | |
|       ]
 | |
|     }
 | |
| 
 | |
|     it "doesn't output columns if $stdout is not a TTY." do
 | |
|       allow_any_instance_of(IO).to receive(:tty?).and_return(false)
 | |
|       allow(Tty).to receive(:width).and_return(10)
 | |
| 
 | |
|       expect(columns).to eq(
 | |
|         "aa\n" \
 | |
|         "bbb\n" \
 | |
|         "ccc\n" \
 | |
|         "dd\n",
 | |
|       )
 | |
|     end
 | |
| 
 | |
|     describe "$stdout is a TTY" do
 | |
|       it "outputs columns" do
 | |
|         allow_any_instance_of(IO).to receive(:tty?).and_return(true)
 | |
|         allow(Tty).to receive(:width).and_return(10)
 | |
| 
 | |
|         expect(columns).to eq(
 | |
|           "aa    ccc\n" \
 | |
|           "bbb   dd\n",
 | |
|         )
 | |
|       end
 | |
| 
 | |
|       it "outputs only one line if everything fits" do
 | |
|         allow_any_instance_of(IO).to receive(:tty?).and_return(true)
 | |
|         allow(Tty).to receive(:width).and_return(20)
 | |
| 
 | |
|         expect(columns).to eq(
 | |
|           "aa   bbb  ccc  dd\n",
 | |
|         )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     describe "with empty input" do
 | |
|       let(:input) { [] }
 | |
| 
 | |
|       it { is_expected.to eq("\n") }
 | |
|     end
 | |
|   end
 | |
| end
 | 
