Skip to content

Commit

Permalink
Merge pull request #192 from CS2103AUG2016-F11-C1/tag-untag-tests
Browse files Browse the repository at this point in the history
Tag/untag tests
  • Loading branch information
irvinlim committed Nov 6, 2016
2 parents 1b003a1 + 14df63b commit 0f4bbf2
Show file tree
Hide file tree
Showing 5 changed files with 210 additions and 15 deletions.
14 changes: 7 additions & 7 deletions src/main/java/seedu/todo/controllers/TagController.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public class TagController extends Controller {
private static final String COMMAND_SYNTAX = "tag <index> <tag name>";
private static final String COMMAND_KEYWORD = "tag";

private static final String MESSAGE_TAG_SUCCESS = "Item has been tagged successfully.";
private static final String MESSAGE_INDEX_OUT_OF_RANGE = "Could not tag task/event: Invalid index provided!";
private static final String MESSAGE_MISSING_INDEX_AND_TAG_NAME = "Please specify the index of the item and the tag name to tag.";
private static final String MESSAGE_INDEX_NOT_NUMBER = "Index has to be a number!";
private static final String MESSAGE_TAG_NAME_NOT_FOUND = "Could not tag task/event: Tag name not provided!";
private static final String MESSAGE_EXCEED_TAG_SIZE = "Could not tag task/event : Tag size exceed";
private static final String MESSAGE_TAG_NAME_EXIST = "Could not tag task/event: Tag name already exist!";
public static final String MESSAGE_TAG_SUCCESS = "Item has been tagged successfully.";
public static final String MESSAGE_INDEX_OUT_OF_RANGE = "Could not tag task/event: Invalid index provided!";
public static final String MESSAGE_MISSING_INDEX_AND_TAG_NAME = "Please specify the index of the item and the tag name to tag.";
public static final String MESSAGE_INDEX_NOT_NUMBER = "Index has to be a number!";
public static final String MESSAGE_TAG_NAME_NOT_FOUND = "Could not tag task/event: Tag name not provided!";
public static final String MESSAGE_EXCEED_TAG_SIZE = "Could not tag task/event : Tag size exceed";
public static final String MESSAGE_TAG_NAME_EXIST = "Could not tag task/event: Tag name already exist!";

private static final int ITEM_INDEX = 0;

Expand Down
12 changes: 6 additions & 6 deletions src/main/java/seedu/todo/controllers/UntagController.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ public class UntagController extends Controller {
private static final String COMMAND_SYNTAX = "untag <index> <tag name>";
private static final String COMMAND_KEYWORD = "untag";

private static final String MESSAGE_UNTAG_SUCCESS = "Item has been untagged successfully.";
private static final String MESSAGE_INDEX_OUT_OF_RANGE = "Could not untag task/event: Invalid index provided!";
private static final String MESSAGE_MISSING_INDEX_AND_TAG_NAME = "Please specify the index of the item and the tag name to untag.";
private static final String MESSAGE_INDEX_NOT_NUMBER = "Index has to be a number!";
private static final String MESSAGE_TAG_NAME_NOT_FOUND = "Could not untag task/event: Tag name not found!";
private static final String MESSAGE_TAG_NAME_DOES_NOT_EXIST = "Could not untag task/event: Tag name does not exist!";
public static final String MESSAGE_UNTAG_SUCCESS = "Item has been untagged successfully.";
public static final String MESSAGE_INDEX_OUT_OF_RANGE = "Could not untag task/event: Invalid index provided!";
public static final String MESSAGE_MISSING_INDEX_AND_TAG_NAME = "Please specify the index of the item and the tag name to untag.";
public static final String MESSAGE_INDEX_NOT_NUMBER = "Index has to be a number!";
public static final String MESSAGE_TAG_NAME_NOT_FOUND = "Could not untag task/event: Tag name not found!";
public static final String MESSAGE_TAG_NAME_DOES_NOT_EXIST = "Could not untag task/event: Tag name does not exist!";

private static final int ITEM_INDEX = 0;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/todo/models/Event.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class Event implements CalendarItem {
private LocalDateTime endDate;
private ArrayList<String> tagList = new ArrayList<String>();

private static final int MAX_TAG_LIST_SIZE = 20;
public static final int MAX_TAG_LIST_SIZE = 20;

/**
* Get the start date of an Event.
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/seedu/todo/models/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class Task implements CalendarItem {
private boolean isCompleted = false;
private ArrayList<String> tagList = new ArrayList<String>();

private static final int MAX_TAG_LIST_SIZE = 20;
public static final int MAX_TAG_LIST_SIZE = 20;

@Override
public String getName() {
Expand Down
195 changes: 195 additions & 0 deletions src/test/java/seedu/todo/guitests/TagUntagCommandTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
package seedu.todo.guitests;

import static org.junit.Assert.assertEquals;

import java.time.LocalDateTime;

import org.junit.Before;
import org.junit.Test;

import seedu.todo.commons.util.DateUtil;
import seedu.todo.controllers.TagController;
import seedu.todo.controllers.UntagController;
import seedu.todo.controllers.concerns.Renderer;
import seedu.todo.models.Event;
import seedu.todo.models.Task;

/**
* @@author A0093907W
*/
public class TagUntagCommandTest extends GuiTest {
private final LocalDateTime oneDayFromNow = LocalDateTime.now().plusDays(1);
private final String oneDayFromNowString = DateUtil.formatDate(oneDayFromNow);
private final String oneDayFromNowIsoString = DateUtil.formatIsoDate(oneDayFromNow);
private final LocalDateTime twoDaysFromNow = LocalDateTime.now().plusDays(2);
private final String twoDaysFromNowString = DateUtil.formatDate(twoDaysFromNow);
private final String twoDaysFromNowIsoString = DateUtil.formatIsoDate(twoDaysFromNow);
private final LocalDateTime oneDayToNow = LocalDateTime.now().minusDays(1);
private final String oneDayToNowString = DateUtil.formatDate(oneDayToNow);
private final String oneDayToNowIsoString = DateUtil.formatIsoDate(oneDayToNow);

private String commandAdd1 = String.format("add task Buy KOI by \"%s 8pm\"", oneDayToNowString);
private Task task1 = new Task();
private String commandAdd2 = String.format("add task Buy Milk by \"%s 9pm\"", oneDayFromNowString);
private Task task2 = new Task();
private String commandAdd3 = String.format("add event Some Event from \"%s 4pm\" to \"%s 5pm\"",
twoDaysFromNowString, twoDaysFromNowString);
private Event event3 = new Event();

@Before
public void initFixtures() {
// Need to re-initialize these on each test because we are modifying
// them on tags.
task1 = new Task();
task2 = new Task();
event3 = new Event();
task1.setName("Buy KOI");
task1.setDueDate(DateUtil.parseDateTime(
String.format("%s 20:00:00", oneDayToNowIsoString)));
task2.setName("Buy Milk");
task2.setDueDate(DateUtil.parseDateTime(
String.format("%s 21:00:00", oneDayFromNowIsoString)));
event3.setName("Some Event");
event3.setStartDate(DateUtil.parseDateTime(
String.format("%s 16:00:00", twoDaysFromNowIsoString)));
event3.setEndDate(DateUtil.parseDateTime(
String.format("%s 17:00:00", twoDaysFromNowIsoString)));
console.runCommand("clear");
console.runCommand(commandAdd1);
console.runCommand(commandAdd2);
console.runCommand(commandAdd3);
}

@Test
public void tag_task_success() {
console.runCommand("tag 1 argh");
task1.addTag("argh");
assertTaskVisible(task1);
}

@Test
public void tag_event_success() {
console.runCommand("tag 3 zzz");
event3.addTag("zzz");
assertEventVisible(event3);
}

@Test
public void untag_task_success() {
console.runCommand("tag 1 bugs");
console.runCommand("untag 1 bugs");
assertTaskVisible(task1);
}

@Test
public void untag_event_success() {
console.runCommand("tag 3 errors");
console.runCommand("untag 3 errors");
assertEventVisible(event3);
}

@Test
public void tag_missingIndex_fail() {
console.runCommand("tag");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_MISSING_INDEX_AND_TAG_NAME;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void tag_missingTag_fail() {
console.runCommand("tag 1");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_TAG_NAME_NOT_FOUND;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void untag_missingIndex_fail() {
console.runCommand("untag");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ UntagController.MESSAGE_MISSING_INDEX_AND_TAG_NAME;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void untag_missingTag_fail() {
console.runCommand("untag 1");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ UntagController.MESSAGE_TAG_NAME_NOT_FOUND;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void untag_tagNotExist_fail() {
console.runCommand("untag 1 sucks");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ UntagController.MESSAGE_TAG_NAME_DOES_NOT_EXIST;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void tag_taskWithinLimit_success() {
for (int i = 0; i < Task.MAX_TAG_LIST_SIZE; i++) {
String tag = String.format("zz%s", i + 1);
console.runCommand(String.format("tag 1 %s", tag));
task1.addTag(tag);
}
assertTaskVisible(task1);
assertEquals(TagController.MESSAGE_TAG_SUCCESS, console.getConsoleTextArea());
}

@Test
public void tag_taskExceedLimit_fail() {
for (int i = 0; i < Task.MAX_TAG_LIST_SIZE + 1; i++) {
String tag = String.format("zz%s", i + 1);
console.runCommand(String.format("tag 1 %s", tag));
task1.addTag(tag);
}
assertTaskVisible(task1);
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_EXCEED_TAG_SIZE;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void tag_invalidIndex_fail() {
console.runCommand("tag tmd");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_INDEX_NOT_NUMBER;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void untag_invalidIndex_fail() {
console.runCommand("untag tmd");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ UntagController.MESSAGE_INDEX_NOT_NUMBER;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void tag_indexOutOfRange_fail() {
console.runCommand("tag 100 incoherent");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_INDEX_OUT_OF_RANGE;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void untag_indexOutOfRange_fail() {
console.runCommand("untag 100 gah");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ UntagController.MESSAGE_INDEX_OUT_OF_RANGE;
assertEquals(consoleMessage, console.getConsoleTextArea());
}

@Test
public void tag_duplicate_fail() {
console.runCommand("tag 1 boogs");
console.runCommand("tag 1 boogs");
String consoleMessage = Renderer.MESSAGE_DISAMBIGUATE + "\n\n"
+ TagController.MESSAGE_TAG_NAME_EXIST;
assertEquals(consoleMessage, console.getConsoleTextArea());
}
}

0 comments on commit 0f4bbf2

Please sign in to comment.