require "rails_helper" RSpec.describe Admin::HostMetrics do subject(:metrics) { described_class.new } describe "#build_disk_usage" do it "costruisce la struttura disco" do result = metrics.send(:build_disk_usage, "/", total: 115_964_116_992, used: 9_388_032_000, free: 106_576_084_992, used_percent: 9.0) expect(result[:path]).to eq("/") expect(result[:total_bytes]).to eq(115_964_116_992) expect(result[:used_bytes]).to eq(9_388_032_000) expect(result[:free_bytes]).to eq(106_576_084_992) expect(result[:used_percent]).to eq(9.0) end end describe "#disk_usage_for" do it "usa df quando statvfs non รจ disponibile" do allow(File).to receive(:respond_to?).and_call_original allow(File).to receive(:respond_to?).with(:statvfs).and_return(false) allow(Dir).to receive(:exist?).with("/recordings").and_return(true) allow(metrics).to receive(:disk_usage_via_statvfs).with("/recordings").and_return(nil) allow(metrics).to receive(:disk_usage_via_df).with("/recordings").and_return( path: "/recordings", total_bytes: 100_000, used_bytes: 9_000, free_bytes: 91_000, used_percent: 9.0 ) allow(metrics).to receive(:shell_out).with(/du -sb/).and_return("1048576\t/recordings\n") result = metrics.send(:disk_usage_for, "/recordings") expect(result[:total_bytes]).to eq(100_000) expect(result[:dir_size_bytes]).to eq(1_048_576) end end end