From 31fa01e49457ef9f0422ea614155b8dfb5d1b403 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 27 Nov 2019 17:45:19 -0800 Subject: [PATCH] AfformTest - Add coverage for weirdly named file. Also: Clarify that the API input is a formName and not strictly a directiveName. --- ext/afform/mock/ang/mock-weird-name.aff.html | 1 + ext/afform/mock/ang/mock-weird-name.aff.json | 3 + .../mock/tests/phpunit/api/v4/AfformTest.php | 64 ++++++++++--------- 3 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 ext/afform/mock/ang/mock-weird-name.aff.html create mode 100644 ext/afform/mock/ang/mock-weird-name.aff.json 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 index 0000000000..a7c626d6d5 --- /dev/null +++ b/ext/afform/mock/ang/mock-weird-name.aff.html @@ -0,0 +1 @@ +This is just an HTML file with a weird name. 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 index 0000000000..f047ea604f --- /dev/null +++ b/ext/afform/mock/ang/mock-weird-name.aff.json @@ -0,0 +1,3 @@ +{ + "title": "Weird Name" +} diff --git a/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php b/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php index 0fdbc9ac40..999d22a8a3 100644 --- a/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php +++ b/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php @@ -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' => '
The bare file says ""
']) ->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' => '
The file has nothing! NOTHING! JUST RANTING!
', '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']); } -- 2.25.1