release 0.63
[catagits/Catalyst-Model-DBIC-Schema.git] / t / 10literal_sql_through_accessor.t
CommitLineData
bd99d89c 1use strict;
2use warnings;
3use Test::More;
4use Test::Exception;
5use FindBin;
6use lib "$FindBin::Bin/lib";
7use File::Spec::Functions 'catfile';
8use DBI;
9
10my $test_dir = $FindBin::Bin;
11my $db = catfile($test_dir, 'testdb.db');
12
13my $dbh = DBI->connect("dbi:SQLite:$db", '', '', {
14 RaiseError => 1, PrintError => 0
15});
16
17$dbh->do(<<'EOF');
18create 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)
25EOF
26$dbh->disconnect;
27
28my $model = instance();
29my $rs = $model->resultset('User');
30
31my $row = $rs->create({ first_name => 'Foo', last_name => 'Bar' });
32
33$row->first_name(\['last_name']);
34
35lives_ok {
36 $row->update;
37} 'update survived';
38
39$row->discard_changes;
40
41is $row->first_name, 'Bar',
42 'row updated with literal SQL through accessor';
43
44done_testing;
45
46sub 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
63END {
64 $model->storage->disconnect if $model;
65 unlink $db or die "Could not delete $db: $!";
66}