2022-02-04 22:10:33 +01:00
|
|
|
#!/usr/bin/env perl
|
|
|
|
|
|
|
|
use v5.30.0;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use Test::Most tests => 5;
|
|
|
|
use Test::MockModule;
|
|
|
|
use Test::MockObject;
|
|
|
|
|
|
|
|
use Path::Tiny;
|
|
|
|
use JSON;
|
|
|
|
|
|
|
|
BEGIN {
|
|
|
|
unshift @INC, 'lib';
|
2022-02-06 18:07:40 +01:00
|
|
|
use_ok 'DoctorKarma::Config';
|
2022-02-04 22:10:33 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
## GIVEN
|
|
|
|
my $result = 'hola';
|
|
|
|
my $readline_mockmodule = Test::MockModule->new('Term::ReadLine');
|
2022-02-06 18:07:40 +01:00
|
|
|
my $logger_mockmodule = Test::MockModule->new('DoctorKarma::Logger');
|
2022-02-04 22:10:33 +01:00
|
|
|
my $readline_mockobject = Test::MockObject->new;
|
|
|
|
my $new_home = Path::Tiny->tempdir;
|
|
|
|
|
|
|
|
local $ENV{HOME} = qq($new_home);
|
|
|
|
|
|
|
|
$readline_mockmodule->mock(
|
|
|
|
new => sub {
|
|
|
|
return $readline_mockobject;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
$logger_mockmodule->mock( _log => sub { shift; shift; say STDERR shift } );
|
|
|
|
$readline_mockobject->mock(
|
|
|
|
readline => sub {
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
## WHEN
|
|
|
|
lives_ok {
|
2022-02-06 18:07:40 +01:00
|
|
|
my $config = DoctorKarma::Config->new;
|
2022-02-04 22:10:33 +01:00
|
|
|
my $telegram_token = $config->telegram_token;
|
|
|
|
|
|
|
|
## THEN
|
|
|
|
is $telegram_token, $result,
|
|
|
|
'Telegram token is recovered ok when creating the config.';
|
|
|
|
}
|
|
|
|
'The configuration is got without dying';
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
## GIVEN
|
|
|
|
my $result = 'hola';
|
|
|
|
my $readline_mockmodule = Test::MockModule->new('Term::ReadLine');
|
2022-02-06 18:07:40 +01:00
|
|
|
my $logger_mockmodule = Test::MockModule->new('DoctorKarma::Logger');
|
2022-02-04 22:10:33 +01:00
|
|
|
my $readline_mockobject = Test::MockObject->new;
|
|
|
|
my $new_home = Path::Tiny->tempdir;
|
2022-02-06 18:07:40 +01:00
|
|
|
my $config_dir = qq($new_home/.config/doctorkarma);
|
2022-02-04 22:10:33 +01:00
|
|
|
my $config_file = qq($config_dir/config.json);
|
|
|
|
|
|
|
|
local $ENV{HOME} = qq($new_home);
|
|
|
|
|
|
|
|
path($config_dir)->mkpath;
|
|
|
|
path($config_file)->spew( encode_json( { telegram_token => $result } ) );
|
|
|
|
|
|
|
|
$logger_mockmodule->mock( _log => sub { shift; shift; say STDERR shift } );
|
|
|
|
|
|
|
|
lives_ok {
|
|
|
|
## WHEN
|
|
|
|
|
2022-02-06 18:07:40 +01:00
|
|
|
my $config = DoctorKarma::Config->new;
|
2022-02-04 22:10:33 +01:00
|
|
|
my $telegram_token = $config->telegram_token;
|
|
|
|
|
|
|
|
## THEN
|
|
|
|
is $telegram_token, $result,
|
|
|
|
'Telegram token is recovered ok when config exists.';
|
|
|
|
}
|
|
|
|
'The configuration is got without dying';
|
|
|
|
|
|
|
|
}
|