#------------------------------------------------------------
# Copyright (C) 2009 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package Distribution::Test::Command::Staging;
use strict;
use warnings;

use Data::Dumper;

use lib '/app/tools/common/lib';
use Common::RSApp;
use Common::Util;
use Common::Assert;

use lib '/app/tools/rps/lib';

use lib '/app/tools/distribution/lib';

use base 'Distribution::Test::Command';

sub _album_id_config_name { 'test_album_ids' }

sub _init {
    my $self = shift;
    my %args = @_;

    $self->SUPER::_init(@_);

    $self->{_buildConf} = $args{build_conf};

    return $self;
}

sub _process {
    my $self = shift;

    $self->SUPER::_process();

    $self->_runReport() unless ( $self->{_buildConf} );
}

sub _process_service {
    my $self = shift;
    my ( $client_id, $service ) = @_;

    $self->log( " - Processing service " . $service->service_name );

    if ( $self->{_buildConf} ) {
        $self->_build($service);
    } else {
        $self->SUPER::_process_service(@_);
    }
}

sub _build {
    my $self    = shift;
    my $service = shift;

    $self->log("  + Building test configurations");

    if (   $self->_cleanTestdir($service)
        && $self->_buildPackage($service)
        && $self->_createTests($service)
        && $self->_cleanup($service) ) {

        $self->log("Test created successfully!");
    } else {
        $self->log("****** Test creation failed ******");
    }
}

1;
