1#!/usr/bin/env perl
2use warnings;
3use strict;
4use Prophet::Test;
5use App::SD::Test;
6$ENV{'PROPHET_EMAIL'} = 'onlooker@example.com';
7
8BEGIN {
9    if ( $ENV{'JIFTY_APP_ROOT'} ) {
10        plan tests => 7;
11        require File::Temp;
12        $ENV{'PROPHET_REPO'} = $ENV{'SD_REPO'} = File::Temp::tempdir( CLEANUP => 1 ) . '/_svb';
13        diag $ENV{'PROPHET_REPO'};
14        eval "use Jifty";
15        push @INC, File::Spec->catdir( Jifty::Util->app_root, "lib" );
16    } else {
17        plan skip_all => "You must define a JIFTY_APP_ROOT environment variable which points to your hiveminder source tree";
18    }
19}
20
21eval 'use BTDT::Test; 1;' or die "$@";
22
23my $server = BTDT::Test->make_server;
24my $URL    = $server->started_ok;
25$URL =~ s|http://|http://onlooker\@example.com:something@|;
26my $sd_hm_url = "hm:$URL";
27
28ok( 1, "Loaded the test script" );
29my $root = BTDT::CurrentUser->superuser;
30my $as_root = BTDT::Model::User->new( current_user => $root );
31$as_root->load_by_cols( email => 'onlooker@example.com' );
32my ( $val, $msg ) = $as_root->set_accepted_eula_version( Jifty->config->app('EULAVersion') );
33ok( $val, $msg );
34my $GOODUSER = BTDT::CurrentUser->new( email => 'onlooker@example.com' );
35$GOODUSER->user_object->set_accepted_eula_version( Jifty->config->app('EULAVersion') );
36
37my $task = BTDT::Model::Task->new( current_user => $GOODUSER );
38$task->create(
39    summary     => "YATTA",
40    description => '',
41);
42my $remote_id = $task->id;
43
44my ($yatta_uuid, $yatta_id);
45{
46    my ($ret, $out, $err)
47        = run_script( 'sd',
48            [ 'clone', '--from', $sd_hm_url, '--non-interactive' ] );
49
50    run_output_matches( 'sd', [qw(ticket list --regex .)], [qr/(.*?)(?{ $yatta_uuid = $1 }) YATTA (.*)/] );
51    ( $ret, $out, $err ) = run_script( 'sd', [ qw(ticket show --batch --id), $yatta_uuid ] );
52    diag($out);
53    diag($err);
54    ($yatta_id, $yatta_uuid) = ($1, $2) if $out =~ /^id: (\d+)\s*\((.*)\)/m;
55}
56
57is_script_output( 'sd', [ qw(ticket update --uuid), $yatta_uuid, qw(-- --summary BLABLA) ],
58    [qr/ticket \d+ \(\Q$yatta_uuid\E\) updated./i], # stdout
59    [undef],             # stderr
60    "updated summary"
61);
62{
63    my ( $ret, $out, $err ) = run_script( 'sd', [ 'push','--to', $sd_hm_url ] );
64
65    my $task = BTDT::Model::Task->new( current_user => $GOODUSER );
66    ok( $task->load_by_cols( summary => 'BLABLA' ), "loaded a task" );
67    is( $task->id, $remote_id, "the same task" );
68}
69
70