Release commit for 1.62
[dbsrgits/SQL-Translator.git] / t / sqlite-rename-field.t
CommitLineData
0ce31813 1#!/usr/bin/env perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Exception;
8use DBI;
9use SQL::Translator;
10use SQL::Translator::Parser::SQLite;
11use SQL::Translator::Diff;
12
13eval "use DBD::SQLite";
14plan skip_all => "DBD::SQLite required" if $@;
15
16my ( $dbh , $ddl, $ret );
17
18lives_ok { $dbh = DBI->connect("dbi:SQLite:dbname=:memory:")} "dbi connect";
19
20my $source_ddl = <<DDL;
21CREATE TABLE "Foo" (
22 "foo" INTEGER PRIMARY KEY AUTOINCREMENT,
23 "bar" VARCHAR(10)
24);
25DDL
26
27lives_ok { $ret = $dbh->do($source_ddl) } "create table";
28
29lives_ok { $ret = $dbh->do(q| INSERT INTO Foo (bar) VALUES ('buzz') |) } "insert data";
30
31cmp_ok( $ret, '==', 1, "one row inserted" );
32
33my $target_ddl = <<DDL;
34CREATE TABLE "Foo" (
35 "foo" INTEGER PRIMARY KEY AUTOINCREMENT,
36 "biff" VARCHAR(10)
37);
38DDL
39
40my $source_sqlt = SQL::Translator->new(
41 no_comments => 1,
42 parser => 'SQL::Translator::Parser::SQLite',
43)->translate(\$source_ddl);
44
45my $target_sqlt = SQL::Translator->new(
46 no_comments => 1,
47 parser => 'SQL::Translator::Parser::SQLite',
48)->translate(\$target_ddl);
49
50my $table = $target_sqlt->get_table('Foo');
51my $field = $table->get_field('biff');
52$field->extra( renamed_from => 'bar' );
53
54my @diff = SQL::Translator::Diff->new({
55 output_db => 'SQLite',
56 source_schema => $source_sqlt,
57 target_schema => $target_sqlt,
58})->compute_differences->produce_diff_sql;
59
60foreach my $line (@diff) {
61 $line =~ s/\n//g;
62 lives_ok { $dbh->do($line) || die } "$line";
63}
64
65lives_ok { $ret = $dbh->selectall_arrayref(q(SELECT biff FROM Foo), { Slice => {} }) } "query DB for data";
66
67cmp_ok( scalar(@$ret), '==', 1, "Got 1 row");
68
69cmp_ok( $ret->[0]->{biff}, 'eq', 'buzz', "col biff has value buzz" );
70
71done_testing;