/
DoctrineRecordLinkAndUnlinkTest.php
122 lines (99 loc) · 3.91 KB
/
DoctrineRecordLinkAndUnlinkTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/*
* This file is part of the sfCacheTaggingPlugin package.
* (c) 2009-2013 Ilya Sabelnikov <fruit.dev@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
include_once realpath(dirname(__FILE__) . '/../../bootstrap/functional.php');
include_once sfConfig::get('sf_symfony_lib_dir') . '/vendor/lime/lime.php';
$t = new lime_test();
$sfContext = sfContext::getInstance();
$cacheManager = $sfContext->getViewCacheManager();
$tagging = $cacheManager->getTaggingCache();
sfConfig::set('app_sfCacheTagging_collection_tag_name_format', null);
sfConfig::set('app_sfCacheTagging_object_tag_name_format', null);
sfConfig::set('app_sfCacheTagging_object_class_tag_name_provider', null);
$con = Doctrine_Manager::getInstance()->getCurrentConnection();
$truncateQuery = array_reduce(
array('rel_category','rel_culture','rel_site','rel_site_culture','rel_site_setting'),
function ($return, $val) { return "{$return} TRUNCATE {$val};"; }, ''
);
$cleanQuery = "SET FOREIGN_KEY_CHECKS = 0;{$truncateQuery}; SET FOREIGN_KEY_CHECKS = 1;";
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$site = RelSiteTable::getInstance()->find(1);
$site->link('Category', array(2));
$site->save();
$t->is($site->getCultures()->count(), 3, 'linking incorrect alias');
$t->is($site->getCategory()->getId(), 2, 'linking still work for other relations');
# update all tags
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$tagging->clean();
$site = RelSiteTable::getInstance()->find(1);
$site->unlink('Cultures', $ids = array(1, 2, 5));
$site->save();
foreach ($ids as $id)
{
$tagName = sprintf('RelSiteCulture:%d:%d', $id, 1);
$t->ok(! $tagging->hasTag($tagName), sprintf("Tag `%s` is removed (Cultures)", $tagName));
}
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$tagging->clean();
$con->beginTransaction();
$site = RelSiteTable::getInstance()->find(1);
$site->link('Cultures', $ids = array(3, 4));
$site->save();
foreach ($ids as $id)
{
$tagName = sprintf('RelSiteCulture:%d:%d', $id, 1);
$t->ok($tagging->hasTag($tagName), sprintf("Tag `%s` is created (Cultures)", $tagName));
}
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$tagging->clean();
$culture = RelCultureTable::getInstance()->find(1);
$culture->unlink('Sites', $ids = array(1, 3));
$culture->save();
foreach ($ids as $id)
{
$tagName = sprintf('RelSiteCulture:%d:%d', 1, $id);
$t->ok(! $tagging->hasTag($tagName), sprintf("Tag `%s` is removed (Sites)", $tagName));
}
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$tagging->clean();
$culture = RelCultureTable::getInstance()->find(1);
$culture->link('Sites', $ids = array(2, 4));
$culture->save();
foreach ($ids as $id)
{
$tagName = sprintf('RelSiteCulture:%d:%d', 1, $id);
$t->ok($tagging->hasTag($tagName), sprintf("Tag `%s` is created (Sites)", $tagName));
}
$con->beginTransaction();
$con->exec($cleanQuery);
Doctrine::loadData(sfConfig::get('sf_data_dir') .'/fixtures/cascade.yml');
$con->commit();
$tagging->clean();
$culture = RelCultureTable::getInstance()->find(1);
$culture->unlink('Sites', $ids = range(1, 5));
$culture->save();
foreach ($ids as $id)
{
$tagName = sprintf('RelSiteCulture:%d:%d', 1, $id);
$t->ok(! $tagging->hasTag($tagName), sprintf("Tag `%s` is created (Sites)", $tagName));
}