From f3f383db83504fd6e921b7899bbe893575625d45 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sat, 4 Aug 2018 18:52:16 -0300 Subject: Add tests --- t/30-room.t | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 t/30-room.t (limited to 't/30-room.t') diff --git a/t/30-room.t b/t/30-room.t new file mode 100644 index 0000000..e12a17c --- /dev/null +++ b/t/30-room.t @@ -0,0 +1,104 @@ +use lib 'lib'; +use Test; +use Matrix::Client; +plan 10; + +unless %*ENV { + skip-rest 'No test server setted'; + exit; +} + +my $home-server = %*ENV; +my $username = %*ENV; +my $password = %*ENV; +my $device-id = %*ENV; +my $public-room-id = %*ENV // '!cYTYddgfJTLTzdiDBP:localhost'; +my Matrix::Client $client .= new(:$home-server); + +$client.login(:$username, :$password); + +my $room-alias = 'Room' ~ (^10).map({('a'…'z').pick}).join; +my $main-room; + +lives-ok { + $main-room = $client.create-room( + :public, + :preset, + :room_alias_name($room-alias), + :name("The Grand Duke Pub"), + :topic("All about happy hour"), + :creation_content({ + "m.federate" => False + }) + ); +}, 'Can create room'; + +isa-ok $main-room, Matrix::Client::Room; + +my $room-id = $main-room.id; + +lives-ok { + $main-room.leave; +}, 'Can leave room'; + +lives-ok { + $main-room.join; +}, 'Can join a room'; + +lives-ok { + $client.join-room($public-room-id) +}, 'Can join public room'; + +my @rooms = $client.joined-rooms; +my $public-room = @rooms.first(-> $room { $room.id eq $public-room-id }); + +isa-ok $public-room, Matrix::Client::Room; +isa-ok $public-room.send('hi'), Str; + +subtest 'states' => { + plan 2; + isa-ok $main-room.state(), Seq; + my @states = $main-room.state(); + isa-ok @states.first(), Matrix::Response::StateEvent; +}; + +subtest 'creation' => { + plan 3; + my $new-room = Matrix::Client::Room.new( + :id($public-room.id), + :$home-server, + :access-token($client.access-token) + ); + + ok $new-room, 'Can .new a room with the id of the public room'; + isa-ok $new-room, Matrix::Client::Room; + is $new-room.id, $public-room.id, 'The id is the same as the public room'; +}; + +subtest 'name' => { + plan 4; + + my $name = "Name room test"; + my $test-room = $client.create-room: + :creation_content({ + "m.federate" => False + }); + + throws-like { + $test-room.name() + }, X::Matrix::Response, + message => /M_NOT_FOUND/, + '.name without name gives event not found'; + + lives-ok { + $test-room.send-state('m.room.name', :name($name)) + }, 'Can change name to an unnamed room'; + + lives-ok { + $test-room.name() + }, '.name with a name set dont die'; + + is $test-room.name, $name, 'The name is set correctly'; + + $test-room.leave; +}; -- cgit v1.2.3-70-g09d2