1#!perl
2use warnings;
3use strict;
4use Test::More;
5use Test::Warn;
6use lib qw(t/lib);
7
8eval 'use TestUA';
9plan skip_all => 'LWP::UserAgent 5.819 required' if $@;
10
11my $screen_name = 'net_twitter';
12my $message_id  = 1234;
13my $status      = 'Hello, world!';
14
15my @tests = (
16    [ disable_notifications  => sub { [ $screen_name ] }, { screen_name => $screen_name, device => 'false' }, POST => "/friendships/update.json", __LINE__ ],
17    [ disable_notifications  => sub { [ { screen_name => $screen_name } ] }, { screen_name => $screen_name, device => 'false' }, POST => "/friendships/update.json", __LINE__ ],
18    [ enable_notifications   => sub { [ $screen_name ] }, { screen_name => $screen_name, device => 'true' }, POST => "/friendships/update.json", __LINE__ ],
19    [ enable_notifications   => sub { [ { screen_name => $screen_name } ] }, { screen_name => $screen_name, device => 'true' }, POST => "/friendships/update.json", __LINE__ ],
20    [ friendship_exists      => sub { [ 'a', 'b'              ] }, { source_screen_name => 'a', target_screen_name => 'b' }, GET  => "/friendships/show.json", __LINE__, '{"relationship":{"target":{"followed_by":true}}}' ],
21    [ new_direct_message     => sub { [ $screen_name, { text => $status } ] }, { screen_name => $screen_name, text => $status }, POST => "/direct_messages/new.json", __LINE__ ],
22    [ new_direct_message     => sub { [ $screen_name, $status ] }, { screen_name => $screen_name, text => $status }, POST => "/direct_messages/new.json", __LINE__ ],
23    [ new_direct_message     => sub { [ { user => $screen_name, text => $status } ] }, { screen_name => $screen_name, text => $status }, POST => "/direct_messages/new.json", __LINE__ ],
24    [ new_direct_message     => sub { [ 1234, $status ] }, { user_id => 1234, text => $status }, POST => "/direct_messages/new.json", __LINE__ ],
25);
26
27plan tests => @tests + 1;
28
29use_ok 'Net::Twitter';
30
31my $nt = Net::Twitter->new(
32    ssl      => 0,
33    traits   => [qw/API::RESTv1_1/],
34    username => 'homer',
35    password => 'doh!',
36);
37
38my $t = TestUA->new(1.1, $nt->ua);
39
40for my $test ( @tests ) {
41    my ($api_call, $input_args, $request_args, $method, $path, $line, $json_response) = @$test;
42
43    # Fresh copy of args from a coderef because Net::Twitter is allowed to mutated any args hash
44    # passed in.
45    $input_args = $input_args->();
46
47    if ( $json_response ) {
48        my $res = HTTP::Response->new(200, 'OK');
49        $res->content($json_response);
50        $t->response($res);
51    }
52
53    warning_like { $nt->$api_call(@$input_args) } qr/deprecated/i, "[line $line] $api_call";
54
55    $t->reset_response;
56}
57
58exit 0;
59