Analizo

 view release on metacpan or  search on metacpan

t/Analizo/Batch/Output/DB.t  view on Meta::CPAN

  my $job = mock(Analizo::Batch::Job::Directories->new($SAMPLE));
  $job->id('foo');
  $job->execute();
  $job->mock(
    'metadata_hashref',
    sub {
      {
        'changed_files' => {
          'mammal.h'  => 'M',
          'dog.cc'    => 'A',
          'dog.h'     => 'A',
          'cat.cc'    => 'A',
          'cat.h'     => 'M',
        },
        'files' => {
          'mammal.h'  => '1111111111111111111111111111111111111111',
          'dog.cc'    => '2222222222222222222222222222222222222222',
          'dog.h'     => '3333333333333333333333333333333333333333',
          'cat.cc'    => '4444444444444444444444444444444444444444',
          'cat.h'     => '5555555555555555555555555555555555555555',
        }
      }
    }
  );
  $job->mock('project_name', sub { 'animals'; });

  $output->push($job);

  select_one_ok($OUTFILE, "SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = '1111111111111111111111111111111111111111' AND modified AND NOT added");
  # 452219454519b29aae2e135c470d97d9e234976b = sha1(22222222222222222222222222222222222222223333333333333333333333333333333333333333)
  select_one_ok($OUTFILE, "SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = '452219454519b29aae2e135c470d97d9e234976b' AND added AND NOT modified");
  # f676c6d81e63377edc2f9ec60b1bc2359b94606f = sha1(44444444444444444444444444444444444444445555555555555555555555555555555555555555)
  select_one_ok($OUTFILE, "SELECT * FROM commits_module_versions WHERE commit_id = 'foo' AND module_version_id = 'f676c6d81e63377edc2f9ec60b1bc2359b94606f' AND modified AND NOT added");
}

sub module_versions_with_the_same_id : Tests {
  my $output = __create($OUTFILE);
  my $job = mock(Analizo::Batch::Job::Directories->new($SAMPLE));
  $job->mock('project_name', sub { 'animals'; });
  $job->id('foo');
  $job->execute();
  $job->mock(
    'metadata_hashref',
    sub {
      {
        'changed_files' => {
          'animal.h'  => 'A',
          'mammal.h'  => 'M',
        },
        'files' => {
          'animal.h'  => '1111111111111111111111111111111111111111',
          'mammal.h'  => '1111111111111111111111111111111111111111',
        }
      }
    }
  );
  $output->push($job);
  select_ok($OUTFILE, "SELECT * FROM module_versions WHERE id = '1111111111111111111111111111111111111111'", 2);
}

sub global_metrics : Tests {
  my $output = __create($OUTFILE);
  my $job = mock(Analizo::Batch::Job::Directories->new($SAMPLE));
  $job->mock('project_name', sub { 'animals'; });
  $job->id('foo');
  $job->execute();
  $output->push($job);
  select_one_ok($OUTFILE, "SELECT * FROM commits where total_abstract_classes > 0");
}

sub files_with_multiple_modules : Tests {
  my $output = __create($OUTFILE);
  my $job = mock(Analizo::Batch::Job::Directories->new('t/samples/file_with_two_modules/cpp'));
  $job->mock('project_name', sub { 'multiple' });
  $job->id("foo");
  $job->execute;
  $job->mock(
    'metadata_hashref',
    sub {
      {
        'changed_files' => {
          'classes.cc'  => 'A',
          'classes.h'   => 'A',
          'main.cc'     => 'A',
        },
        'files' => {
          'classes.cc'  => '1111111111111111111111111111111111111111',
          'classes.h'   => '2222222222222222222222222222222222222222',
          'main.cc'     => '3333333333333333333333333333333333333333',
        }
      }
    }
  );
  $output->push($job);
  select_ok($OUTFILE, 'SELECT * FROM modules', 3);
}

sub numeric_autoincrement_pk : Tests {
  ok(Analizo::Batch::Output::DB::_numeric_autoinc_pk('dbi:SQLite:file.sqlite3') =~ /AUTOINCREMENT/);
  ok(Analizo::Batch::Output::DB::_numeric_autoinc_pk('dbi:Pg:dbname=analizo') =~ /SERIAL/);
}

sub __create {
  my ($file) = @_;
  my $output = Analizo::Batch::Output::DB->new;
  if ($file) {
    $output->file($file);
    $output->initialize();
  }
  return $output;
}

sub setup : Test(setup) {
  system("mkdir", "-p", $TMPDIR);
}

sub teardown : Test(teardown) {
  system("rm", "-rf", $TMPDIR);
}

sub table_created_ok($$) {



( run in 0.539 second using v1.01-cache-2.11-cpan-2c0d6866c4f )