1#!/usr/bin/env perl -w
2use strict;
3
4use Prophet::Test;
5use App::SD::Test;
6
7unless ( $] >= 5.010 ) {
8    plan skip_all => 'You need at least Perl 5.010 to enable redmine support';
9}
10
11require File::Temp;
12$ENV{'PROPHET_REPO'} = $ENV{'SD_REPO'} = File::Temp::tempdir( CLEANUP => 1 ) . '/_svb';
13diag "export SD_REPO=" . $ENV{'PROPHET_REPO'} . "\n";
14
15BEGIN{
16    unless ( eval { require Net::Redmine } ) {
17        plan skip_all => 'You need Net::Redmine installed to run the tests';
18    }
19}
20
21require 't/sd-redmine/net_redmine_test.pl';
22
23my $r = new_redmine();
24
25plan tests => 2;
26
27note "create 5 new tickets in redmine.";
28my @tickets = new_tickets($r, 5);
29
30note "- created tickets: " . join(",", map { $_->id } @tickets);
31
32note "sd clone them, verify their summary text.";
33my $sd_redmine_url = "redmine:" . $r->connection->url;
34my $user = $r->connection->user;
35my $pass = $r->connection->password;
36$sd_redmine_url =~ s|http://|http://${user}:${pass}@|;
37
38diag "sd clone --from ${sd_redmine_url} --non-interactive";
39
40my ( $ret, $out, $err )
41    = run_script( 'sd',
42        [ 'clone', '--from', $sd_redmine_url, '--non-interactive' ] );
43is(count_tickets_in_sd(),5, "the total cloned tickets is 5.");
44
45note "close one of them, push it to server.";
46( $ret, $out, $err ) = run_script( 'sd', [ "ticket", "update", $tickets[0]->id, "--", "status=Closed" ] );
47like( $out, qr/^Ticket(.*)updated/ );
48diag($out);
49diag($err);
50
51( $ret, $out, $err ) = run_script( 'sd', [ 'push', '--to', $sd_redmine_url ] );
52diag($out);
53diag($err);
54
55note "verify the update with Net::Redmine";
56my $ticket = $r->lookup(ticket => { id => $tickets[0]->id });
57
58is($ticket->status, "Closed");
59
60##
61sub count_tickets_in_sd {
62    my $self = shift;
63
64    my ( $ret, $out, $err ) = run_script(
65        'sd' => [ 'ticket', 'list', '--regex', '.' ]
66    );
67    my @lines = split(/\n/,$out);
68    return scalar @lines;
69}
70