Awight has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/243088

Change subject: Create campaign option group
......................................................................

Create campaign option group

Also protect from Civi exception when a campaign doesn't exist yet.

Bug: T99838
Change-Id: Id3f400474b6d71a2466d52397d2c46ae746215d1
---
M sites/all/modules/wmf_campaigns/WmfCampaign.php
M sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
M sites/all/modules/wmf_campaigns/wmf_campaigns.install
M sites/all/modules/wmf_campaigns/wmf_campaigns.module
M sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
5 files changed, 56 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm 
refs/changes/88/243088/1

diff --git a/sites/all/modules/wmf_campaigns/WmfCampaign.php 
b/sites/all/modules/wmf_campaigns/WmfCampaign.php
index 21d3901..fc9b853 100644
--- a/sites/all/modules/wmf_campaigns/WmfCampaign.php
+++ b/sites/all/modules/wmf_campaigns/WmfCampaign.php
@@ -6,12 +6,20 @@
 
     protected function __construct() {}
 
+    /**
+     * @return WmfCampaign|null
+     */
     public static function fromKey( $key ) {
-        $result = db_select( 'wmf_campaigns_campaign' )
-            ->fields( 'wmf_campaigns_campaign' )
-            ->condition( 'campaign_key', $key )
-            ->execute()
-            ->fetchAssoc();
+        try {
+            $result = db_select( 'wmf_campaigns_campaign' )
+                ->fields( 'wmf_campaigns_campaign' )
+                ->condition( 'campaign_key', $key )
+                ->execute()
+                ->fetchAssoc();
+        } catch ( CiviCRM_API3_Exception $ex ) {
+            watchdog( 'wmf_campaigns', "Couldn't find campaign {$key}: " . 
$ex->getMessage(), NULL, WATCHDOG_WARNING );
+            return null;
+        }
         return WmfCampaign::fromDbRecord( $result );
     }
 
diff --git a/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php 
b/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
index 912191a..41e1126 100644
--- a/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
+++ b/sites/all/modules/wmf_campaigns/tests/WmfCampaignTest.php
@@ -6,6 +6,11 @@
  * @group WmfCampaigns
  */
 class WmfCampaignTest extends BaseWmfDrupalPhpUnitTestCase {
+    public $campaign_custom_field_name;
+    public $campaign_key;
+    public $notification_email;
+    public $contact_id;
+
     function setUp() {
         parent::setUp();
         civicrm_initialize();
@@ -16,6 +21,11 @@
 
         $this->campaign_key = 'fooCamp' . mt_rand();
         $this->notification_email = '[email protected]';
+
+        civicrm_api3( 'OptionValue', 'create', array(
+            'option_group_id' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+            'name' => $this->campaign_key,
+        ) );
 
         $result = civicrm_api3( 'Contact', 'create', array(
             'contact_type' => 'Individual',
@@ -50,6 +60,10 @@
             'Campaign name found in notification email.' );
     }
 
+    /**
+     * @expectedException CiviCRM_API3_Exception
+     * @expectedExceptionMessageRegExp /fooCamp.*NOT/
+     */
     function testNonMatchingDonation() {
         $result = civicrm_api3( 'Contribution', 'create', array(
             'contact_id' => $this->contact_id,
diff --git a/sites/all/modules/wmf_campaigns/wmf_campaigns.install 
b/sites/all/modules/wmf_campaigns/wmf_campaigns.install
index 70e9cde..3404f4b 100644
--- a/sites/all/modules/wmf_campaigns/wmf_campaigns.install
+++ b/sites/all/modules/wmf_campaigns/wmf_campaigns.install
@@ -1,5 +1,9 @@
 <?php
 
+function wmf_campaigns_install() {
+    wmf_campaigns_update_7000();
+}
+
 function wmf_campaigns_schema() {
     $schema = array();
 
@@ -23,3 +27,24 @@
 
     return $schema;
 }
+
+/**
+ * Create campaign group
+ */
+function wmf_campaigns_update_7000() {
+    civicrm_initialize();
+
+    $result = civicrm_api3( 'OptionGroup', 'get', array(
+        'name' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+    ) );
+
+    if ( empty( $result['id'] ) ) {
+        $result = civicrm_api3( 'OptionGroup', 'create', array(
+            'name' => WMF_CAMPAIGNS_OPTION_GROUP_NAME,
+        ) );
+
+        if ( empty( $result['id'] ) ) {
+            throw new RuntimeException( 'Failed to create campaign option 
group.' );
+        }
+    }
+}
diff --git a/sites/all/modules/wmf_campaigns/wmf_campaigns.module 
b/sites/all/modules/wmf_campaigns/wmf_campaigns.module
index 7801eda..a24128f 100644
--- a/sites/all/modules/wmf_campaigns/wmf_campaigns.module
+++ b/sites/all/modules/wmf_campaigns/wmf_campaigns.module
@@ -3,6 +3,7 @@
 use wmf_communication\Mailer;
 use wmf_communication\Templating;
 
+// FIXME: Find the production value dynamically.
 const WMF_CAMPAIGNS_OPTION_GROUP_NAME = 'appeal_20080709183729';
 
 /**
diff --git a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php 
b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
index ac28e76..e6331e6 100644
--- a/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
+++ b/sites/all/modules/wmf_civicrm/tests/phpunit/ImportMessageTest.php
@@ -11,14 +11,6 @@
     protected $contribution_custom_mangle;
     static protected $fixtures;
 
-    public static function getInfo() {
-        return array(
-            'name' => 'Import Message',
-            'group' => 'Pipeline',
-            'description' => 'Attempt contribution message import.',
-        );
-    }
-
     public function tearDown() {
         if ( $this->contribution_id ) {
             civicrm_api_classapi()->Contribution->Delete( array(
@@ -91,6 +83,7 @@
 
         $gateway_txn_id = mt_rand();
         $check_number = (string) mt_rand();
+        $campaign = 'fooCamp' . mt_rand();
 
         $new_prefix = 'M' . mt_rand();
 
@@ -145,7 +138,7 @@
                     'check_number' => $check_number,
                     'currency' => 'USD',
                     'date' => '2012-03-01 00:00:00',
-                    'direct_mail_appeal' => 'mail code here',
+                    'direct_mail_appeal' => $campaign,
                     'do_not_email' => 'Y',
                     'do_not_mail' => 'Y',
                     'do_not_phone' => 'Y',
@@ -212,7 +205,7 @@
                         'tax_amount' => '',
                     ),
                     'contribution_custom_values' => array(
-                        'Appeal' => 'mail code here',
+                        'Appeal' => $campaign,
                         'import_batch_number' => '4321',
                         'Campaign' => 'Red mail',
                         'gateway' => 'test_gateway',

-- 
To view, visit https://gerrit.wikimedia.org/r/243088
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id3f400474b6d71a2466d52397d2c46ae746215d1
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm
Gerrit-Branch: master
Gerrit-Owner: Awight <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to