1#!/usr/bin/perl -w
2
3# to run:
4# RT_DBA_USER=root RT_DBA_PASSWORD= prove -lv -I/opt/rt3/lib t/rt-auto-open-conflict.t
5use strict;
6
7use Prophet::Test;
8
9BEGIN {
10    unless (eval 'use RT::Test tests => "no_declare"; 1') {
11        diag $@ if $ENV{'TEST_VERBOSE'};
12        plan skip_all => 'requires RT 3.8 or newer to run tests.';
13    }
14}
15
16plan tests => 10;
17use App::SD::Test;
18
19no warnings 'once';
20
21RT::Handle->InsertData( $RT::EtcPath . '/initialdata' );
22
23BEGIN {
24    require File::Temp;
25    $ENV{'PROPHET_REPO'} = $ENV{'SD_REPO'} = File::Temp::tempdir( CLEANUP => 1 ) . '/_svb';
26    diag "export SD_REPO=" . $ENV{'PROPHET_REPO'} . "\n";
27}
28
29my $IMAGE_FILE = qw|t/data/bplogo.gif|;
30
31$RT::Test::SKIP_REQUEST_WORK_AROUND = 1;
32
33my ( $url, $m ) = RT::Test->started_ok;
34
35use RT::Client::REST;
36use RT::Client::REST::Ticket;
37my $rt = RT::Client::REST->new( server => $url );
38$rt->login( username => 'root', password => 'password' );
39
40$url =~ s|http://|http://root:password@|;
41my $sd_rt_url = "rt:$url|General|Status!='resolved'";
42
43my $ticket = RT::Client::REST::Ticket->new( rt      => $rt, queue   => 'General', status  => 'new', subject => 'helium',)->store( text => "Ticket Comment" );
44diag("Clone from RT");
45my ( $ret, $out, $err )
46    = run_script( 'sd',
47        [ 'clone', '--from', $sd_rt_url, '--non-interactive' ] );
48ok( $ret, $out );
49diag($err);
50my $helium_id;
51run_output_matches(
52    'sd',
53    [ 'ticket', 'list', '--regex', 'helium' ],
54    [qr/(.*?)(?{ $helium_id = $1 }) helium new/]
55);
56
57diag("Comment on ticket in sd");
58( $ret, $out, $err ) = run_script( 'sd', [ 'ticket', 'comment', $helium_id, '--content', 'helium is a noble gas' ] );
59ok( $ret, $out );
60like( $out, qr/Created comment/ );
61diag($out);
62diag($err);
63{    # resolve a ticket
64
65    diag("Resolve a ticket in SD");
66    ( $ret, $out, $err ) = run_script( 'sd', [ 'ticket', 'resolve', $helium_id ] );
67    ok( $ret, $out );
68    like( $out, qr/Ticket .* updated/ );
69    sleep(1);
70    diag("Push to rt");
71    ( $ret, $out, $err ) = run_script( 'sd', [ 'push', '--to', $sd_rt_url, '--prefer', 'source' ] );
72    ok( $ret, $out );
73    diag($err);
74    sleep(1);
75    ( $ret, $out, $err ) = run_script( 'sd', [ 'pull', '--from', $sd_rt_url, '--prefer', 'source'] );
76    ok( $ret, $out );
77    diag($err);
78    my $fetched_ticket = RT::Client::REST::Ticket->new(
79        rt => $rt,
80        id => $ticket->id
81    )->retrieve;
82
83    warn "Ticket id is ".$ticket->id;
84    is( $fetched_ticket->status, "resolved" );
85}
86