### ----------------------------------------------------
### -- Red
### -- Licenses: Artistic-2.0
### -- Authors: Fernando Correa de Oliveira
### -- File: t/11-types.rakutest
### ----------------------------------------------------
use v6;
use Test;

use Red;

my $*RED-DEBUG          = $_ with %*ENV<RED_DEBUG>;
my $*RED-DEBUG-RESPONSE = $_ with %*ENV<RED_DEBUG_RESPONSE>;
my @conf                = (%*ENV<RED_DATABASE> // "SQLite").split(" ");
my $driver              = @conf.shift;
my $*RED-DB             = database $driver, |%( @conf.map: { do given .split: "=" { .[0] => val .[1] } } );

subtest {
    model TestDuration {
        has Int         $.id is serial;
        has Duration    $.duration is column;
    }

    schema(TestDuration).drop;
    lives-ok { TestDuration.^create-table }, "create table with Duration column";
    my TestDuration $row;
    lives-ok { $row = TestDuration.^create(duration => Duration.new(10)) }, "create row with Duration";
    isa-ok $row.duration, Duration;
}, "test Duration";

subtest {
    model UnknownType {
        has Str $.unknown is id;
    }

    schema(UnknownType).drop;

    UnknownType.^create-table;
    UnknownType.^create: :unknown<bla>;

    class Bla { has $.value; method Str { ~$!value } }

    lives-ok {
        is UnknownType.^load(:unknown(Bla.new: :value<bla>)).unknown, "bla"
    }
}

done-testing;
# vim: ft=perl6




