X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F746mssql.t;h=0dbd4792e3afef45bb9cc6ab45b52179990150ab;hb=e06ad5d5eca3cad12045953e06fd6b6c72c1027d;hp=a7edb6f71f583a640ad012518cb959a49e8e773b;hpb=893403c81741764c51e7cfff69a24d427d083c33;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/746mssql.t b/t/746mssql.t index a7edb6f..0dbd479 100644 --- a/t/746mssql.t +++ b/t/746mssql.t @@ -12,7 +12,7 @@ my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSSQL_ODBC_${_}" } qw/DSN USER PA plan skip_all => 'Set $ENV{DBICTEST_MSSQL_ODBC_DSN}, _USER and _PASS to run this test' unless ($dsn && $user); -plan tests => 27; +plan tests => 33; my $schema = DBICTest::Schema->connect($dsn, $user, $pass); @@ -33,7 +33,6 @@ $schema->storage->dbh_do (sub { my ($storage, $dbh) = @_; eval { $dbh->do("DROP TABLE artist") }; $dbh->do(<<'SQL'); - CREATE TABLE artist ( artistid INT IDENTITY NOT NULL, name VARCHAR(100), @@ -41,7 +40,6 @@ CREATE TABLE artist ( charfield CHAR(10) NULL, primary key(artistid) ) - SQL }); @@ -75,13 +73,44 @@ $it->next; is( $it->next->name, "Artist 2", "iterator->next ok" ); is( $it->next, undef, "next past end of resultset ok" ); +# test MONEY type $schema->storage->dbh_do (sub { my ($storage, $dbh) = @_; - eval { $dbh->do("DROP TABLE Owners") }; - eval { $dbh->do("DROP TABLE Books") }; + eval { $dbh->do("DROP TABLE money_test") }; $dbh->do(<<'SQL'); +CREATE TABLE money_test ( + id INT IDENTITY PRIMARY KEY, + amount MONEY NULL +) +SQL +}); + +my $rs = $schema->resultset('Money'); + +my $row; +lives_ok { + $row = $rs->create({ amount => 100 }); +} 'inserted a money value'; + +is $rs->find($row->id)->amount, '100.00', 'money value round-trip'; + +lives_ok { + $row->update({ amount => 200 }); +} 'updated a money value'; +is $rs->find($row->id)->amount, '200.00', 'updated money value round-trip'; +lives_ok { + $row->update({ amount => undef }); +} 'updated a money value to NULL'; + +is $rs->find($row->id)->amount, undef,'updated money value to NULL round-trip'; + +$schema->storage->dbh_do (sub { + my ($storage, $dbh) = @_; + eval { $dbh->do("DROP TABLE Owners") }; + eval { $dbh->do("DROP TABLE Books") }; + $dbh->do(<<'SQL'); CREATE TABLE Books ( id INT IDENTITY (1, 1) NOT NULL, source VARCHAR(100), @@ -94,7 +123,6 @@ CREATE TABLE Owners ( id INT IDENTITY (1, 1) NOT NULL, name VARCHAR(100), ) - SQL }); @@ -190,8 +218,10 @@ $schema->storage->_sql_maker->{name_sep} = '.'; }, { distinct => 1, prefetch => 'owner', - order_by => 'name', rows => 2, # 3 results total + order_by => { -desc => 'owner' }, + # there is no sane way to order by the right side of a grouped prefetch currently :( + #order_by => { -desc => 'owner.name' }, }); @@ -230,7 +260,9 @@ $schema->storage->_sql_maker->{name_sep} = '.'; # clean up our mess END { - my $dbh = eval { $schema->storage->_dbh }; - $dbh->do('DROP TABLE artist') if $dbh; + if (my $dbh = eval { $schema->storage->_dbh }) { + eval { $dbh->do("DROP TABLE $_") } + for qw/artist money_test Books Owners/; + } } # vim:sw=2 sts=2