From cf5ad5feba35bfe8f9ba3082c516769d515208c0 Mon Sep 17 00:00:00 2001
From: Lee Rowlands <lee.rowlands@previousnext.com.au>
Date: Thu, 22 Aug 2019 12:26:30 +1000
Subject: [PATCH] Issue #3075831 by mr.baileys: Failing assertions when bundle
 ID contains only numbers

---
 .../jsonapi/src/ResourceType/ResourceTypeRepository.php   | 2 +-
 .../Kernel/ResourceType/ResourceTypeRepositoryTest.php    | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php
index fea0e6aa3887..48563444f53e 100644
--- a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php
+++ b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php
@@ -111,7 +111,7 @@ public function all() {
       foreach ($this->entityTypeManager->getDefinitions() as $entity_type) {
         $bundles = array_keys($this->entityTypeBundleInfo->getBundleInfo($entity_type->id()));
         $resource_types = array_reduce($bundles, function ($resource_types, $bundle) use ($entity_type) {
-          $resource_type = $this->createResourceType($entity_type, $bundle);
+          $resource_type = $this->createResourceType($entity_type, (string) $bundle);
           return array_merge($resource_types, [
             $resource_type->getTypeName() => $resource_type,
           ]);
diff --git a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
index 8f9e6c5ae264..a87ca929dff7 100644
--- a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
+++ b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
@@ -50,6 +50,9 @@ protected function setUp() {
     NodeType::create([
       'type' => 'page',
     ])->save();
+    NodeType::create([
+      'type' => '42',
+    ])->save();
 
     $this->resourceTypeRepository = $this->container->get('jsonapi.resource_type.repository');
   }
@@ -91,6 +94,7 @@ public function testGet($entity_type_id, $bundle, $entity_class) {
   public function getProvider() {
     return [
       ['node', 'article', 'Drupal\node\Entity\Node'],
+      ['node', '42', 'Drupal\node\Entity\Node'],
       ['node_type', 'node_type', 'Drupal\node\Entity\NodeType'],
       ['menu', 'menu', 'Drupal\system\Entity\Menu'],
     ];
@@ -102,9 +106,9 @@ public function getProvider() {
   public function testCaching() {
     $this->assertEmpty($this->resourceTypeRepository->get('node', 'article')->getRelatableResourceTypesByField('field_relationship'));
     $this->createEntityReferenceField('node', 'article', 'field_relationship', 'Related entity', 'node');
-    $this->assertCount(2, $this->resourceTypeRepository->get('node', 'article')->getRelatableResourceTypesByField('field_relationship'));
-    NodeType::create(['type' => 'camelids'])->save();
     $this->assertCount(3, $this->resourceTypeRepository->get('node', 'article')->getRelatableResourceTypesByField('field_relationship'));
+    NodeType::create(['type' => 'camelids'])->save();
+    $this->assertCount(4, $this->resourceTypeRepository->get('node', 'article')->getRelatableResourceTypesByField('field_relationship'));
   }
 
 }
-- 
GitLab