release 0.63
[catagits/Catalyst-Model-DBIC-Schema.git] / t / 10literal_sql_through_accessor.t
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 }