spec/lib/gdk/command/pristine_spec.rb (39 lines of code) (raw):

# frozen_string_literal: true RSpec.describe GDK::Command::Pristine do include ShelloutHelper let(:config) { GDK.config } subject { described_class.new } describe '#run' do before do stub_tty(false) end context 'when a command fails' do it 'displays an error and returns false', :hide_stdout do expect(Runit).to receive(:stop).with(quiet: true).and_return(false) expect(GDK::Output).to receive(:error).with("Failed to run 'gdk pristine' - Had an issue with 'gdk_stop'.", RuntimeError) expect(subject.run).to be(false) end end context 'when all commands succeed' do it 'displays an informational message and returns true', :hide_stdout do shellout_double = gdk_shellout_double(stream: nil, success?: true) # gdk_stop expect(Runit).to receive(:stop).with(quiet: true).and_return(true) # gdk_tmp_clean expect_gdk_shellout_command(described_class::GIT_CLEAN_TMP_CMD).and_return(shellout_double) # gdk_bundle expect_gdk_shellout_command(subject.bundle_install_cmd).and_return(shellout_double) expect_gdk_shellout_command(described_class::BUNDLE_PRISTINE_CMD).and_return(shellout_double) # reset_configs expect_gdk_shellout_command(described_class::RESET_CONFIGS_CMD).and_return(shellout_double) # gitlab_bundle expect_gdk_shellout_command(subject.bundle_install_cmd, chdir: config.gitlab.dir).and_return(shellout_double) expect_gdk_shellout_command(described_class::BUNDLE_PRISTINE_CMD, chdir: config.gitlab.dir).and_return(shellout_double) # gitlab_tmp_clean expect_gdk_shellout_command(described_class::GIT_CLEAN_TMP_CMD, chdir: config.gitlab.dir).and_return(shellout_double) # gitlab_yarn_clean expect_gdk_shellout_command(described_class::YARN_CLEAN_CMD, chdir: config.gitlab.dir).and_return(shellout_double) expect(GDK::Output).to receive(:success).with("Successfully ran 'gdk pristine'!") expect(subject.run).to be(true) end end end describe '#bundle_install_cmd' do it 'returns the default bundle install command' do allow(config).to receive(:restrict_cpu_count).and_return(6) expect(subject.bundle_install_cmd).to eq('bundle install --jobs 6 --quiet') end end end