spec/lib/gdk/version_checker_spec.rb (42 lines of code) (raw):

# frozen_string_literal: true require "spec_helper" RSpec.describe GDK::VersionChecker do include ShelloutHelper subject(:version_checker) { described_class.new(service_path: GDK.root) } describe '#current_commit' do it 'returns the current commit on current branch of the given service' do allow_gdk_shellout_command("git #{GDK::VersionChecker::SHOW_COMMIT_CMD}", chdir: GDK.root) .and_return(gdk_shellout_double(run: '{"sha": "abc123", "timestamp": "2025-01-30T12:00:00+0100"}')) expect(version_checker.current_commit.sha).to eq('abc123') expect(version_checker.current_commit.timestamp).to eq(DateTime.parse("2025-01-30T12:00:00+0100")) end end describe '#latest_main_commit' do it 'returns the latest commit on the main branch of the given service' do allow_gdk_shellout_command("git fetch", chdir: GDK.root) .and_return(gdk_shellout_double(run: true)) allow_gdk_shellout_command("git #{GDK::VersionChecker::SHOW_COMMIT_CMD} origin/main", chdir: GDK.root) .and_return(gdk_shellout_double(run: '{"sha": "zwk987", "timestamp": "2025-01-31T12:00:00+0100"}')) expect(version_checker.latest_main_commit.sha).to eq('zwk987') expect(version_checker.latest_main_commit.timestamp).to eq(DateTime.parse("2025-01-31T12:00:00+0100")) end end describe '#diff_message' do before do allow_gdk_shellout_command("git #{GDK::VersionChecker::SHOW_COMMIT_CMD}", chdir: GDK.root) .and_return(gdk_shellout_double(run: '{"sha": "abc123", "timestamp": "2025-01-30T12:00:00+0100"}')) allow_gdk_shellout_command("git fetch", chdir: GDK.root) .and_return(gdk_shellout_double(run: true)) allow_gdk_shellout_command("git #{GDK::VersionChecker::SHOW_COMMIT_CMD} origin/main", chdir: GDK.root) .and_return(gdk_shellout_double(run: '{"sha": "zwk987", "timestamp": "2025-01-31T12:00:00+0100"}')) allow_gdk_shellout_command(%(git rev-list --count --left-only abc123...zwk987), chdir: GDK.root) .and_return(gdk_shellout_double(run: '8')) allow_gdk_shellout_command(%(git rev-list --count --left-only zwk987...abc123), chdir: GDK.root) .and_return(gdk_shellout_double(run: '5')) end it 'calculates the diff between current commit and latest commit' do expect(version_checker.diff_message).to eq( 'Current commit (abc123) is 5 commits behind and is 8 commits ahead of origin/main (zwk987)' ) end end end