#include #include #include #include #include #include #include "../../collection_fixture.hpp" using namespace std; using namespace facter::facts; using namespace facter::facts::resolvers; using namespace facter::testing; struct empty_ruby_resolver : ruby_resolver { protected: virtual data collect_data(collection& facts) override { return {}; } }; struct test_ruby_resolver : ruby_resolver { protected: virtual data collect_data(collection& facts) override { data result; result.platform = "i386-mingw32"; result.sitedir = "C:/Ruby21/lib/ruby/site_ruby/2.1.0"; result.version = "2.1.4"; return result; } }; SCENARIO("using the ruby resolver") { collection_fixture facts; WHEN("data is not present") { facts.add(make_shared()); THEN("facts should not be added") { REQUIRE(facts.size() == 0u); } } WHEN("data is present") { facts.add(make_shared()); THEN("a structured fact is added") { REQUIRE(facts.size() == 4u); auto ruby = facts.get(fact::ruby); REQUIRE(ruby); REQUIRE(ruby->size() == 3u); auto platform = ruby->get("platform"); REQUIRE(platform); REQUIRE(platform->value() == "i386-mingw32"); auto sitedir = ruby->get("sitedir"); REQUIRE(sitedir); REQUIRE(sitedir->value() == "C:/Ruby21/lib/ruby/site_ruby/2.1.0"); auto version = ruby->get("version"); REQUIRE(version); REQUIRE(version->value() == "2.1.4"); } THEN("flat facts are added") { REQUIRE(facts.size() == 4u); auto platform = facts.get(fact::rubyplatform); REQUIRE(platform); REQUIRE(platform->value() == "i386-mingw32"); auto sitedir = facts.get(fact::rubysitedir); REQUIRE(sitedir); REQUIRE(sitedir->value() == "C:/Ruby21/lib/ruby/site_ruby/2.1.0"); auto version = facts.get(fact::rubyversion); REQUIRE(version); REQUIRE(version->value() == "2.1.4"); } } }