use_ok(
'YAWF::Object::MongoDB'
);
use_ok(
't::lib::Car'
);
my
$first
= t::lib::Car->new;
is(
ref
(
$first
),
't::lib::Car'
,
'Check first object type'
);
is(
$first
->color(
'red'
),
'red'
,
'Set first color'
);
is(
$first
->brand(
'Ferrari'
),
'Ferrari'
,
'Set first brand'
);
is(
$first
->model(
'Enzo'
),
'Enzo'
,
'Set first model'
);
ok(
$first
->flush,
'Flush first object to database'
);
my
$second
= t::lib::Car->new;
is(
ref
(
$second
),
't::lib::Car'
,
'Check second object type'
);
is(
$second
->color(
'blue'
),
'blue'
,
'Set second color'
);
is(
$second
->brand(
'Jaguar'
),
'Jaguar'
,
'Set second brand'
);
is(
$second
->model(
'XF'
),
'XF'
,
'Set second model'
);
ok(
$second
->flush,
'Flush second object to database'
);
is( t::lib::Car->new(
$first
->id )->id,
$first
->id,
'Get first document by id'
);
for
(
'color'
,
'brand'
,
'model'
) {
is( t::lib::Car->new(
$_
=>
$first
->
$_
)->id,
$first
->id,
'Get first document by '
.
$_
);
}
is( t::lib::Car->new(
$second
->id )->id,
$second
->id,
'Get second document by id'
);
for
(
'color'
,
'brand'
,
'model'
) {
is( t::lib::Car->new(
$_
=>
$second
->
$_
)->id,
$second
->id,
'Get second document by '
.
$_
);
}
my
$third
= t::lib::Car->new;
is(
$third
->color(
'red'
),
'red'
,
'Set third color'
);
is(
$third
->set_column(
'engine'
,
'12V'
),
'12V'
,
'Set third custom key'
);
ok(
$third
->flush,
'Flush third object to database'
);
is( t::lib::Car->new(
engine
=>
$third
->get_column(
'engine'
) )->id,
$third
->id,
'Get third document by custom key'
);
my
@list
= t::lib::Car->list;
is(
scalar
(
@list
), 3,
'Check car list'
);
is( t::lib::Car->count, 3,
'Check car count'
);
@list
= t::lib::Car->list( {
color
=>
'red'
} );
is(
scalar
(
@list
), 2,
'Check red car count'
);
for
(
@list
) {
ok(
$_
->
delete
,
'Remove a car'
);
}
@list
= t::lib::Car->list;
is(
scalar
(
@list
), 1,
'Check car list'
);
is( t::lib::Car->count, 1,
'Check car count'
);
for
(
@list
) {
ok(
$_
->
delete
,
'Remove last car'
);
}
@list
= t::lib::Car->list;
is(
scalar
(
@list
), 0,
'Check car list'
);
is( t::lib::Car->count, 0,
'Check car count'
);
END {
t::lib::Car->_collection->drop;
}