spec/models/rspeed/splitter/split_spec.rb in rspeed-0.6.0 vs spec/models/rspeed/splitter/split_spec.rb in rspeed-0.7.0

- old
+ new

@@ -1,51 +1,93 @@ # frozen_string_literal: true require 'support/env_mock' RSpec.describe RSpeed::Splitter, '.split' do - let!(:unsorted_data) do - [ - { file: './spec/1_5_spec.rb', time: '1.5' }, - { file: './spec/1_1_spec.rb', time: '1.1' }, - { file: './spec/0_7_spec.rb', time: '0.7' }, - { file: './spec/0_4_spec.rb', time: '0.4' }, - { file: './spec/0_3_spec.rb', time: '0.3' }, - { file: './spec/0_2_spec.rb', time: '0.2' }, - { file: './spec/2_0_spec.rb', time: '2.0' }, - ] + context 'when has no nil time' do + let!(:unsorted_data) do + [ + { file: './spec/1_5_spec.rb', time: 1.5 }, + { file: './spec/1_1_spec.rb', time: 1.1 }, + { file: './spec/0_7_spec.rb', time: 0.7 }, + { file: './spec/0_4_spec.rb', time: 0.4 }, + { file: './spec/0_3_spec.rb', time: 0.3 }, + { file: './spec/0_2_spec.rb', time: 0.2 }, + { file: './spec/2_0_spec.rb', time: 2.0 }, + ] + end + + it 'splits the times between the pipes' do + EnvMock.mock(rspeed_pipes: 3) do + expect(described_class.split(data: unsorted_data)).to eq( + rspeed_1: { + files: [{ file: './spec/2_0_spec.rb', time: 2.0 }], + number: 1, + total: 2.0, + }, + + rspeed_2: { + files: [ + { file: './spec/1_5_spec.rb', time: 1.5 }, + { file: './spec/0_4_spec.rb', time: 0.4 }, + { file: './spec/0_2_spec.rb', time: 0.2 }, + ], + + number: 2, + total: 1.5 + 0.4 + 0.2, # 1.5 -> 1.9 -> 2.1 + }, + + rspeed_3: { + files: [ + { file: './spec/1_1_spec.rb', time: 1.1 }, + { file: './spec/0_7_spec.rb', time: 0.7 }, + { file: './spec/0_3_spec.rb', time: 0.3 }, + ], + + number: 3, + total: 1.1 + 0.7 + 0.3, # 1.1 -> 1.8 -> 2.1 + } + ) + end + end end - it 'splits the times between the pipes' do - EnvMock.mock(rspeed_pipes: 3) do - expect(described_class.split(data: unsorted_data)).to eq( - rspeed_1: { - files: [{ file: './spec/2_0_spec.rb', time: 2.0 }], - number: 1, - total: 2.0, - }, + context 'when has nil time' do + let!(:unsorted_data) do + [ + { file: './spec/1_5_spec.rb', time: 1.5 }, + { file: './spec/1_1_spec.rb', time: 1.1 }, + { file: './spec/2_0_spec.rb', time: nil }, + ] + end - rspeed_2: { - files: [ - { file: './spec/1_5_spec.rb', time: 1.5 }, - { file: './spec/0_4_spec.rb', time: 0.4 }, - { file: './spec/0_2_spec.rb', time: 0.2 }, - ], + it 'uses zero as default' do + EnvMock.mock(rspeed_pipes: 3) do + expect(described_class.split(data: unsorted_data)).to eq( + rspeed_1: { + files: [{ file: './spec/1_5_spec.rb', time: 1.5 }], + number: 1, + total: 1.5, + }, - number: 2, - total: 1.5 + 0.4 + 0.2, # 1.5 -> 1.9 -> 2.1 - }, + rspeed_2: { + files: [ + { file: './spec/1_1_spec.rb', time: 1.1 }, + ], - rspeed_3: { - files: [ - { file: './spec/1_1_spec.rb', time: 1.1 }, - { file: './spec/0_7_spec.rb', time: 0.7 }, - { file: './spec/0_3_spec.rb', time: 0.3 }, - ], + number: 2, + total: 1.1 + }, - number: 3, - total: 1.1 + 0.7 + 0.3, # 1.1 -> 1.8 -> 2.1 - } - ) + rspeed_3: { + files: [ + { file: './spec/2_0_spec.rb', time: 0.0 }, + ], + + number: 3, + total: 0.0, + } + ) + end end end end