aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/model/extra.t
diff options
context:
space:
mode:
Diffstat (limited to 't/app/model/extra.t')
-rw-r--r--t/app/model/extra.t72
1 files changed, 72 insertions, 0 deletions
diff --git a/t/app/model/extra.t b/t/app/model/extra.t
index 55accb086..9adfb8f80 100644
--- a/t/app/model/extra.t
+++ b/t/app/model/extra.t
@@ -79,6 +79,31 @@ subtest 'Default hash layout' => sub {
is_deeply $contact->extra, { _fields => \@fields }, '(sanity check layout)';
};
+ subtest 'updating extra field' => sub {
+ my $contact = get_test_contact();
+ my @fields = ( { code => 'ABC', description => 'ABC', variable => 'false', }, { code => 'DEF', description => 'DEF', variable => 'true' } );
+ $contact->set_extra_fields(@fields);
+ is_deeply $contact->get_extra_fields, \@fields, 'extra fields set...';
+ my $new_field = { code => 'ABC', description => 'XYZ', variable => 'false' };
+ $contact->update_extra_field($new_field);
+ $fields[0] = $new_field;
+ is_deeply $contact->get_extra_fields, \@fields, 'extra fields changed';
+ $new_field = { code => 'GHI', description => 'GHI', variable => 'false' };
+ $contact->update_extra_field($new_field);
+ push @fields, $new_field;
+ is_deeply $contact->get_extra_fields, \@fields, 'extra fields changed';
+ };
+
+ subtest 'removing extra field' => sub {
+ my $contact = get_test_contact();
+ my @fields = ( { code => 'ABC', description => 'ABC', variable => 'false', }, { code => 'DEF', description => 'DEF', variable => 'true' } );
+ $contact->set_extra_fields(@fields);
+ is_deeply $contact->get_extra_fields, \@fields, 'extra fields set...';
+ $contact->remove_extra_field('DEF');
+ pop @fields;
+ is_deeply $contact->get_extra_fields(), \@fields, 'extra field removed';
+ };
+
subtest 'metadata' => sub {
my $contact = get_test_contact();
is_deeply $contact->get_extra_metadata, {}, 'No extra metadata';
@@ -139,6 +164,53 @@ subtest 'Get named field values' => sub {
is $report->get_extra_field_value("field1"), "value 1", "field1 has correct value";
is $report->get_extra_field_value("field 2"), "this is a test value", "field 2 has correct value";
+
+$report->delete;
+$user->delete;
+};
+
+subtest 'Get named fields' => sub {
+ my $user = $db->resultset('User')->create({
+ email => 'test-moderation@example.com',
+ email_verified => 1,
+ name => 'Test User'
+ });
+ my $report = $db->resultset('Problem')->create(
+ {
+ postcode => 'BR1 3SB',
+ bodies_str => "",
+ areas => "",
+ category => 'Other',
+ title => 'Good bad good',
+ detail => 'Good bad bad bad good bad',
+ used_map => 't',
+ name => 'Test User 2',
+ anonymous => 'f',
+ state => 'confirmed',
+ lang => 'en-gb',
+ service => '',
+ cobrand => 'default',
+ latitude => '51.4129',
+ longitude => '0.007831',
+ user_id => $user->id,
+ });
+
+ my @fields = ({
+ name => "field1",
+ description => "This is a test field",
+ value => "value 1",
+ },
+ {
+ code => "field 2",
+ description => "Another test",
+ value => "this is a test value",
+ });
+
+ $report->push_extra_fields(@fields);
+
+ is_deeply $report->get_extra_field(name => "field1"), $fields[0], "field1 has correct value";
+ is_deeply $report->get_extra_field(code => "field 2"), $fields[1], "field 2 has correct value";
+ is $report->get_extra_field(name => "field 2"), undef, "returns undef if no match";
};
done_testing();