Commit | Line | Data |
bd99d89c |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | use Test::Exception; |
5 | use FindBin; |
6 | use lib "$FindBin::Bin/lib"; |
7 | use File::Spec::Functions 'catfile'; |
8 | use DBI; |
9 | |
10 | my $test_dir = $FindBin::Bin; |
11 | my $db = catfile($test_dir, 'testdb.db'); |
12 | |
13 | my $dbh = DBI->connect("dbi:SQLite:$db", '', '', { |
14 | RaiseError => 1, PrintError => 0 |
15 | }); |
16 | |
17 | $dbh->do(<<'EOF'); |
18 | create table users ( |
19 | id integer primary key, |
20 | first_name varchar(100), |
21 | middle_name varchar(100), |
22 | last_name varchar(100), |
23 | email_address varchar(100) |
24 | ) |
25 | EOF |
26 | $dbh->disconnect; |
27 | |
28 | my $model = instance(); |
29 | my $rs = $model->resultset('User'); |
30 | |
31 | my $row = $rs->create({ first_name => 'Foo', last_name => 'Bar' }); |
32 | |
33 | $row->first_name(\['last_name']); |
34 | |
35 | lives_ok { |
36 | $row->update; |
37 | } 'update survived'; |
38 | |
39 | $row->discard_changes; |
40 | |
41 | is $row->first_name, 'Bar', |
42 | 'row updated with literal SQL through accessor'; |
43 | |
44 | done_testing; |
45 | |
46 | sub instance { |
47 | MyApp::Model::DB->COMPONENT('MyApp', { |
48 | schema_class => 'ASchemaClass', |
49 | connect_info => ["dbi:SQLite:$db", '', ''], |
50 | @_, |
51 | }) |
52 | } |
53 | |
54 | { |
55 | package MyApp; |
56 | use Catalyst; |
57 | } |
58 | { |
59 | package MyApp::Model::DB; |
60 | use base 'Catalyst::Model::DBIC::Schema'; |
61 | } |
62 | |
63 | END { |
64 | $model->storage->disconnect if $model; |
65 | unlink $db or die "Could not delete $db: $!"; |
66 | } |