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

use strict;
use warnings;

use Data::Dumper;
use Data::Validate::Type;
use Test::Exception;
use Test::More;
use WebService::DataDog;


eval 'use DataDogConfig';
$@
	? plan( skip_all => 'Local connection information for DataDog required to run tests.' )
	: plan( tests => 12 );

my $config = DataDogConfig->new();

# Create an object to communicate with DataDog
my $datadog = WebService::DataDog->new( %$config );
ok(
	defined( $datadog ),
	'Create a new WebService::DataDog object.',
);


my $dashboard_obj = $datadog->build('Dashboard');
ok(
	defined( $dashboard_obj ),
	'Create a new WebService::DataDog::Dashboard object.',
);

my $response;

throws_ok(
	sub
	{
		$response = $dashboard_obj->delete( id => "abc" );
	},
	qr/id must be a number/,
	'Dies on invalid dash id.',
);

throws_ok(
	sub
	{
		$response = $dashboard_obj->delete( id => "123" );
	},
	qr/Error 404/,
	'Dies on unknown dash id.',
);

ok(
	open( FILE, 'webservice-datadog-dashboard-dashid-deprecated.tmp'),
	'Open temp file to read dashboard id - deprecated'
);

my $dash_id;

ok(
	$dash_id = do { local $/; <FILE> },
	'Read in dashboard id - deprecated'
);

ok(
	close FILE,
	'Close temp file - deprecated version'
);


lives_ok(
	sub
	{
		$dashboard_obj->delete_dashboard( id => $dash_id );
	},
	'Delete specified dashboard - deprecated version'
);

ok(                                                                             
  open( FILE, 'webservice-datadog-dashboard-dashid.tmp'),                       
  'Open temp file to read dashboard id'                                         
);

ok(                                                                             
  $dash_id = do { local $/; <FILE> },                                           
  'Read in dashboard id'                                                        
);                                                                              
                                                                                
ok(                                                                             
  close FILE,                                                                   
  'Close temp file'                                                             
);                                                                              
                                                                                
                                                                                
lives_ok(                                                                       
  sub                                                                           
  {                                                                             
    $dashboard_obj->delete( id => $dash_id );                                   
  },                                                                            
  'Delete specified dashboard'                                                  
);