1use strict;
2use warnings;
3
4use Test::More ;
5use Test::Fatal;
6
7{
8	package BankAccount;
9	use Moose;
10	with 'Mongoose::Document' => { -pk => [qw/ drivers_license /] };
11	has 'name' => is=>'rw', isa=>'Str';
12	has 'drivers_license' => (is=>'rw', isa=>'Int' );
13}
14
15package main;
16use lib 't/lib';
17use MongooseT;
18
19BankAccount->collection->indexes->create_one( [ drivers_license => 1 ], { unique => 1 } );
20
21{
22	my $ba1 = BankAccount->new( name=>'Jordi', drivers_license => 112233 );
23	my $ba2 = BankAccount->new( name=>'Gala',  drivers_license => 556677 );
24	ok( $ba1->save, 'Insert first' );
25	ok( $ba2->save, 'Insert second' );
26	is( BankAccount->find->count, 2, 'inserted ok' );
27}
28{
29	my $ba1 = BankAccount->new( name => 'Donna', drivers_license => 112233 );
30	like(
31	    exception { $ba1->save },
32	    qr/duplicate key/,
33	    "saving a duplicate PK fails"
34	);
35
36	ok( my $doc = BankAccount->find_one({drivers_license => 112233}), 'Retrieve original');
37	is( $doc->name, 'Jordi', 'original record still correct' );
38	is( BankAccount->find->count, 2, 'count ok' );
39}
40
41done_testing;
42
43