@@ -30,6 +30,7 @@ using ::testing::Eq;
3030using ::testing::HasSubstr;
3131using ::testing::IsEmpty;
3232using ::testing::Key;
33+ using ::testing::SizeIs;
3334using ::testing::UnorderedElementsAre;
3435
3536TEST (ExtractTypesFromSchemaTest, Success) {
@@ -792,6 +793,62 @@ TEST(ProcessMethodRequestsAndResponsesTest, TypeInsertError) {
792793 HasSubstr (" Unable to insert type Foos.CreateRequest" )));
793794}
794795
796+ TEST (CreateFilesFromResourcesTest, NonEmptyResources) {
797+ auto constexpr kResourceJson = R"""( {
798+ "methods": {
799+ "create": {
800+ "scopes": [
801+ "https://www.googleapis.com/auth/cloud-platform"
802+ ],
803+ "path": "projects/{project}/zones/{zone}/myResources/{fooId}",
804+ "httpMethod": "POST",
805+ "parameters": {
806+ "project": {
807+ "type": "string"
808+ },
809+ "zone": {
810+ "type": "string"
811+ },
812+ "fooId": {
813+ "type": "string"
814+ }
815+ },
816+ "response": {
817+ "$ref": "Operation"
818+ },
819+ "request": {
820+ "$ref": "Foo"
821+ },
822+ "parameterOrder": [
823+ "project",
824+ "zone",
825+ "fooId"
826+ ]
827+ }
828+ }
829+ })""" ;
830+ auto const resource_json =
831+ nlohmann::json::parse (kResourceJson , nullptr , false );
832+ ASSERT_TRUE (resource_json.is_object ());
833+ std::map<std::string, DiscoveryResource> resources;
834+ resources.emplace (" foos" , DiscoveryResource (" foos" , " " , " " , resource_json));
835+ auto result =
836+ CreateFilesFromResources (resources, " product_name" , " version" , " tmp" );
837+ ASSERT_THAT (result, SizeIs (1 ));
838+ EXPECT_THAT (result.front ().resource_name (), Eq (" foos" ));
839+ EXPECT_THAT (result.front ().file_path (),
840+ Eq (" tmp/google/cloud/product_name/foos/version/foos.proto" ));
841+ EXPECT_THAT (result.front ().package_name (),
842+ Eq (" google.cloud.cpp.product_name.foos.version" ));
843+ }
844+
845+ TEST (CreateFilesFromResourcesTest, EmptyResources) {
846+ std::map<std::string, DiscoveryResource> resources;
847+ auto result =
848+ CreateFilesFromResources (resources, " product_name" , " version" , " tmp" );
849+ EXPECT_THAT (result, IsEmpty ());
850+ }
851+
795852} // namespace
796853} // namespace generator_internal
797854} // namespace cloud
0 commit comments