my
$class
= RT::Class->new(RT->SystemUser);
$class
->Load(
'General'
);
my
(
$base
,
$m
) = RT::Extension::BooleanCustomField::Test->started_ok;
ok(
$m
->login,
'Logged in agent'
);
$m
->get_ok(
$m
->rt_base_url .
'Articles/Article/Edit.html?Class='
.
$class
->id,
'Create article form'
);
my
$edit_form
=
$m
->form_name(
'EditArticle'
);
ok(
$edit_form
,
"Create form without CF Boolean"
);
my
@inputs
=
$m
->find_all_inputs(
type
=>
'checkbox'
);
ok(
scalar
(
@inputs
) == 1 &&
$inputs
[0]->name eq
'Enabled'
,
'No checkbox without CF Boolean'
);
my
$cf_boolean
= RT::CustomField->new(RT->SystemUser);
my
(
$cf_id
,
$msg
) =
$cf_boolean
->Create(
Name
=>
'Active'
,
LookupType
=>
'RT::Class-RT::Article'
,
Type
=>
'BooleanSingle'
);
ok(
$cf_id
,
"CF Boolean created"
);
my
$ok
;
(
$ok
,
$msg
) =
$cf_boolean
->AddToObject(
$class
);
ok(
$ok
,
"CF Boolean added to General class"
);
$m
->get_ok(
$m
->rt_base_url .
'Articles/Article/Edit.html?Class='
.
$class
->id,
'Create article form'
);
$edit_form
=
$m
->form_name(
'EditArticle'
);
ok(
$edit_form
,
"Create form with checked CF Boolean"
);
@inputs
=
$m
->find_all_inputs(
type
=>
'checkbox'
);
ok(
scalar
(
@inputs
) == 2 &&
$inputs
[1]->{name} eq
"Object-RT::Article--CustomField-$cf_id-Value"
,
'Checkbox with checked CF Boolean'
);
is(
$inputs
[1]->value,
undef
,
'Checkbox is unchecked with checked CF Boolean'
);
$m
->tick(
"Object-RT::Article--CustomField-$cf_id-Value"
,
'1'
);
is(
$inputs
[1]->value,
'1'
,
'Checkbox is checked with checked CF Boolean'
);
$m
->submit_form(
form_name
=>
"EditArticle"
,
fields
=> {
Name
=>
'test_article'
,
},
);
my
$article_id
=
$m
->form_name(
'EditArticle'
)->value(
'id'
);
$m
->content_contains(
"Article $article_id created"
,
'Article created'
);
$m
->follow_link_ok({
id
=>
'page-display'
},
'Article display link'
);
if
(RT::Handle::cmp_version(
$RT::VERSION
,
'5.0.0'
) < 0) {
$m
->content_like(
qr{<td class="label">Active:</td>\s*<td class="value">\s*&\#10004;\s*</td>}
,
'Checked CF Boolean displayed in HTML'
);
}
else
{
$m
->content_like(
qr{<div class="label col-\d+">\s*<span class="prev-icon-helper">Active:</span><span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="Check/Uncheck"></span>\s*</div>\s*<div class="value col-\d+\s*">\s*<span class="current-value">\s*&\#10004;\s*</span>\s*</div>}
,
'Checked CF Boolean displayed in HTML'
);
}
$m
->follow_link_ok({
id
=>
'page-modify'
},
'Article modify link'
);
$edit_form
=
$m
->form_name(
'EditArticle'
);
@inputs
=
$m
->find_all_inputs(
type
=>
'checkbox'
);
ok(
scalar
@inputs
== 2 &&
$inputs
[1]->{name} eq
"Object-RT::Article-$article_id-CustomField-$cf_id-Value"
,
'Checkbox with unckecked CF Boolean'
);
is(
$inputs
[1]->value,
'1'
,
'Checkbox is checked with unchecked CF Boolean'
);
$m
->tick(
"Object-RT::Article-$article_id-CustomField-$cf_id-Value"
,
'1'
,
undef
);
is(
$inputs
[1]->value,
undef
,
'Checkbox is unchecked with unchecked CF Boolean'
);
$m
->submit_form(
form_name
=>
"EditArticle"
,
);
$m
->content_contains(
"1 is no longer a value for custom field Active"
,
'Article modified with unchecked CF Boolean'
);
$m
->follow_link_ok({
id
=>
'page-display'
},
'Article display link'
);
if
(RT::Handle::cmp_version(
$RT::VERSION
,
'5.0.0'
) < 0) {
$m
->content_like(
qr{<td class="label">Active:</td>\s*<td class="value no-value">\s*\(no value\)\s*</td>}
,
'Unchecked CF Boolean displayed in HTML'
);
}
else
{
$m
->content_like(
qr{<div class="label col-\d+">\s*<span class="prev-icon-helper">Active:</span><span class="far fa-question-circle icon-helper" data-toggle="tooltip" data-placement="top" data-original-title="Check/Uncheck"></span>\s*</div>\s*<div class="value col-\d+\s* no-value">\s*<span class="current-value">\s*\(no value\)\s*</span>\s*</div>}
,
'Unchecked CF Boolean displayed in HTML'
);
}
undef
$m
;