File: 10literal_sql_through_accessor.t

package info (click to toggle)
libcatalyst-model-dbic-schema-perl 0.66-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 368 kB
  • sloc: perl: 2,984; makefile: 2
file content (66 lines) | stat: -rw-r--r-- 1,270 bytes parent folder | download | duplicates (4)
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
use strict;
use warnings;
use Test::More;
use Test::Exception;
use FindBin;
use lib "$FindBin::Bin/lib";
use File::Spec::Functions 'catfile';
use DBI;

my $test_dir = $FindBin::Bin;
my $db       = catfile($test_dir, 'testdb.db');

my $dbh = DBI->connect("dbi:SQLite:$db", '', '', {
    RaiseError => 1, PrintError => 0
});

$dbh->do(<<'EOF');
create table users (
    id integer primary key,
    first_name varchar(100),
    middle_name varchar(100),
    last_name varchar(100),
    email_address varchar(100)
)
EOF
$dbh->disconnect;

my $model = instance();
my $rs    = $model->resultset('User');

my $row = $rs->create({ first_name => 'Foo', last_name => 'Bar' });

$row->first_name(\['last_name']);

lives_ok {
    $row->update;
} 'update survived';

$row->discard_changes;

is $row->first_name, 'Bar',
    'row updated with literal SQL through accessor';

done_testing;

sub instance {
    MyApp::Model::DB->COMPONENT('MyApp', {
        schema_class => 'ASchemaClass',
        connect_info => ["dbi:SQLite:$db", '', ''],
        @_,
    })
}

{
    package MyApp;
    use Catalyst;
}
{
    package MyApp::Model::DB;
    use base 'Catalyst::Model::DBIC::Schema';
}

END {
    $model->storage->disconnect if $model;
    unlink $db or die "Could not delete $db: $!";
}