1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Added cmd_statuses validation tests

This commit is contained in:
James Booth 2014-01-19 01:25:04 +00:00
parent 2f58b2488f
commit c7325de073
6 changed files with 122 additions and 9 deletions

View File

@ -73,6 +73,7 @@ test_sources = \
tests/test_cmd_account.c \
tests/test_cmd_rooms.c \
tests/test_cmd_sub.c \
tests/test_cmd_statuses.c \
tests/test_history.c \
tests/test_jid.c \
tests/test_parser.c \

View File

@ -755,13 +755,24 @@ static struct cmd_t command_defs[] =
{ "/statuses",
cmd_statuses, parse_args, 1, 1, &cons_statuses_setting,
{ "/statuses on|off", "Set notifications for status messages.",
{ "/statuses on|off",
"----------------",
"Show status updates from contacts, such as online/offline/away etc.",
"When disabled, status updates are not displayed.",
"The default is 'on'.",
cmd_statuses, parse_args, 2, 2, &cons_statuses_setting,
{ "/statuses console|chat|muc setting", "Set preferences for presence change messages.",
{ "/statuses console|chat|muc setting",
"----------------------------------",
"Configure how presence changes are displayed in various windows.",
"Settings for the console:",
"all - Show all presence changes in the console",
"online - Show only when contacts log in/out.",
"none - Don't show any presence changes in the console.",
"Settings for chat windows:",
"all - Show all presence changes in the contact's chat window if one is open.",
"online - Show only when contacts log in/out.",
"none - Don't show any presence changes in the chat windows.",
"Settings for chat room windows:",
"on - Show presence changes in chat rooms.",
"off - Do not show presence changes in chat rooms (user entering/leaving are still displayed).",
"The defaults are:",
"console - all, chat - all, muc - on.",
NULL } } },
{ "/away",

View File

@ -2253,8 +2253,27 @@ cmd_priority(gchar **args, struct cmd_help_t help)
gboolean
cmd_statuses(gchar **args, struct cmd_help_t help)
{
return _cmd_set_boolean_preference(args[0], help,
"Status notifications", PREF_STATUSES);
if (strcmp(args[0], "console") != 0 &&
strcmp(args[0], "chat") != 0 &&
strcmp(args[0], "muc") != 0) {
cons_show("Usage: %s", help.usage);
}
if (strcmp(args[0], "console") == 0 || strcmp(args[0], "chat") == 0) {
if (strcmp(args[1], "all") != 0 &&
strcmp(args[1], "online") != 0 &&
strcmp(args[1], "none") != 0) {
cons_show("Usage: %s", help.usage);
}
}
if (strcmp(args[0], "muc") == 0) {
if (strcmp(args[1], "on") != 0 && strcmp(args[1], "off") != 0) {
cons_show("Usage: %s", help.usage);
}
}
return TRUE;
}
gboolean

72
tests/test_cmd_statuses.c Normal file
View File

@ -0,0 +1,72 @@
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include "ui/ui.h"
#include "ui/mock_ui.h"
#include "command/commands.h"
void cmd_statuses_shows_usage_when_bad_subcmd(void **state)
{
mock_cons_show();
CommandHelp *help = malloc(sizeof(CommandHelp));
help->usage = "some usage";
gchar *args[] = { "badcmd", NULL };
expect_cons_show("Usage: some usage");
gboolean result = cmd_statuses(args, *help);
assert_true(result);
free(help);
}
void cmd_statuses_shows_usage_when_bad_console_setting(void **state)
{
mock_cons_show();
CommandHelp *help = malloc(sizeof(CommandHelp));
help->usage = "some usage";
gchar *args[] = { "console", "badsetting", NULL };
expect_cons_show("Usage: some usage");
gboolean result = cmd_statuses(args, *help);
assert_true(result);
free(help);
}
void cmd_statuses_shows_usage_when_bad_chat_setting(void **state)
{
mock_cons_show();
CommandHelp *help = malloc(sizeof(CommandHelp));
help->usage = "some usage";
gchar *args[] = { "chat", "badsetting", NULL };
expect_cons_show("Usage: some usage");
gboolean result = cmd_statuses(args, *help);
assert_true(result);
free(help);
}
void cmd_statuses_shows_usage_when_bad_muc_setting(void **state)
{
mock_cons_show();
CommandHelp *help = malloc(sizeof(CommandHelp));
help->usage = "some usage";
gchar *args[] = { "muc", "badsetting", NULL };
expect_cons_show("Usage: some usage");
gboolean result = cmd_statuses(args, *help);
assert_true(result);
free(help);
}

View File

@ -0,0 +1,4 @@
void cmd_statuses_shows_usage_when_bad_subcmd(void **state);
void cmd_statuses_shows_usage_when_bad_console_setting(void **state);
void cmd_statuses_shows_usage_when_bad_chat_setting(void **state);
void cmd_statuses_shows_usage_when_bad_muc_setting(void **state);

View File

@ -10,6 +10,7 @@
#include "test_cmd_account.h"
#include "test_cmd_rooms.h"
#include "test_cmd_sub.h"
#include "test_cmd_statuses.h"
#include "test_history.h"
#include "test_jid.h"
#include "test_parser.h"
@ -295,6 +296,11 @@ int main(int argc, char* argv[]) {
unit_test(contact_available_when_highest_priority_online),
unit_test(contact_available_when_highest_priority_chat),
unit_test(cmd_statuses_shows_usage_when_bad_subcmd),
unit_test(cmd_statuses_shows_usage_when_bad_console_setting),
unit_test(cmd_statuses_shows_usage_when_bad_chat_setting),
unit_test(cmd_statuses_shows_usage_when_bad_muc_setting),
};
return run_tests(tests);
}