#!/usr/bin/env rspec # frozen_string_literal: true require_relative "spec_helper" require "dbus" describe DBus::ProxyService do context "when a private bus is set up", tag_service: true do let(:bus) { DBus::ASessionBus.new } describe "#exists?" do it "is true for an existing service" do svc = bus.service("org.ruby.service") svc.object("/").introspect # must activate the service first :-/ expect(svc.exists?).to be true end it "is false for a nonexisting service" do svc = bus.service("org.ruby.nosuchservice") expect(svc.exists?).to be false end end # This method is used by dbus-gui-gtk. # Deprecate it? In favor of introspecting the tree gradually # or move it to the application code? describe "#introspect" do it "creates the whole node tree" do svc = bus.service("org.ruby.service") expect { svc.introspect }.to_not raise_error expect(svc.root.dig("org", "ruby", "MyInstance")).to be_a DBus::Node end end end end