'civicrm_contact_contact_source_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=' . $this->contactIDs[2],
'civicrm_contact_contact_source_hover' => 'View Contact Summary for this Contact',
'civicrm_activity_activity_type_id_hover' => 'View Activity Record',
+ 'class' => NULL,
];
$row = $rows[0];
// This link is not relative - skip for now
]);
}
+ /**
+ * Test that the contribution aggregate by relationship report filters
+ * by financial type.
+ */
+ public function testContributionAggregateByRelationship() {
+ $contact = $this->individualCreate();
+ // Two contributions with different financial types.
+ // We don't really care which types, just different.
+ $this->contributionCreate(['contact_id' => $contact, 'receive_date' => (date('Y') - 1) . '-07-01', 'financial_type_id' => 1, 'total_amount' => '10']);
+ $this->contributionCreate(['contact_id' => $contact, 'receive_date' => (date('Y') - 1) . '-08-01', 'financial_type_id' => 2, 'total_amount' => '20']);
+ $rows = $this->callAPISuccess('report_template', 'getrows', [
+ 'report_id' => 'contribute/history',
+ 'financial_type_id_op' => 'in',
+ 'financial_type_id_value' => [1],
+ 'options' => ['metadata' => ['sql']],
+ 'fields' => [
+ 'relationship_type_id' => 1,
+ 'total_amount' => 1,
+ ],
+ ]);
+
+ // Hmm it has styling in it before being sent to the template. If that gets fixed then will need to update this.
+ $this->assertEquals('<strong>10.00</strong>', $rows['values'][$contact]['civicrm_contribution_total_amount'], 'should only include the $10 contribution');
+
+ $this->callAPISuccess('Contact', 'delete', ['id' => $contact]);
+ }
+
+ /**
+ * Basic test of the repeat contributions report.
+ */
+ public function testRepeatContributions() {
+ // our sorting options are limited in this report - default is last name so let's ensure order
+ $contact1 = $this->individualCreate(['last_name' => 'aaaaa']);
+ $contact2 = $this->individualCreate(['last_name' => 'zzzzz']);
+ $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => (date('Y') - 1) . '-07-01', 'financial_type_id' => 1, 'total_amount' => '10']);
+ $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => (date('Y') - 1) . '-08-01', 'financial_type_id' => 1, 'total_amount' => '20']);
+ $this->contributionCreate(['contact_id' => $contact1, 'receive_date' => date('Y') . '-01-01', 'financial_type_id' => 1, 'total_amount' => '40']);
+ $this->contributionCreate(['contact_id' => $contact2, 'receive_date' => (date('Y') - 1) . '-09-01', 'financial_type_id' => 1, 'total_amount' => '80']);
+ $rows = $this->callAPISuccess('report_template', 'getrows', [
+ 'report_id' => 'contribute/repeat',
+ 'receive_date1' => 'previous.year',
+ 'receive_date2' => 'this.year',
+ 'fields' => [
+ 'sort_name' => 1,
+ ],
+ ]);
+
+ $this->assertCount(2, $rows['values']);
+
+ // Should have for both this year and last, and last year was multiple.
+ $this->assertEquals($contact1, $rows['values'][0]['contact_civireport_id'], "doesn't seem to be the right contact 1");
+ $this->assertSame('30.00', $rows['values'][0]['contribution1_total_amount_sum']);
+ $this->assertSame('2', $rows['values'][0]['contribution1_total_amount_count']);
+ $this->assertSame('40.00', $rows['values'][0]['contribution2_total_amount_sum']);
+ $this->assertSame('1', $rows['values'][0]['contribution2_total_amount_count']);
+
+ // Should only have for last year.
+ $this->assertEquals($contact2, $rows['values'][1]['contact_civireport_id'], "doesn't seem to be the right contact 2");
+ $this->assertSame('80.00', $rows['values'][1]['contribution1_total_amount_sum']);
+ $this->assertSame('1', $rows['values'][1]['contribution1_total_amount_count']);
+ $this->assertNull($rows['values'][1]['contribution2_total_amount_sum']);
+ $this->assertNull($rows['values'][1]['contribution2_total_amount_count']);
+
+ $this->callAPISuccess('Contact', 'delete', ['id' => $contact1]);
+ $this->callAPISuccess('Contact', 'delete', ['id' => $contact2]);
+ }
+
/**
* Convoluted test of the convoluted logging detail report.
*