From 09f2d2c1f646263dd5984c95f635ca9a08370423 Mon Sep 17 00:00:00 2001
From: Lee Rowlands <lee.rowlands@previousnext.com.au>
Date: Tue, 20 Aug 2019 08:37:00 +1000
Subject: [PATCH] Revert "Issue #3043168 by Wim Leers, Niklan, gabesullice,
 joelstein, mglaman: PATCH 405 for untranslatable content entities with
 different default language than English"

This reverts commit bfd08b8c2b083844c5a4994f6accd92514816232.
---
 .../ParamConverter/EntityUuidConverter.php    |  5 +-
 .../JsonApiFunctionalMultilingualTest.php     | 20 +++---
 .../src/Functional/JsonApiRegressionTest.php  | 64 -------------------
 3 files changed, 11 insertions(+), 78 deletions(-)

diff --git a/core/modules/jsonapi/src/ParamConverter/EntityUuidConverter.php b/core/modules/jsonapi/src/ParamConverter/EntityUuidConverter.php
index 75f7181796ff..aeec4c5d44b5 100644
--- a/core/modules/jsonapi/src/ParamConverter/EntityUuidConverter.php
+++ b/core/modules/jsonapi/src/ParamConverter/EntityUuidConverter.php
@@ -2,10 +2,11 @@
 
 namespace Drupal\jsonapi\ParamConverter;
 
-use Drupal\Core\Entity\TranslatableInterface;
+use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\ParamConverter\EntityConverter;
+use Drupal\Core\TypedData\TranslatableInterface;
 use Drupal\jsonapi\Routing\Routes;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
@@ -61,7 +62,7 @@ public function convert($value, $definition, $name, array $defaults) {
       $entity = reset($entities);
       // If the entity type is translatable, ensure we return the proper
       // translation object for the current context.
-      if ($entity instanceof TranslatableInterface && $entity->isTranslatable()) {
+      if ($entity instanceof EntityInterface && $entity instanceof TranslatableInterface) {
         // @see https://www.drupal.org/project/drupal/issues/2624770
         $entity_repository = isset($this->entityRepository) ? $this->entityRepository : $this->entityManager;
         $entity = $entity_repository->getTranslationFromContext($entity, NULL, ['operation' => 'entity_upcast']);
diff --git a/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalMultilingualTest.php b/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalMultilingualTest.php
index 65cdf3c8baff..01e01db7dcea 100644
--- a/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalMultilingualTest.php
+++ b/core/modules/jsonapi/tests/src/Functional/JsonApiFunctionalMultilingualTest.php
@@ -25,7 +25,6 @@ class JsonApiFunctionalMultilingualTest extends JsonApiFunctionalTestBase {
    */
   public static $modules = [
     'language',
-    'content_translation',
   ];
 
   /**
@@ -46,13 +45,6 @@ protected function setUp() {
       ->set('url.prefixes.ca-fr', 'ca-fr')
       ->save();
 
-    ContentLanguageSettings::create([
-      'target_entity_type_id' => 'node',
-      'target_bundle' => 'article',
-    ])
-      ->setThirdPartySetting('content_translation', 'enabled', TRUE)
-      ->save();
-
     $this->createDefaultContent(5, 5, TRUE, TRUE, static::IS_MULTILINGUAL, FALSE);
   }
 
@@ -146,8 +138,10 @@ public function testPatchTranslation() {
 
     // Specifying a langcode is allowed once configured to be alterable. But
     // modifying the language of a non-default translation is still not allowed.
-    ContentLanguageSettings::loadByEntityTypeBundle('node', 'article')
-      ->setLanguageAlterable(TRUE)
+    ContentLanguageSettings::create([
+      'target_entity_type_id' => 'node',
+      'target_bundle' => 'article',
+    ])->setLanguageAlterable(TRUE)
       ->save();
     $response = $this->request('PATCH', Url::fromUri('base:/ca/jsonapi/node/article/' . $this->nodes[0]->uuid()), $request_options);
     $this->assertSame(500, $response->getStatusCode());
@@ -272,8 +266,10 @@ public function testPostTranslation() {
 
     // Specifying a langcode is allowed once configured to be alterable. Now an
     // entity can be created with the specified langcode.
-    ContentLanguageSettings::loadByEntityTypeBundle('node', 'article')
-      ->setLanguageAlterable(TRUE)
+    ContentLanguageSettings::create([
+      'target_entity_type_id' => 'node',
+      'target_bundle' => 'article',
+    ])->setLanguageAlterable(TRUE)
       ->save();
     $request_document['data']['attributes']['langcode'] = 'ca';
     $request_options[RequestOptions::BODY] = Json::encode($request_document);
diff --git a/core/modules/jsonapi/tests/src/Functional/JsonApiRegressionTest.php b/core/modules/jsonapi/tests/src/Functional/JsonApiRegressionTest.php
index 94bf56d1ddd2..bd05177b8c95 100644
--- a/core/modules/jsonapi/tests/src/Functional/JsonApiRegressionTest.php
+++ b/core/modules/jsonapi/tests/src/Functional/JsonApiRegressionTest.php
@@ -6,12 +6,9 @@
 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
 use Drupal\comment\Tests\CommentTestTrait;
 use Drupal\Component\Serialization\Json;
-use Drupal\Core\Entity\TranslatableInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
-use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Url;
 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
-use Drupal\entity_test\Entity\EntityTest;
 use Drupal\entity_test\Entity\EntityTestMapField;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
@@ -992,65 +989,4 @@ public function testLeakedCacheMetadataViaRdfFromIssue3053827() {
     $this->assertSame(200, $response->getStatusCode());
   }
 
-  /**
-   * Ensure non-translatable entities can be PATCHed with an alternate language.
-   *
-   * @see https://www.drupal.org/project/drupal/issues/3043168
-   */
-  public function testNonTranslatableEntityUpdatesFromIssue3043168() {
-    // Enable write-mode.
-    $this->config('jsonapi.settings')->set('read_only', FALSE)->save(TRUE);
-    // Set the site language to Russian.
-    $this->config('system.site')->set('langcode', 'ru')->set('default_langcode', 'ru')->save(TRUE);
-    // Install a "custom" entity type that is not translatable.
-    $this->assertTrue($this->container->get('module_installer')->install(['entity_test'], TRUE), 'Installed modules.');
-    // Clear and rebuild caches and routes.
-    $this->rebuildAll();
-    // Create a test entity.
-    // @see \Drupal\language\DefaultLanguageItem
-    $entity = EntityTest::create([
-      'name' => 'Alexander',
-      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
-    ]);
-    $entity->save();
-    // Ensure it is an instance of TranslatableInterface and that it is *not*
-    // translatable.
-    $this->assertInstanceOf(TranslatableInterface::class, $entity);
-    $this->assertFalse($entity->isTranslatable());
-    // Set up a test user with permission to view and update the test entity.
-    $user = $this->drupalCreateUser(['view test entity', 'administer entity_test content']);
-    $request_options[RequestOptions::HEADERS]['Accept'] = 'application/vnd.api+json';
-    $request_options[RequestOptions::AUTH] = [
-      $user->getUsername(),
-      $user->pass_raw,
-    ];
-    // GET the test entity via JSON:API.
-    $entity_url = Url::fromUri('internal:/jsonapi/entity_test/entity_test/' . $entity->uuid());
-    $response = $this->request('GET', $entity_url, $request_options);
-    $this->assertSame(200, $response->getStatusCode());
-    $response_document = Json::decode($response->getBody());
-    // Ensure that the entity's langcode attribute is 'und'.
-    $this->assertSame(LanguageInterface::LANGCODE_NOT_SPECIFIED, $response_document['data']['attributes']['langcode']);
-    // Prepare to PATCH the entity via JSON:API.
-    $request_options[RequestOptions::HEADERS]['Content-Type'] = 'application/vnd.api+json';
-    $request_options[RequestOptions::JSON] = [
-      'data' => [
-        'type' => 'entity_test--entity_test',
-        'id' => $entity->uuid(),
-        'attributes' => [
-          'name' => 'Constantine',
-        ],
-      ],
-    ];
-    // Issue the PATCH request and verify that the test entity was successfully
-    // updated.
-    $response = $this->request('PATCH', $entity_url, $request_options);
-    $this->assertSame(200, $response->getStatusCode(), (string) $response->getBody());
-    $response_document = Json::decode($response->getBody());
-    // Ensure that the entity's langcode attribute is still 'und' and the name
-    // was successfully updated.
-    $this->assertSame(LanguageInterface::LANGCODE_NOT_SPECIFIED, $response_document['data']['attributes']['langcode']);
-    $this->assertSame('Constantine', $response_document['data']['attributes']['name']);
-  }
-
 }
-- 
GitLab