Compare commits
No commits in common. "master" and "dsl" have entirely different histories.
@ -9,11 +9,6 @@ This allows you to create post, category, and options configurations to test spe
|
|||||||
|
|
||||||
Clone the repository into your `wp-content/plugins` directory. Activate it like a normal plugin.
|
Clone the repository into your `wp-content/plugins` directory. Activate it like a normal plugin.
|
||||||
|
|
||||||
### From WordPress Plugins
|
|
||||||
|
|
||||||
Download the plugin from the WordPress plugins repository: http://wordpress.org/extend/plugins/post-fixtures/. Activate it like any other plugin.
|
|
||||||
**Post Fixtures** requires PHP 5 or above.
|
|
||||||
|
|
||||||
## Using
|
## Using
|
||||||
|
|
||||||
**Post Fixtures** places a new menu item under *Tools* called *Post Fixtures*.
|
**Post Fixtures** places a new menu item under *Tools* called *Post Fixtures*.
|
||||||
|
139
Readme.txt
139
Readme.txt
@ -1,139 +0,0 @@
|
|||||||
=== Post Fixtures ===
|
|
||||||
Contributors: johncoswell
|
|
||||||
Donate link: http://www.coswellproductions.com/wordpress/wordpress-plugins
|
|
||||||
Tags: admin, developer, database
|
|
||||||
Requires at least: 2.8
|
|
||||||
Tested up to: 2.9.1
|
|
||||||
Stable tag: 0.2.3
|
|
||||||
|
|
||||||
Post Fixtures let you quickly tear down and set up test environments within your development WordPress environment.
|
|
||||||
|
|
||||||
== Description ==
|
|
||||||
|
|
||||||
Post Fixtures let you quickly tear down and set up test environments within your development WordPress environment.
|
|
||||||
This allows you to create post, category, and options configurations to test specific issues and features of your themes and plugins.
|
|
||||||
|
|
||||||
**Post Fixtures** places a new menu item under *Tools* called *Post Fixtures*.
|
|
||||||
When you visit the page, you'll see a large textarea in which to copy and paste your JSON fixture data.
|
|
||||||
Submitting the form with valid JSON data will cause your posts and categories to be deleted & overwritten,
|
|
||||||
and any options provided to be overwritten or deleted.
|
|
||||||
|
|
||||||
As of the current release on GitHub, the following WordPress features are supported:
|
|
||||||
|
|
||||||
* Posts
|
|
||||||
* Most post data found in the `posts` table
|
|
||||||
* Post metadata with serialization
|
|
||||||
* Categories
|
|
||||||
* Tags
|
|
||||||
* Blog options with serialization and deletion
|
|
||||||
|
|
||||||
== Installation ==
|
|
||||||
|
|
||||||
Activate it like any other plugin. **Post Fixtures** requires PHP 5 or above.
|
|
||||||
|
|
||||||
== Frequently Asked Questions ==
|
|
||||||
|
|
||||||
= What are the data formats accepted? =
|
|
||||||
|
|
||||||
**JSON**
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
{
|
|
||||||
"posts": [
|
|
||||||
{
|
|
||||||
"post_date": "2010-01-01 9:00am",
|
|
||||||
"post_title": "This is a sample post",
|
|
||||||
"post_content": "This is the post's content",
|
|
||||||
"categories": [ "Top Level 1/Sub Category 1", "Top Level 2/Sub Category 2" ],
|
|
||||||
"metadata": {
|
|
||||||
"field-1": "value 1",
|
|
||||||
"field-2": {
|
|
||||||
"a_complex": "field",
|
|
||||||
"with": [
|
|
||||||
"lots", "of", "nested", "datatypes"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tags": "tag 1,tag 2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"post_date": "2010-01-01 10:00am",
|
|
||||||
"post_title": "This is the second sample post",
|
|
||||||
"post_content": "This is the second post's content",
|
|
||||||
"categories": [ "Top Level 1/Sub Category 2", "Top Level 2/Sub Category 2" ]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"options": {
|
|
||||||
"an-option-to-set": "simple-string",
|
|
||||||
"an-option-to-serialize": {
|
|
||||||
"this": "is a hash"
|
|
||||||
},
|
|
||||||
"an-option-to-delete": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
**PHP**
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
// build an object immediately, and get the new post's ID
|
|
||||||
$post_id = $builder->post('This is a sample post')
|
|
||||||
->date('2010-01-01 9:00am')
|
|
||||||
->content("This is the post's content")
|
|
||||||
->categories("Top Level 1/Sub Category 1,Top Level 2/Sub Category 2")
|
|
||||||
->metadata('field-1', 'value-1')
|
|
||||||
->metadata('field-2', array(
|
|
||||||
'a_complex' => 'field',
|
|
||||||
'with' => array(
|
|
||||||
'lots', 'of', 'nested', 'datatypes'
|
|
||||||
)
|
|
||||||
))
|
|
||||||
->tags('tag 1,tag 2')->build();
|
|
||||||
|
|
||||||
// build and object at the end, if order doesn't matter
|
|
||||||
$builder->post('This is the second sample post')
|
|
||||||
->date('2010-01-01 10:00am')
|
|
||||||
->content("This is the second post's content")
|
|
||||||
->categories("Top Level 1/Sub Category 2,Top Level 2/Sub Category 2")->defer();
|
|
||||||
|
|
||||||
// convenience wrapper around options setting
|
|
||||||
$builder->option('an-option-to-set', 'simple-string')
|
|
||||||
->option('an-option-to-serialize', array('this' => 'is a hash'))
|
|
||||||
->option('an-option-to-delete', false);
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
== Changelog ==
|
|
||||||
|
|
||||||
= 0.2.3 =
|
|
||||||
|
|
||||||
* Clear cache after running fixtures. Needed for persistent caches.
|
|
||||||
|
|
||||||
= 0.2.2 =
|
|
||||||
|
|
||||||
* Bugfix for immediate build generation and sub-category addition when adding posts.
|
|
||||||
|
|
||||||
= 0.2.1 =
|
|
||||||
|
|
||||||
* Bugfix for multiple generated nested categories.
|
|
||||||
|
|
||||||
= 0.2 =
|
|
||||||
|
|
||||||
* Initial release on WordPress Plugins site.
|
|
||||||
|
|
||||||
== Upgrade Notice ==
|
|
||||||
|
|
||||||
= 0.2.3 =
|
|
||||||
|
|
||||||
* Clear cache after running fixtures. Needed for persistent caches.
|
|
||||||
|
|
||||||
= 0.2.2 =
|
|
||||||
|
|
||||||
* Bugfix for immediate build generation and sub-category addition when adding posts.
|
|
||||||
|
|
||||||
= 0.2.1 =
|
|
||||||
|
|
||||||
* Bugfix for multiple generated nested categories.
|
|
||||||
|
|
||||||
= 0.2 =
|
|
||||||
|
|
||||||
* Initial release.
|
|
@ -84,9 +84,7 @@ class FixtureBuilder {
|
|||||||
function build() {
|
function build() {
|
||||||
if (!empty($this->current_object)) {
|
if (!empty($this->current_object)) {
|
||||||
$this->ensure_type($this->current_object['type']);
|
$this->ensure_type($this->current_object['type']);
|
||||||
$result = $this->{"build_{$this->current_object['type']}"}($this->current_object);
|
return $this->{"build_{$this->current_object['type']}"}($this->current_object);
|
||||||
unset($this->current_object);
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,12 +129,10 @@ class FixtureBuilder {
|
|||||||
$category_ids = array();
|
$category_ids = array();
|
||||||
if (isset($obj['post']['categories'])) {
|
if (isset($obj['post']['categories'])) {
|
||||||
$category_ids_by_slug = array();
|
$category_ids_by_slug = array();
|
||||||
$category_ids = array();
|
|
||||||
foreach ($obj['post']['categories'] as $category) {
|
foreach ($obj['post']['categories'] as $category) {
|
||||||
$created_categories = PostFixtures::create_category($category);
|
$category_ids_by_slug = array_merge($category_ids_by_slug, PostFixtures::create_category($category));
|
||||||
$category_ids[] = array_pop(array_values($created_categories));
|
|
||||||
$category_ids_by_slug = array_merge($category_ids_by_slug, $created_categories);
|
|
||||||
}
|
}
|
||||||
|
$category_ids = array_values($category_ids_by_slug);
|
||||||
PostFixtures::set_post_categories($post_id, $category_ids);
|
PostFixtures::set_post_categories($post_id, $category_ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
class PostFixtures {
|
class PostFixtures {
|
||||||
var $messages;
|
var $messages;
|
||||||
var $created_categories = array();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the plugin.
|
* Initialize the plugin.
|
||||||
@ -55,7 +54,6 @@ class PostFixtures {
|
|||||||
} else {
|
} else {
|
||||||
$this->handle_json($info['data']);
|
$this->handle_json($info['data']);
|
||||||
}
|
}
|
||||||
wp_cache_flush();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,15 +262,7 @@ class PostFixtures {
|
|||||||
$joined_nodes = array();
|
$joined_nodes = array();
|
||||||
foreach ($nodes as $node) {
|
foreach ($nodes as $node) {
|
||||||
$joined_nodes[] = $node;
|
$joined_nodes[] = $node;
|
||||||
$key = implode('/', $joined_nodes);
|
$parent = $category_ids_by_slug[implode('/', $joined_nodes)] = wp_insert_category(array('cat_name' => $node, 'category_nicename' => $node, 'category_parent' => $parent));
|
||||||
|
|
||||||
if (isset($this->created_categories[$key])) {
|
|
||||||
$parent = $this->created_categories[$key];
|
|
||||||
} else {
|
|
||||||
$parent = wp_insert_category(array('cat_name' => $node, 'category_nicename' => $node, 'category_parent' => $parent));
|
|
||||||
$this->created_categories[$key] = $parent;
|
|
||||||
}
|
|
||||||
$category_ids_by_slug[$key] = $parent;
|
|
||||||
}
|
}
|
||||||
return $category_ids_by_slug;
|
return $category_ids_by_slug;
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
Plugin Name: Post Fixtures
|
Plugin Name: Post Fixtures
|
||||||
Plugin URI: http://www.coswellproductions.com/wordpress/wordpress-plugins/
|
Plugin URI: http://www.coswellproductions.com/wordpress/wordpress-plugins/
|
||||||
Description: Tear down and build up well crafted posts, categories, meta data, and other WordPress data in a test environment.
|
Description: Tear down and build up well crafted posts, categories, meta data, and other WordPress data in a test environment.
|
||||||
Version: 0.2.2
|
Version: 0.1
|
||||||
Author: John Bintz
|
Author: John Bintz
|
||||||
Author URI: http://www.coswellproductions.com/wordpress/
|
Author URI: http://www.coswellproductions.com/wordpress/
|
||||||
|
|
||||||
Copyright 2009-2010 John Bintz (email : john@coswellproductions.com)
|
Copyright 2009 John Bintz (email : john@coswellproductions.com)
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -45,7 +45,7 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
array(
|
array(
|
||||||
array('post', array('Post title')),
|
array('post', array('Post title')),
|
||||||
array('date', array('2010-01-01')),
|
array('date', array('2010-01-01')),
|
||||||
array('categories', array('test,test2/test3')),
|
array('categories', array('test,test2')),
|
||||||
array('metadata', array('key', array('metadata' => 'value'))),
|
array('metadata', array('key', array('metadata' => 'value'))),
|
||||||
array('post', array('Post title 2')),
|
array('post', array('Post title 2')),
|
||||||
array('date', array('2010-01-02')),
|
array('date', array('2010-01-02')),
|
||||||
@ -56,7 +56,7 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
'post_title' => 'Post title',
|
'post_title' => 'Post title',
|
||||||
'post_type' => 'post',
|
'post_type' => 'post',
|
||||||
'post_date' => '2010-01-01',
|
'post_date' => '2010-01-01',
|
||||||
'categories' => array('test', 'test2/test3'),
|
'categories' => array('test', 'test2'),
|
||||||
'metadata' => array('key' => array('metadata' => 'value'))
|
'metadata' => array('key' => array('metadata' => 'value'))
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
@ -132,7 +132,7 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'categories',
|
'categories',
|
||||||
array('test/test2')
|
array('test')
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'metadata',
|
'metadata',
|
||||||
@ -163,8 +163,7 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
'categories' => array(
|
'categories' => array(
|
||||||
1 => 'test',
|
1 => 'test'
|
||||||
2 => 'test2'
|
|
||||||
),
|
),
|
||||||
'tags' => array(
|
'tags' => array(
|
||||||
1 => array('tag1', 'tag2')
|
1 => array('tag1', 'tag2')
|
||||||
@ -173,9 +172,6 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
1 => array(
|
1 => array(
|
||||||
'test' => 'test2'
|
'test' => 'test2'
|
||||||
)
|
)
|
||||||
),
|
|
||||||
'post_categories' => array(
|
|
||||||
1 => array(2)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@ -212,15 +208,8 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'post_categories':
|
|
||||||
foreach ($info as $post_id => $expected_categories) {
|
|
||||||
$this->assertEquals($expected_categories, wp_get_post_categories($post_id));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->assertTrue(!isset($builder->current_object));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testBuildEmpty() {
|
function testBuildEmpty() {
|
||||||
@ -246,20 +235,10 @@ class FixtureBuilderTest extends PHPUnit_Framework_TestCase {
|
|||||||
$fb->finalize();
|
$fb->finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
function providerTestOption() {
|
function testOption() {
|
||||||
return array(
|
|
||||||
array('test', 'value', 'value'),
|
|
||||||
array('test2', false, false)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider providerTestOption
|
|
||||||
*/
|
|
||||||
function testOption($key, $value, $expected_value) {
|
|
||||||
$fb = new FixtureBuilder();
|
$fb = new FixtureBuilder();
|
||||||
$fb->option($key, $value);
|
$fb->option('test', 'value');
|
||||||
|
|
||||||
$this->assertEquals($expected_value, get_option($key));
|
$this->assertEquals('value', get_option('test'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ class PostFixturesTest extends PHPUnit_Framework_TestCase {
|
|||||||
array(false, array()),
|
array(false, array()),
|
||||||
array(array(), array()),
|
array(array(), array()),
|
||||||
array(array('test'), array('test' => 1)),
|
array(array('test'), array('test' => 1)),
|
||||||
array(array('test/test2', 'test/test3'), array('test' => 1, 'test/test2' => 2, 'test/test3' => 3)),
|
array(array('test/test2'), array('test' => 1, 'test/test2' => 2)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user