The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use v5.14;
use strict;
use warnings;
use autodie;
use Test::More 0.92;

use lib 't/lib';
use TestHelper;

my @cases = (
  {
    label => "node",
    type => "node",
    name => 'foo.example.com',
    new => sub { my ($p,$n) = @_; $p->node($n) },
  },
  {
    label => "node in test env",
    type => "node",
    name => 'foo.example.com',
    args => [qw/-E test/],
    new => sub { my ($p,$n) = @_; $p->node($n, {env => 'test'}) },
  },
  {
    label => "role",
    type => "role",
    name => 'web',
    new => sub { my ($p,$n) = @_; $p->role($n) },
  },
  {
    label => "environment",
    type => "environment",
    name => 'test',
    new => sub { my ($p,$n) = @_; $p->environment($n) },
  },
  {
    label => "bag",
    type => "bag",
    name => 'xdg',
    new => sub { my ($p,$n) = @_; $p->bag($n) },
  },
  {
    label => "bag with subdirectory",
    type => "bag",
    name => 'users/xdg',
    new => sub { my ($p,$n) = @_; $p->bag($n) },
  },
);

local $ENV{PERL_MM_USE_DEFAULT} = 1;

for my $c ( @cases ) {
  subtest "$c->{label}: try delete, but don't confirm" => sub {
    my ($wd, $pantry) = _create_pantry();
    my $obj = $c->{new}->($pantry, $c->{name});
    _try_command('create', $c->{type}, $c->{name}, @{$c->{args} || []});
    _try_command('delete', $c->{type}, $c->{name} );
    ok( -e $obj->path, "$c->{type} '$c->{name}' not deleted" );
  };

  subtest "$c->{label}: try delete, with force" => sub {
    my ($wd, $pantry) = _create_pantry();
    my $obj = $c->{new}->($pantry, $c->{name});
    _try_command('create', $c->{type}, $c->{name}, @{$c->{args} || []});
    _try_command('delete', '-f', $c->{type}, $c->{name});
    ok( ! -e $obj->path, "$c->{type} '$c->{name}' delete" );
  };

  subtest "$c->{label}: delete a missing node" => sub {
    my ($wd, $pantry) = _create_pantry();
    my $result = _try_command('delete', $c->{type}, $c->{name}, { exit_code => -1});
    like( $result->error, qr/does not exist/, "error message" );
  };
}



done_testing;
#
# This file is part of Pantry
#
# This software is Copyright (c) 2011 by David Golden.
#
# This is free software, licensed under:
#
#   The Apache License, Version 2.0, January 2004
#