App-Phoebe

 view release on metacpan or  search on metacpan

t/Ijirait.t  view on Meta::CPAN

# Copyright (C) 2021  Alex Schroeder <alex@gnu.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

use Modern::Perl;
use Test::More;
use List::Util qw(any);
use File::Slurper qw(read_binary);
use Mojo::JSON qw(decode_json);
use utf8; # tests contain UTF-8

our @use = qw(Ijirait);
our $base;
our $port;
our $dir;
require './t/test.pl';

my $page = query_gemini("$base/play/ijirait");
like($page, qr(^20), "Ijirait");
like($page, qr(Ijiraq said “Welcome!”), "Welcome");

$page = query_gemini("$base/play/ijirait/examine?Ijiraq");
like($page, qr(^# Ijiraq)m, "Heading");
like($page, qr(^A shape-shifter with red eyes\.)m, "Description");

like(query_gemini("$base/play/ijirait/type?say Hello"),
     qr(said “Hello”), "Hello");

like(query_gemini("$base/play/ijirait/go?out"),
     qr(^30), "Redirect after a move");

like(query_gemini("$base/play/ijirait/look"),
     qr(^# Outside The Tent)m, "Outside");

like(query_gemini("$base/play/ijirait/go?tent"),
     qr(^30), "Redirect after a move");

like(query_gemini("$base/play/ijirait/look"),
     qr(^# The Tent)m, "Back inside");

like(query_gemini("$base/play/ijirait/name?me%20Alex"),
     qr(^30)m, "Redirect after name");

like(query_gemini("$base/play/ijirait/look"),
     qr(Alex \(you\))m, "Renamed");

# use the type command for a change
like(query_gemini("$base/play/ijirait/type?describe%20me%20I%E2%80%99m%20cool%2E"),
     qr(^30)m, "Redirect after describe");

$page = query_gemini("$base/play/ijirait/examine?Alex");
like($page, qr(^# Alex$)m, "Name");
like($page, qr(^I’m cool\.)m, "Description");

like(query_gemini("$base/play/ijirait/name?room%20Computer"),
     qr(^30)m, "Redirect after name");

like(query_gemini("$base/play/ijirait/look"),
     qr(^# Computer)m, "Renamed");

like(query_gemini("$base/play/ijirait/describe?room%20Rows%20and%20rows%20of%20transistors."),
     qr(^30)m, "Redirect after describe");

like(query_gemini("$base/play/ijirait/look"),
     qr(^Rows and rows of transistors\.)m, "Described");

like(query_gemini("$base/play/ijirait/create?room"),
     qr(^30)m, "Redirect after room creation");

like(query_gemini("$base/play/ijirait/look"),
     qr(A tunnel \(tunnel\))m, "Tunnel");

like(query_gemini("$base/play/ijirait/name?tunnel%20A%20hole%20in%20the%20ground%20%28hole%29"),
     qr(^30)m, "Redirect after name");

like(query_gemini("$base/play/ijirait/look"),
     qr(A hole in the ground \(hole\))m, "Hole");

like(query_gemini("$base/play/ijirait/go?hole"),
     qr(^30), "Redirect after a move");

$page = query_gemini("$base/play/ijirait/look");
like($page, qr(^# Lost in fog)m, "New room name");
like($page, qr(^Dense fog surrounds you\.)m, "New room description");

$page = query_gemini("$base/play/ijirait/rooms");



( run in 2.854 seconds using v1.01-cache-2.11-cpan-54e63673c56 )