AfformTest - Add coverage for weirdly named file.
authorTim Otten <totten@civicrm.org>
Thu, 28 Nov 2019 01:45:19 +0000 (17:45 -0800)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:20 +0000 (19:13 -0700)
Also: Clarify that the API input is a formName and not strictly a
directiveName.

ext/afform/mock/ang/mock-weird-name.aff.html [new file with mode: 0644]
ext/afform/mock/ang/mock-weird-name.aff.json [new file with mode: 0644]
ext/afform/mock/tests/phpunit/api/v4/AfformTest.php

diff --git a/ext/afform/mock/ang/mock-weird-name.aff.html b/ext/afform/mock/ang/mock-weird-name.aff.html
new file mode 100644 (file)
index 0000000..a7c626d
--- /dev/null
@@ -0,0 +1 @@
+<em>This is just an HTML file with a weird name.</em>
diff --git a/ext/afform/mock/ang/mock-weird-name.aff.json b/ext/afform/mock/ang/mock-weird-name.aff.json
new file mode 100644 (file)
index 0000000..f047ea6
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "title": "Weird Name"
+}
index 0fdbc9ac403d41cf0ff2df4e245c18f5d8998322..999d22a8a3f2069928a03a2f4ae1585a67c19e64 100644 (file)
@@ -14,23 +14,28 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
       ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page']],
       ['mockBareFile', ['title' => '', 'description' => '']],
       ['mockFoo', ['title' => '', 'description' => '']],
+      ['mock-weird-name', ['title' => 'Weird Name', 'description' => '']],
     ];
   }
 
   /**
    * This takes the bundled `example-page` and performs some API calls on it.
+   *
+   * @param string $formName
+   *   The symbolic name of the form.
+   * @param array $originalMetadata
    * @dataProvider getBasicDirectives
    */
-  public function testGetUpdateRevert($directiveName, $originalMetadata) {
+  public function testGetUpdateRevert($formName, $originalMetadata) {
     $get = function($arr, $key) {
       return isset($arr[$key]) ? $arr[$key] : NULL;
     };
 
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
 
     $message = 'The initial Afform.get should return default data';
-    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->execute();
-    $this->assertEquals($directiveName, $result[0]['name'], $message);
+    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->execute();
+    $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
@@ -38,24 +43,24 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
     $message = 'After updating with Afform.create, the revised data should be returned';
     $result = Civi\Api4\Afform::update()
-      ->addWhere('name', '=', $directiveName)
+      ->addWhere('name', '=', $formName)
       ->addValue('description', 'The temporary description')
       ->execute();
-    $this->assertEquals($directiveName, $result[0]['name'], $message);
+    $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals('The temporary description', $result[0]['description'], $message);
 
     $message = 'After updating, the Afform.get API should return blended data';
-    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->execute();
-    $this->assertEquals($directiveName, $result[0]['name'], $message);
+    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->execute();
+    $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals('The temporary description', $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);
 
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
     $message = 'After reverting, the final Afform.get should return default data';
-    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->execute();
-    $this->assertEquals($directiveName, $result[0]['name'], $message);
+    $result = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->execute();
+    $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
@@ -83,7 +88,8 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
    * In this test, we update the layout and in one format and then read it back
    * in another format.
    *
-   * @param string $directiveName
+   * @param string $formName
+   *   The symbolic name of the form.
    * @param string $updateFormat
    *   The format with which to write the data.
    *   'html' or 'array'
@@ -98,63 +104,63 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
    *   (For debug messages) A symbolic name of the example data-set being tested.
    * @dataProvider getFormatExamples
    */
-  public function testUpdateAndGetFormat($directiveName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName) {
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
+  public function testUpdateAndGetFormat($formName, $updateFormat, $updateLayout, $readFormat, $readLayout, $exampleName) {
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
 
     Civi\Api4\Afform::update()
-      ->addWhere('name', '=', $directiveName)
+      ->addWhere('name', '=', $formName)
       ->setLayoutFormat($updateFormat)
       ->setValues(['layout' => $updateLayout])
       ->execute();
 
     $result = Civi\Api4\Afform::get()
-      ->addWhere('name', '=', $directiveName)
+      ->addWhere('name', '=', $formName)
       ->setLayoutFormat($readFormat)
       ->execute();
 
     $this->assertEquals($readLayout, $result[0]['layout'], "Based on \"$exampleName\", writing content as \"$updateFormat\" and reading back as \"$readFormat\".");
 
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
   }
 
   public function testAutoRequires() {
-    $directiveName = 'mockPage';
+    $formName = 'mockPage';
     $this->createLoggedInUser();
 
     // The default mockPage has 1 explicit requirement + 2 automatic requirements.
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
-    $angModule = Civi::service('angular')->getModule($directiveName);
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
+    $angModule = Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore', 'extraMock', 'mockBareFile', 'mockFoo'], $angModule['requires']);
-    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->addSelect('requires')->execute();
+    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
     $this->assertEquals(['extraMock'], $storedRequires[0]['requires']);
 
     // Knock down to 1 explicit + 1 automatic.
     Civi\Api4\Afform::update()
-      ->addWhere('name', '=', $directiveName)
+      ->addWhere('name', '=', $formName)
       ->setLayoutFormat('html')
       ->setValues(['layout' => '<div>The bare file says "<span mock-bare-file/>"</div>'])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($directiveName);
+    $angModule = Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore', 'extraMock', 'mockBareFile'], $angModule['requires']);
-    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->addSelect('requires')->execute();
+    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
     $this->assertEquals(['extraMock'], $storedRequires[0]['requires']);
 
     // Remove the last explict and implicit requirements.
     Civi\Api4\Afform::update()
-      ->addWhere('name', '=', $directiveName)
+      ->addWhere('name', '=', $formName)
       ->setLayoutFormat('html')
       ->setValues([
         'layout' => '<div>The file has nothing! <strong>NOTHING!</strong> <em>JUST RANTING!</em></div>',
         'requires' => [],
       ])
       ->execute();
-    $angModule = Civi::service('angular')->getModule($directiveName);
+    $angModule = Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore'], $angModule['requires']);
-    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $directiveName)->addSelect('requires')->execute();
+    $storedRequires = Civi\Api4\Afform::get()->addWhere('name', '=', $formName)->addSelect('requires')->execute();
     $this->assertEquals([], $storedRequires[0]['requires']);
 
-    Civi\Api4\Afform::revert()->addWhere('name', '=', $directiveName)->execute();
-    $angModule = Civi::service('angular')->getModule($directiveName);
+    Civi\Api4\Afform::revert()->addWhere('name', '=', $formName)->execute();
+    $angModule = Civi::service('angular')->getModule($formName);
     $this->assertEquals(['afCore', 'extraMock', 'mockBareFile', 'mockFoo'], $angModule['requires']);
   }