Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
feeds
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
drupal.org
feeds
Commits
4846c3cd
Commit
4846c3cd
authored
11 years ago
by
Chris Leppanen
Browse files
Options
Downloads
Patches
Plain Diff
Tests for #1019688.
parent
9b828bb6
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
plugins/FeedsPlugin.inc
+1
-1
1 addition, 1 deletion
plugins/FeedsPlugin.inc
tests/feeds_mapper_taxonomy.test
+131
-86
131 additions, 86 deletions
tests/feeds_mapper_taxonomy.test
with
132 additions
and
87 deletions
plugins/FeedsPlugin.inc
+
1
−
1
View file @
4846c3cd
...
...
@@ -98,7 +98,7 @@ abstract class FeedsPlugin extends FeedsConfigurable implements FeedsSourceInter
*
* @todo: Use CTools Plugin API.
*/
p
rotected
static
function
loadMappers
()
{
p
ublic
static
function
loadMappers
()
{
static
$loaded
=
FALSE
;
if
(
!
$loaded
)
{
$path
=
drupal_get_path
(
'module'
,
'feeds'
)
.
'/mappers'
;
...
...
This diff is collapsed.
Click to expand it.
tests/feeds_mapper_taxonomy.test
+
131
−
86
View file @
4846c3cd
...
...
@@ -112,7 +112,7 @@ class FeedsMapperTaxonomyTestCase extends FeedsMapperTestCase {
}
/**
* Test inheriting taxonomy from the feed node.
* Test
s
inheriting taxonomy from the feed node.
*/
function
testInheritTaxonomy
()
{
...
...
@@ -152,120 +152,165 @@ class FeedsMapperTaxonomyTestCase extends FeedsMapperTestCase {
}
/**
* Test
aggregating RSS categories to taxonomy
.
* Test
s searching taxonomy terms by name
.
*/
/*
function testRSSCategoriesToTaxonomy() {
// Add mapping to tags vocabulary.
$this->addMappings('syndication',
array(
array(
'source' => 'tags',
'target' => 'taxonomy:1',
),
)
);
// Aggregate feed node with "Tag" vocabulary.
$nid = $this->createFeedNode();
// Assert 10 items aggregated after creation of the node.
$this->assertText('Created 10 nodes');
// There should be 30 terms and 44 term-node relations.
$this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
$this->assertEqual(44, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
// Take a look at the actual terms on frontpage.
$this->drupalGet('node');
public
function
testSearchByName
()
{
$terms
=
array
(
'authentication',
'custom mapping',
'data visualization',
'Drupal'
,
'Drupal planet',
'faceted search',
'GeoDC',
'graphs',
'interface',
'intranet',
'localization'
,
'localization client'
,
'localization server'
,
'map-basec browser',
'mapbox',
'microfinance',
'MIX Market',
'open atrium'
,
'open data',
'open source',
'Peru',
'salesforce',
'siteminder',
'siteminder module',
'software freedom day',
'translation'
,
'translation server'
,
'usability',
'Washington DC',
'World Bank',
'Drupal planet'
,
);
$this
->
setSettings
(
'syndication'
,
'FeedsNodeProcessor'
,
array
(
'skip_hash_check'
=>
TRUE
,
'update_existing'
=>
2
,
));
$mappings
=
array
(
5
=>
array
(
'source'
=>
'tags'
,
'target'
=>
'field_tags'
,
'term_search'
=>
0
,
),
);
$this
->
addMappings
(
'syndication'
,
$mappings
);
$nid
=
$this
->
createFeedNode
(
'syndication'
,
NULL
,
'Syndication'
);
$this
->
assertText
(
'Created 10 nodes.'
);
// Check that terms we not auto-created.
$this
->
drupalGet
(
'node/2'
);
foreach
(
$terms
as
$term
)
{
$this
->
assertNoTaxonomyTerm
(
$term
);
}
$this
->
drupalGet
(
'node/3'
);
$this
->
assertNoTaxonomyTerm
(
'Washington DC'
);
// Change the mapping configuration.
$this
->
removeMappings
(
'syndication'
,
$mappings
);
// Turn on autocreate.
$mappings
[
5
][
'autocreate'
]
=
TRUE
;
$this
->
addMappings
(
'syndication'
,
$mappings
);
$this
->
drupalPost
(
'node/'
.
$nid
.
'/import'
,
array
(),
t
(
'Import'
));
$this
->
assertText
(
'Updated 10 nodes.'
);
$this
->
drupalGet
(
'node/2'
);
foreach
(
$terms
as
$term
)
{
$this
->
assertTaxonomyTerm
(
$term
);
}
$this
->
drupalGet
(
'node/3'
);
$this
->
assertTaxonomyTerm
(
'Washington DC'
);
// Delete all items, all associations are gone.
$this->drupalPost("node/$nid/delete-items", array(), 'Delete');
$this->assertText('Deleted 10 nodes');
$this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
$this->assertEqual(0, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
$names
=
db_query
(
'SELECT name FROM {taxonomy_term_data}'
)
->
fetchCol
();
$this
->
assertEqual
(
count
(
$names
),
31
,
'Found correct number of terms in the database.'
);
// Remove "Tag" setting, import again.
$edit = array(
'tags' => FALSE,
);
$this->drupalPost('admin/content/taxonomy/edit/vocabulary/1', $edit, 'Save');
$this->drupalPost("node/$nid/import", array(), 'Import');
$this->assertText('Created 10 nodes');
// Run import again. This verifys that the terms we found by name.
$this
->
drupalPost
(
'node/'
.
$nid
.
'/import'
,
array
(),
t
(
'Import'
));
$this
->
assertText
(
'Updated 10 nodes.'
);
$names
=
db_query
(
'SELECT name FROM {taxonomy_term_data}'
)
->
fetchCol
();
$this
->
assertEqual
(
count
(
$names
),
31
,
'Found correct number of terms in the database.'
);
}
// We should only get one term-node association per node.
$this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
$this->assertEqual(10, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
/**
* Tests mapping to taxonomy terms by tid.
*/
public
function
testSearchByID
()
{
// Create 10 terms. The first one was created in setup.
$terms
=
array
(
1
);
foreach
(
range
(
2
,
10
)
as
$i
)
{
$term
=
(
object
)
array
(
'name'
=>
'term'
.
$i
,
'vid'
=>
1
,
);
taxonomy_term_save
(
$term
);
$terms
[]
=
$term
->
tid
;
}
// Delete all items.
$this->drupalPost("node/$nid/delete-items", array(), 'Delete');
FeedsPlugin
::
loadMappers
();
// Set vocabulary to multiple terms, import again.
$edit = array(
'multiple' => TRUE,
$entity
=
new
stdClass
();
$target
=
'field_tags'
;
$mapping
=
array
(
'term_search'
=>
FEEDS_TAXONOMY_SEARCH_TERM_ID
,
);
$this->drupalPost('admin/content/taxonomy/edit/vocabulary/1', $edit, 'Save');
$this->drupalPost("node/$nid/import", array(), 'Import');
$this->assertText('Created 10 nodes');
// We should get all term-node associations again.
$this->assertEqual(30, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
$this->assertEqual(44, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
taxonomy_feeds_set_target
(
NULL
,
$entity
,
$target
,
$terms
,
$mapping
);
$this
->
assertEqual
(
count
(
$entity
->
field_tags
[
LANGUAGE_NONE
]),
10
);
// Delete all items.
$this->drupalPost("node/$nid/delete-items", array(), 'Delete');
// Test a second mapping with a bogus term id.
taxonomy_feeds_set_target
(
NULL
,
$entity
,
$target
,
array
(
1234
),
$mapping
);
$this
->
assertEqual
(
count
(
$entity
->
field_tags
[
LANGUAGE_NONE
]),
10
);
}
// Remove a term, import again.
$this->drupalPost('admin/content/taxonomy/edit/term/1', array(), 'Delete');
$this->drupalPost(NULL, array(), 'Delete');
$this->assertText('Deleted term');
$this->drupalPost("node/$nid/import", array(), 'Import');
$this->assertText('Created 10 nodes');
/**
* Tests mapping to a taxonomy term's guid.
*/
public
function
testSearchByGUID
()
{
// Create 10 terms. The first one was created in setup.
$tids
=
array
(
1
);
foreach
(
range
(
2
,
10
)
as
$i
)
{
$term
=
(
object
)
array
(
'name'
=>
'term'
.
$i
,
'vid'
=>
1
,
);
taxonomy_term_save
(
$term
);
$tids
[]
=
$term
->
tid
;
}
// Create a bunch of bogus imported terms.
$guids
=
array
();
foreach
(
$tids
as
$tid
)
{
$guid
=
100
*
$tid
;
$guids
[]
=
$guid
;
$record
=
array
(
'entity_type'
=>
'taxonomy_term'
,
'entity_id'
=>
$tid
,
'id'
=>
'does_not_exist'
,
'feed_nid'
=>
0
,
'imported'
=>
REQUEST_TIME
,
'url'
=>
''
,
'guid'
=>
$guid
,
);
drupal_write_record
(
'feeds_item'
,
$record
);
}
FeedsPlugin
::
loadMappers
();
$entity
=
new
stdClass
();
$target
=
'field_tags'
;
$mapping
=
array
(
'term_search'
=>
FEEDS_TAXONOMY_SEARCH_TERM_GUID
,
);
taxonomy_feeds_set_target
(
NULL
,
$entity
,
$target
,
$guids
,
$mapping
);
$this
->
assertEqual
(
count
(
$entity
->
field_tags
[
LANGUAGE_NONE
]),
10
);
foreach
(
$entity
->
field_tags
[
LANGUAGE_NONE
]
as
$delta
=>
$values
)
{
$this
->
assertEqual
(
$tids
[
$delta
],
$values
[
'tid'
],
'Correct term id foud.'
);
}
// This term should now be missing from term-node associations.
$this->assertEqual(29, db_query("SELECT count(*) FROM {term_data}")->fetchField(), "Found correct number of terms.");
$this->assertEqual(39, db_query("SELECT count(*) FROM {term_node}")->fetchField(), "Found correct number of term-node relations.");
// Test a second mapping with a bogus term id.
taxonomy_feeds_set_target
(
NULL
,
$entity
,
$target
,
array
(
1234
),
$mapping
);
$this
->
assertEqual
(
count
(
$entity
->
field_tags
[
LANGUAGE_NONE
]),
10
);
foreach
(
$entity
->
field_tags
[
LANGUAGE_NONE
]
as
$delta
=>
$values
)
{
$this
->
assertEqual
(
$tids
[
$delta
],
$values
[
'tid'
],
'Correct term id foud.'
);
}
}
*/
/**
*
Helper, f
inds node style taxonomy term markup in DOM.
*
F
inds node style taxonomy term markup in DOM.
*/
public
function
assertTaxonomyTerm
(
$term
)
{
$term
=
check_plain
(
$term
);
$this
->
assertPattern
(
'/<a href="\/.*taxonomy\/term\/[0-9]+">'
.
$term
.
'<\/a>/'
,
'Found '
.
$term
);
}
/**
* Asserts that the term does not exist on a node page.
*/
public
function
assertNoTaxonomyTerm
(
$term
)
{
$term
=
check_plain
(
$term
);
$this
->
assertNoPattern
(
'/<a href="\/.*taxonomy\/term\/[0-9]+">'
.
$term
.
'<\/a>/'
,
'Did not find '
.
$term
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment