5 use RT::Test tests => 77;
9 my $link = RT::Link->new($RT::SystemUser);
13 isa_ok( $link, 'RT::Link');
14 isa_ok( $link, 'RT::Base');
15 isa_ok( $link, 'RT::Record');
16 isa_ok( $link, 'DBIx::SearchBuilder::Record');
18 my $queue = RT::Test->load_or_create_queue(Name => 'General');
19 ok($queue->Id, "loaded the General queue");
21 my $parent = RT::Ticket->new($RT::SystemUser);
22 my ($pid, undef, $msg) = $parent->Create(
26 ok $pid, 'created a ticket #'. $pid or diag "error: $msg";
28 my $child = RT::Ticket->new($RT::SystemUser);
29 my ($cid, undef, $msg) = $child->Create(
33 ok $cid, 'created a ticket #'. $cid or diag "error: $msg";
37 my ($status, $msg) = $parent->AddLink;
38 ok(!$status, "didn't create a link: $msg");
40 ($status, $msg) = $parent->AddLink( Base => $parent->id );
41 ok(!$status, "didn't create a link: $msg");
43 ($status, $msg) = $parent->AddLink( Base => $parent->id, Type => 'HasMember' );
44 ok(!$status, "didn't create a link: $msg");
49 my ($status, $msg) = $parent->AddLink(
50 Type => 'MemberOf', Base => $child->id,
52 ok($status, "created a link: $msg");
54 my $children = $parent->Members;
55 $children->RedoSearch; $children->GotoFirstItem;
56 is $children->Count, 1, 'link is there';
58 my $link = $children->First;
59 ok $link->id, 'correct link';
61 is $link->Type, 'MemberOf', 'type';
62 is $link->LocalTarget, $parent->id, 'local target';
63 is $link->LocalBase, $child->id, 'local base';
64 is $link->Target, 'fsck.com-rt://example.com/ticket/'. $parent->id, 'local target';
65 is $link->Base, 'fsck.com-rt://example.com/ticket/'. $child->id, 'local base';
67 isa_ok $link->TargetObj, 'RT::Ticket';
68 is $link->TargetObj->id, $parent->id, 'correct ticket';
70 isa_ok $link->TargetURI, 'RT::URI';
71 is $link->TargetURI->Scheme, 'fsck.com-rt', 'correct scheme';
72 is $link->TargetURI->URI,
73 'fsck.com-rt://example.com/ticket/'. $parent->id,
76 ok $link->TargetURI->IsLocal, 'local object';
77 is $link->TargetURI->AsHREF,
78 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $parent->id,
82 isa_ok $link->BaseObj, 'RT::Ticket';
83 is $link->BaseObj->id, $child->id, 'correct ticket';
85 isa_ok $link->BaseURI, 'RT::URI';
86 is $link->BaseURI->Scheme, 'fsck.com-rt', 'correct scheme';
87 is $link->BaseURI->URI,
88 'fsck.com-rt://example.com/ticket/'. $child->id,
91 ok $link->BaseURI->IsLocal, 'local object';
92 is $link->BaseURI->AsHREF,
93 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $child->id,
100 my ($status, $msg) = $parent->AddLink(
101 Type => 'MemberOf', Base => $child->URI,
103 ok($status, "created a link: $msg");
105 my $children = $parent->Members;
106 $children->RedoSearch; $children->GotoFirstItem;
107 is $children->Count, 1, 'link is there';
109 my $link = $children->First;
110 ok $link->id, 'correct link';
112 is $link->Type, 'MemberOf', 'type';
113 is $link->LocalTarget, $parent->id, 'local target';
114 is $link->LocalBase, $child->id, 'local base';
115 is $link->Target, 'fsck.com-rt://example.com/ticket/'. $parent->id, 'local target';
116 is $link->Base, 'fsck.com-rt://example.com/ticket/'. $child->id, 'local base';
118 isa_ok $link->TargetObj, 'RT::Ticket';
119 is $link->TargetObj->id, $parent->id, 'correct ticket';
121 isa_ok $link->TargetURI, 'RT::URI';
122 is $link->TargetURI->Scheme, 'fsck.com-rt', 'correct scheme';
123 is $link->TargetURI->URI,
124 'fsck.com-rt://example.com/ticket/'. $parent->id,
127 ok $link->TargetURI->IsLocal, 'local object';
128 is $link->TargetURI->AsHREF,
129 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $parent->id,
133 isa_ok $link->BaseObj, 'RT::Ticket';
134 is $link->BaseObj->id, $child->id, 'correct ticket';
136 isa_ok $link->BaseURI, 'RT::URI';
137 is $link->BaseURI->Scheme, 'fsck.com-rt', 'correct scheme';
138 is $link->BaseURI->URI,
139 'fsck.com-rt://example.com/ticket/'. $child->id,
142 ok $link->BaseURI->IsLocal, 'local object';
143 is $link->BaseURI->AsHREF,
144 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $child->id,
151 my ($status, $msg) = $parent->AddLink(
152 Type => 'MemberOf', Base => 't:'. $child->id,
154 ok($status, "created a link: $msg");
156 my $children = $parent->Members;
157 $children->RedoSearch; $children->GotoFirstItem;
158 is $children->Count, 1, 'link is there';
160 my $link = $children->First;
161 ok $link->id, 'correct link';
163 is $link->Type, 'MemberOf', 'type';
164 is $link->LocalTarget, $parent->id, 'local target';
165 is $link->LocalBase, $child->id, 'local base';
166 is $link->Target, 'fsck.com-rt://example.com/ticket/'. $parent->id, 'local target';
167 is $link->Base, 'fsck.com-rt://example.com/ticket/'. $child->id, 'local base';
169 isa_ok $link->TargetObj, 'RT::Ticket';
170 is $link->TargetObj->id, $parent->id, 'correct ticket';
172 isa_ok $link->TargetURI, 'RT::URI';
173 is $link->TargetURI->Scheme, 'fsck.com-rt', 'correct scheme';
174 is $link->TargetURI->URI,
175 'fsck.com-rt://example.com/ticket/'. $parent->id,
178 ok $link->TargetURI->IsLocal, 'local object';
179 is $link->TargetURI->AsHREF,
180 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $parent->id,
184 isa_ok $link->BaseObj, 'RT::Ticket';
185 is $link->BaseObj->id, $child->id, 'correct ticket';
187 isa_ok $link->BaseURI, 'RT::URI';
188 is $link->BaseURI->Scheme, 'fsck.com-rt', 'correct scheme';
189 is $link->BaseURI->URI,
190 'fsck.com-rt://example.com/ticket/'. $child->id,
193 ok $link->BaseURI->IsLocal, 'local object';
194 is $link->BaseURI->AsHREF,
195 RT::Test::Web->rt_base_url .'Ticket/Display.html?id='. $child->id,
201 my $links = RT::Links->new( $RT::SystemUser );
202 while ( my $link = $links->Next ) {
203 my ($status, $msg) = $link->Delete;
204 $RT::Logger->error("Couldn't delete a link: $msg")