Skip to content
Snippets Groups Projects
Commit 7ce6b535 authored by Sean Madsen's avatar Sean Madsen
Browse files

Markdown cleanup

parent 172a63de
No related branches found
No related tags found
No related merge requests found
......@@ -3,67 +3,61 @@
Due to the varied nature of environments & the implicitly incomplete coverage automated tests have manual testing will never be obsolete. This page contains links to some test plans to be mixed & matched for RC testing
# Dedupe & merge testing
## Tests for the dedupe / merge functionality
## Dedupe and merge testing {:#dedupe}
### Finding duplicates
- Choose a rule to dedupe on, do not filter by a group, check that all
1. Choose a rule to dedupe on, do not filter by a group, check that all
potential duplicates are displayed
- As above, but enter a 'limit', ensure that the number of results is
1. As above, but enter a 'limit', ensure that the number of results is
limited to no more than the number specified
- Choose a rule to dedupe on, filter by a group, check that the list
1. Choose a rule to dedupe on, filter by a group, check that the list
of potential duplicates is fewer
### Manually merging records
<span
style="color: rgb(0,0,0);font-size: 10.0pt;font-weight: normal;line-height: 13.0pt;">Click
to 'Merge' two records using the interface.</span>
Click to **Merge** two records using the interface.
- Check that clicking 'Next' takes you to the next record expected
- Check that clicking 'Previous' takes you to the previous record
- Check that clicking 'Flip' flips the positions of the 'main' and
'duplicate' contacts
1. Check that clicking **Next** takes you to the next record expected
1. Check that clicking **Previous** takes you to the previous record
1. Check that clicking **Flip** flips the positions of the *main* and
*duplicate* contacts
Check the manual merge UI when choosing information and contact details
to merge across.
- Check that when changing an email 'type' the value on the right
1. Check that when changing an email 'type' the value on the right
changes to display the email address currently associated with that
record
- Check that the merge type (eg: 'add' or 'overwrite') changes when
1. Check that the merge type (eg: 'add' or 'overwrite') changes when
the box is ticked
Merge the records, and check that records merged correctly.
- Check that the duplicate was deleted
- Check that any core information 'ticked' to be migrated was migrated
1. Check that the duplicate was deleted
1. Check that any core information 'ticked' to be migrated was migrated
across
- Check that location fields were 'added' or 'overwritten' as
1. Check that location fields were 'added' or 'overwritten' as
appropriate, into any new 'types' that were specified
- Check that attached information (such as mailings, groups, CMS
1. Check that attached information (such as mailings, groups, CMS
user accounts) were migrated successfully if ticked to migrate
### Batch merging records
From the dedupe listing screen.
- Tick and batch merge a pair of contacts that can be merged
1. Tick and batch merge a pair of contacts that can be merged
without conflict. Check they are merged correctly:
- No duplicate phone numbers or email addresses created (eg: two
home@home.com email address in the home type)
- <span>Tick and batch merge a pair of contacts that would cause a
merge conflict:</span>
- <span>Check that they are not merged, and you are taken to the
'conflicts' screen</span>
- <span>Force merge them, and check that they are merged (no
duplicate phone numbers or email addresses)</span>
- 'Flip' a pair of contacts and then 'batch merge' them. Check that
1. Tick and batch merge a pair of contacts that would cause a
merge conflict:
- Check that they are not merged, and you are taken to the
'conflicts' screen
- Force merge them, and check that they are merged (no
duplicate phone numbers or email addresses)
1. 'Flip' a pair of contacts and then 'batch merge' them. Check that
the new 'duplicate' record is still the duplicate and is deleted
(currently failing
- <https://issues.civicrm.org/jira/browse/CRM-18575>)
### Merge from the contact search 'task' list
......@@ -72,12 +66,12 @@ From the dedupe listing screen.
### Merging by code (API)
@todo
*Not yet documented*
# Smart group testing
## Smart group testing {:#smart-group}
### General use cases
#### General use cases
- Run advanced search by name=Adams. Create a smart group. Check
group membership.
......@@ -86,7 +80,7 @@ From the dedupe listing screen.
- Edit a contact, changing last name to Adams. Check group membership.
Observe new member.
- Edit a contact, changing last name away from Adams. Check
group memberhsip. Observe removed member.
group membership. Observe removed member.
- Add a contact with last name Bachman. Check group membership.
Observe new member.
- Delete a contact with last name Bachman. Check group membership.
......@@ -95,16 +89,14 @@ From the dedupe listing screen.
contact_type=Individual. Check group membership. Observe removed
member (household "Bachman family").
### Confounding Factors
#### Confounding Factors
Smart groups are cached. The caching behavior is influenced by a couple
options:
- **"smartGroupCacheTimeout**": Time-to-live (e.g. "retain the cached
list of members for 5 minutes")
- **"smart_group_cache_refresh_mode**": Refresh-mode\
- "opportunistic": (e.g. "flush stale caches whenever
data changes")
- `smartGroupCacheTimeout`: Time-to-live (e.g. "retain the cached list of members for 5 minutes")
- `smart_group_cache_refresh_mode`: Refresh-mode
- "opportunistic": (e.g. "flush stale caches whenever data changes")
- "deterministic": (e.g. "flush stale caches using a cron job")
You may experience slightly different behaviors depending what was
......@@ -113,7 +105,7 @@ cached before, how you time the steps, and which options are chosen.
Think of it this way; each general use-case includes the step "Check
group membership". As part of that step, you might initially see a stale
list of members. To force it to display an actual list, you might wait 5
minutes (to pass the TTL) **OR** hack *civicrm_group.cache_date* to
minutes (to pass the TTL) **OR** hack `civicrm_group.cache_date` to
set an earlier expiration.
If your main interest is browsing the list of members through the UI,
......@@ -124,66 +116,55 @@ updates the cache (if it's expired).
However, if your main interest is testing the nuances of refresh-modes,
then you should *not* check the list of members through the UI. Instead:
- Repeatedly use SQL to inspect the content of "civicrm_group" and
"civicrm_group_contact_cache"
- For opportunistic mode, trigger a flush by editing some
unrelated contact.
- For deterministic cron mode, trigger a flush by calling
"Job.group_cache_flush" API.
- Repeatedly use SQL to inspect the content of `civicrm_group` and `civicrm_group_contact_cache`
- For opportunistic mode, trigger a flush by editing some unrelated contact.
- For deterministic cron mode, trigger a flush by calling `Job.group_cache_flush` API.
!!! bug "Wishlist"
WISHLIST: For testing/inspection purposes, it would help to update the
list screen ("Contacts in Group" aka "civicrm/group/search"):
For testing/inspection purposes, it would help to update the list screen ("Contacts in Group" aka "civicrm/group/search"):
- Display the timestamp for when the cache was generated
- Provide a button to force the cache to regenerate
- Display the timestamp for when the cache was generated
- Provide a button to force the cache to regenerate
# Tarball installation testing
## Tarball installation testing {:#tarball}
If you are testing a release-candidate or specifically working on the
installation subsystem, then you may need to try some of the manual
testing processes below.
## Picking tarballs
### Picking tarballs
- For official tarballs, browse <http://civicrm.org/download>
- For official tarballs, browse [civicrm.org/download](http://civicrm.org/download)
- For unofficial nightly tarballs, browse
<https://download.civicrm.org/latest>[](http://dist.civicrm.org/by-date/latest/){.external-link}
[download.civicrm.org/latest](https://download.civicrm.org/latest)
- For a pending pull-request, you must build custom tarballs
To make custom tarballs from a pull request, you need to run
*distmaker*. Distmaker requires a special file structure and some config
files, but *civibuild* can automated that. For example:
<div class="code panel" style="border-width: 1px;">
<div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
**Building tarballs for a pull-request**
`distmaker` which requires a special file structure and some config
files, but `civibuild` can automated that. For example:
</div>
1. Checkout the code for the pull request. (In this example, it uses civicrm-core.git#8177.)
<div class="codeContent panelContent">
```bash
$ civibuild create dist --url http://dist.localhost --patch https://github.com/civicrm/civicrm-core/pull/8177
```
1. Run distmaker
## Checkout the code for the pull request. (In this example, it uses civicrm-core.git#8177.)
civibuild create dist --url http://dist.localhost --patch https://github.com/civicrm/civicrm-core/pull/8177
```bash
$ cd $HOME/buildkit/build/dist/src/distmaker
$ ./distmaker.sh all
```
1. Observe the output
## Run distmaker
cd $HOME/buildkit/build/dist/src/distmaker
./distmaker.sh all
```bash
$ ls $HOME/buildkit/build/dist/out/tar
```
## Observe the output
ls $HOME/buildkit/build/dist/out/tar
</div>
</div>
## Option 1. Fully manual installation and upgrade
### Option 1. Fully manual installation and upgrade
You can, of course, follow the normal instructions for [Installation and
Upgrades](/confluence/display/CRMDOC/Installation+and+Upgrades).
......@@ -191,140 +172,120 @@ Upgrades](/confluence/display/CRMDOC/Installation+and+Upgrades).
If you're not big into scripting/CLI, this is the way to go. But it can
be time-consuming.
## Option 2. Upgrade a staging site with "drush cvup"
If you have a Drupal staging site with CiviCRM already installed, you
can use *drush* to load a tarball.
<div class="code panel" style="border-width: 1px;">
### Option 2. Upgrade a staging site with "drush cvup"
<div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
If you have a Drupal staging site with CiviCRM already installed, you can use `drush` to load a tarball.
**Use civibuild with a tarball**
Formula:
</div>
```bash
drush cvup --tarfile=<path to tarfile> --backupdir=<path to backup dir>
```
<div class="codeContent panelContent">
1. Navigate to your site
## Formula: drush cvup --tarfile=<path to tarfile> --backupdir=<path to backup dir>
```bash
$ cd /var/www/drupal
```
1. Clear caches
## Navigate to your site
cd /var/www/drupal
```bash
$ drush cc all
```
## Clear caches
drush cc all
1. Download and extract an official CiviCRM tarball
## Download and extract an official CiviCRM tarball
wget http://download.civicrm.org/civicrm-4.7.7-drupal.tar.gz -O /tmp/civicrm-4.7.7-drupal.tar.gz
drush cvup --tarfile=/tmp/civicrm-4.7.7-drupal.tar.gz --backupdir=/tmp/myupgrade
```bash
$ wget http://download.civicrm.org/civicrm-4.7.7-drupal.tar.gz -O /tmp/civicrm-4.7.7-drupal.tar.gz
$ drush cvup --tarfile=/tmp/civicrm-4.7.7-drupal.tar.gz --backupdir=/tmp/myupgrade
```
## OR... Extract a custom CiviCRM tarball
drush cvup --tarfile=$HOME/buildkit/build/dist/out/tar/civicrm-4.7.7-drupal.tar.gz --backupdir=/tmp/myupgrade
1. OR... Extract a custom CiviCRM tarball
## Clear caches
rm -rf sites/default/files/civicrm/templates_c/
sdrush cc all
```bash
$ drush cvup --tarfile=$HOME/buildkit/build/dist/out/tar/civicrm-4.7.7-drupal.tar.gz --backupdir=/tmp/myupgrade
```
1. Clear caches
</div>
```bash
$ rm -rf sites/default/files/civicrm/templates_c/
$ sdrush cc all
```
</div>
Also see this [StackExchange question](http://civicrm.stackexchange.com/questions/4829/is-it-easy-to-upgrade-civicrm-using-drush).
See also:
<http://civicrm.stackexchange.com/questions/4829/is-it-easy-to-upgrade-civicrm-using-drush>
### Option 3. Create an empty site with "civibuild"
## Option 3. Create an empty site with "civibuild"
If you don't have a staging site, you can
use* *[buildkit](https://github.com/civicrm/civicrm-buildkit/){.external-link}'s
[civibuild](https://github.com/civicrm/civicrm-buildkit/blob/master/doc/civibuild.md){.external-link}
If you don't have a staging site, you can use [civibuild](/tools/civibuild.md)
to create empty sites for Drupal, WordPress, and Backdrop and preload
the tarball. This will cue the system so that it's ready for you to go
the installation screen.
<div class="code panel" style="border-width: 1px;">
<div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
**Use civibuild with a tarball**
</div>
<div class="codeContent panelContent">
## Formula:
## civibuild create <name> --type <cms>-empty --url <site-url> --dl <path>=<tarball>
## Create an empty Drupal test site. Download and extract a CiviCRM tarball. Display login details.
civibuild create dempty --type drupal-empty --url http://dempty.localhost --dl sites/all/modules=http://download.civicrm.org/civicrm-4.7.7-drupal.tar.gz
## OR... create an empty Backdrop test site. Extract a custom CiviCRM tarball. Display login details.
civibuild create bempty --type backdrop-empty --url http://bempty.localhost --dl modules=$HOME/buildkit/build/dist/out/tar/civicrm-4.7.7-backdrop-unstable.tar.gz
1. Create an empty Drupal test site. Download and extract a CiviCRM tarball. Display login details.
## Cleanup a test site
civibuild destroy dempty
```bash
$ civibuild create dempty --type drupal-empty --url http://dempty.localhost --dl sites/all/modules=http://download.civicrm.org/civicrm-4.7.7-drupal.tar.gz
```
</div>
1. Cleanup a test site
</div>
```bash
$ civibuild destroy dempty
```
See [civibuild](/tools/civibuild.md) for more options.
!!! note
At time of writing, this supports Drupal 7, WordPress, and Backdrop.
(Note: At time of writing, this supports Drupal 7, WordPress, and
Backdrop.)
### Option 4. Create a batch of sites with "civihydra" (experimental)
## Option 4. Create a batch of sites with "civihydra" (experimental)
This is a lot like Option 3, but it loops through all the tarballs and runs `civibuild` for each of them.
This is a lot like Option 3, but it loops through all the tarballs and
runs *civibuild* for each of them.
Formula:
<div class="code panel" style="border-width: 1px;">
```bash
civihydra create <civicrm-tar-files>
```
<div class="codeHeader panelHeader" style="border-bottom-width: 1px;">
1. Create D7, WordPress, and Backdrop sites using official tarballs. Display login details.
**Use civibuild with a tarball**
</div>
<div class="codeContent panelContent">
## Formula: civihydra create <civicrm-tar-files>
## Create D7, WordPress, and Backdrop sites using official tarballs. Display login details.
```bash
civihydra create http://download.civicrm.org/civicrm-4.7.7-{drupal.tar.gz,wordpress.zip,backdrop-unstable.tar.gz}
```
1. OR... create D7, WordPress, and Backdrop sites using your own custom tarballs. Display login details.
## OR... create D7, WordPress, and Backdrop sites using your own custom tarballs. Display login details.
```bash
civihydra create $HOME/buildkit/build/dist/out/tar/*
```
1. Cleanup all the test sites
## Cleanup all the test sites
```bash
civihydra destroy
```
</div>
</div>
(Note: At time of writing, this supports Drupal 7, WordPress, and
Backdrop.)
!!! note
At time of writing, this supports Drupal 7, WordPress, and Backdrop.
## See also: Headless installation testing for civibuild and git
### See also: Headless installation testing for civibuild and git
If you use
[buildkit](https://github.com/civicrm/civicrm-buildkit/){.external-link}'s
[civibuild](https://github.com/civicrm/civicrm-buildkit/blob/master/doc/civibuild.md){.external-link},
then you most likely setup the local source tree using a conventional
configuration like *drupal-demo* or *wp-demo*. This downloads the
pristine code from git and performs an automated installation and
enables a convenient development loop:
If you use [civibuild](/tools/civibuild.md), then you most likely setup the local source tree using a conventional
configuration like `drupal-demo` or `wp-demo`. This downloads the
pristine code from git and performs an automated installation and enables a convenient development loop:
- Write a patch
- Run `"civibuild reinstall <name>`".
- Check the outcome
- (Repeat as necessary)
- Commit and open a pull request
1. Write a patch
1. Run `civibuild reinstall <name>`.
1. Check the outcome
1. (Repeat as necessary)
1. Commit and open a pull request
(Note: In addition to re-running the installation, you can also test the
DB upgrades by running "`civibuild upgrade-test <name>`". For more
information about the available commands, see
[civibuild.doc](https://github.com/civicrm/civicrm-buildkit/blob/master/doc/civibuild.md){.external-link}
and
[daily-coding.doc](https://github.com/civicrm/civicrm-buildkit/blob/master/doc/daily-coding.md#upgrade-tests){.external-link}.)
!!! note
In addition to re-running the installation, you can also test the DB upgrades by running "`civibuild upgrade-test <name>`". For more information about the available commands, see [civibuild](/tools/civibuild.md).
This is convenient for most development but has a downside: Most admins
use the web-based graphical installer included with the tarballs (with a
......
......@@ -169,6 +169,6 @@ Database+layer standards/database
Using+Custom+Data+with+the+API api/custom-data
CiviReport+Reference reference/civireport
Manual+testing testing/manual
Dedupe+and+merge+testing testing/manual
Smart+group+testing testing/manual
Tarball+installation+testing testing/manual
Dedupe+and+merge+testing testing/manual/#dedupe
Smart+group+testing testing/manual/#smart-group
Tarball+installation+testing testing/manual/#tarball
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment