The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;
use Test::More;
use FindBin qw($Bin);
use File::Temp qw/ tempfile tempdir /;

use CPAN::Repository;

BEGIN {

	my $tempdir = tempdir;

	{
		my $repo = CPAN::Repository->new({
			dir => $tempdir,
			url => 'http://cpan.universe.org/',
			written_by => '10-simple.t',
		});

		isa_ok($repo,'CPAN::Repository');

		ok(!$repo->is_initialized,'Checking if repo is not initialized');
		
		$repo->initialize;

		ok($repo->is_initialized,'Checking if repo is now initialized');

		$repo->add_author_distribution('ALMIGHTYGOD',"$Bin/data/My-Sample-Distribution-0.003.tar.gz");
		$repo->add_author_distribution('FAMILYGUY',"$Bin/data/My-Other-Sample-0.001.tar.gz");

		my @lines = $repo->packages->get_file_lines;
		
		is(scalar @lines, 11, 'Checking for correct amount of lines in packages');
	}

	my $repo = CPAN::Repository->new({
		dir => $tempdir,
		url => 'http://cpan.universe.org/',
		written_by => '10-simple.t',
	});

	isa_ok($repo,'CPAN::Repository');

	ok($repo->is_initialized,'Checking if repo is still initialized');

	$repo->add_author_distribution('ALMIGHTYGOD',"$Bin/data/My-Sample-Distribution-0.004.tar.gz");

	is_deeply($repo->packages->modules, {
		'My::Other::Sample' => [ '0.001', 'F/FA/FAMILYGUY/My-Other-Sample-0.001.tar.gz' ],
		'My::Sample::Distribution' => [ '0.004', 'A/AL/ALMIGHTYGOD/My-Sample-Distribution-0.004.tar.gz' ]
	}, 'Checking module state of the packages file');

	is_deeply($repo->modules, {
		'My::Other::Sample' => $tempdir.'/authors/id/F/FA/FAMILYGUY/My-Other-Sample-0.001.tar.gz',
		'My::Sample::Distribution' => $tempdir.'/authors/id/A/AL/ALMIGHTYGOD/My-Sample-Distribution-0.004.tar.gz'
	}, 'Checking module state of the repository');
	
	my @packages_lines = $repo->packages->get_file_lines;

	is(scalar @packages_lines, 11, 'Checking for correct amount of lines in packages');

	my @mailrc_lines = $repo->mailrc->get_file_lines;

	is(scalar @mailrc_lines, 2, 'Checking for correct amount of lines in mailrc');

	isa_ok($repo->timestamp,'DateTime');
	
}

done_testing;