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

use strict;
use warnings;

use Test::More;
use Tapper::CLI::Testrun;
use Tapper::Schema::TestTools;
use Tapper::Model 'model';
use Test::Fixture::DBIC::Schema;

# -----------------------------------------------------------------------------------------------------------------
construct_fixture( schema  => testrundb_schema, fixture => 't/fixtures/testrundb/testruns_with_scheduling.yml' );
# -----------------------------------------------------------------------------------------------------------------

my $retval;
my $host_id = `$^X -Ilib bin/tapper-testrun newhost  --name="host1"`;
chomp $host_id;

my $host_result = model('TestrunDB')->resultset('Host')->find($host_id);
ok($host_result->id, 'inserted host');
ok($host_result->free, 'inserted host - free');
is($host_result->name, 'host1', 'inserted host - name');

# --------------------------------------------------

my $answer;
$answer = `$^X -Ilib bin/tapper-testrun updatehostfeature  --hostname="host1" --entry=mem --value=2048`;

my $feature_result = model('TestrunDB')->resultset('HostFeature')->search({entry => "mem"})->first;
ok($feature_result && $feature_result->id, 'inserted feature');
is($feature_result->host_id, $host_id, 'inserted feature - host_id');
is($feature_result->entry,   'mem',    'inserted feature - name');
is($feature_result->value,   2048,     'inserted feature - value');

# --------------------------------------------------

$answer = `$^X -Ilib bin/tapper-testrun updatehostfeature  --hostname="host1" --entry=mem --value=4096`;

$feature_result = model('TestrunDB')->resultset('HostFeature')->search({host_id => $host_id, entry => "mem"})->first;
ok($feature_result && $feature_result->id, 'updated feature');
is($feature_result->host_id, $host_id, 'updated feature - host_id');
is($feature_result->entry,   'mem',    'updated feature - name');
is($feature_result->value,   4096,     'updated feature - value');

# --------------------------------------------------

$answer = `$^X -Ilib bin/tapper-testrun updatehostfeature  --hostname="host1" --entry=mem`;

like ($answer, qr/--really/, "needs --really to delete");
diag $answer;

$feature_result = model('TestrunDB')->resultset('HostFeature')->search({host_id => $host_id, entry => "mem"})->first;
ok($feature_result && $feature_result->id, 'feature still exists');
is($feature_result->host_id, $host_id, 'feature still exists - host_id');
is($feature_result->entry,   'mem',    'feature still exists - name');
is($feature_result->value,   4096,     'feature still exists - value');

# --------------------------------------------------

$answer = `$^X -Ilib bin/tapper-testrun updatehostfeature  --hostname="host1" --entry=mem --really`;

unlike ($answer, qr/--really/, "No hint to use --really because we do.");
$feature_result = model('TestrunDB')->resultset('HostFeature')->search({host_id => $host_id, entry => "mem"})->first;
is($feature_result, undef, 'feature deleted');

done_testing();