test suite added, partly lifted from DBIx::Class
[dbsrgits/DBIx-Class-Fixtures.git] / lib / DBIx / Class / Fixtures.pm
CommitLineData
e5963c1b 1package DBIx::Class::Fixtures;
2
3use strict;
4use warnings;
5
6use DBIx::Class::Exception;
7use Class::Accessor;
8use Path::Class qw(dir file);
9use FindBin;
10use JSON::Syck qw(LoadFile);
11use Data::Dumper;
12
13use base qw(Class::Accessor);
14
15__PACKAGE__->mk_accessors(qw(config_dir));
16
17=head1 VERSION
18
19Version 1.000
20
21=cut
22
23our $VERSION = '1.000';
24
25=head1 NAME
26
27=head1 SYNOPSIS
28
29 use DBIx::Class::Fixtures;
30
31 ...
32
33 my $fixtures = DBIx::Class::Fixtures->new({ config_dir => '/home/me/app/fixture_configs' });
34
35 $fixtures->dump({
36 config => 'set_config.json',
37 schema => $source_dbic_schema,
38 directory => '/home/me/app/fixtures'
39 });
40
41 $fixtures->populate({
42 directory => '/home/me/app/fixtures',
43 ddl => '/home/me/app/sql/ddl.sql',
44 connection_details => ['dbi:mysql:dbname=app_dev', 'me', 'password']
45 });
46
47=head1 DESCRIPTION
48
49=head1 AUTHOR
50
51=head1 CONTRIBUTORS
52
53=cut
54
55
56sub new {
57 my $class = shift;
58
59 my ($params) = @_;
60 unless (ref $params eq 'HASH') {
61 return DBIx::Class::Exception->throw('first arg to DBIx::Class::Fixtures->new() must be hash ref');
62 }
63
64 unless ($params->{config_dir}) {
65 return DBIx::Class::Exception->throw('config_dir param not specified');
66 }
67
68 my $config_dir = dir($params->{config_dir});
69 unless (-e $params->{config_dir}) {
70 return DBIx::Class::Exception->throw('config_dir directory doesn\'t exist');
71 }
72
73 my $self = {
74 config_dir => $config_dir
75 };
76
77 bless $self, $class;
78
79 return $self;
80}
81
821;