1#!/usr/bin/env perl 2use strict; 3use warnings; 4use Test::Most; 5use Test::Deep qw/blessed/; 6use t::Test; 7use DBIx::NoSQLite; 8 9my ( $store, $store_file, $model, $result ); 10$store_file = t::Test->tmp_sqlite; 11#$store_file = t::Test->test_sqlite( remove => 1 ); 12 13$store = DBIx::NoSQLite->connect( $store_file ); 14ok( $store ); 15 16ok( ! $store->exists( 'Artist' => 'Smashing Pumpkins' ) ); 17 18$store->set( 'Artist' => 'Smashing Pumpkins' => { 19 name => 'Smashing Pumpkins', 20 genre => 'rock', 21 website => 'smashingpumpkins.com', 22} ); 23 24ok( $store->exists( 'Artist' => 'Smashing Pumpkins' ) ); 25 26$store->set( 'Artist' => 'Tool' => { 27 name => 'Tool', 28 genre => 'rock', 29} ); 30 31is( $store->search( 'Artist' )->count, 2 ); 32 33my $artist = $store->get( 'Artist' => 'Smashing Pumpkins' ); 34cmp_deeply( $artist, { 35 name => 'Smashing Pumpkins', 36 genre => 'rock', 37 website => 'smashingpumpkins.com', 38} ); 39 40$store->model( 'Artist' )->index( 'name' ); 41$store->model( 'Artist' )->reindex; 42 43cmp_deeply( [ $store->search( 'Artist' )->order_by( 'name DESC' )->all ], [ 44 { 45 name => 'Tool', 46 genre => 'rock', 47 }, 48 { 49 name => 'Smashing Pumpkins', 50 genre => 'rock', 51 website => 'smashingpumpkins.com', 52 }, 53] ); 54 55SKIP: { 56 skip "DateTime required for this test", 1 unless eval { require DateTime }; 57 58 $store->model( 'Album' )->index( 'released' => ( isa => 'DateTime' ) ); 59 60 $store->set( 'Album' => 'Siamese Dream' => { 61 artist => 'Smashing Pumpkins', 62 released => DateTime->new( year => 1993, month => 1, day => 1, hour => 0, minute => 0, second => 0 ), 63 } ); 64 65 my $album = $store->get( 'Album' => 'Siamese Dream' ); 66 my $released = $album->{ released }; 67 68 is ref($released) => 'DateTime'; 69 is( $released->year, 1993 ); 70 is( $released->day, 1 ); 71} 72 73done_testing; 74