Skip to content

Commit

Permalink
Update test and minor fix (#67)
Browse files Browse the repository at this point in the history
* Update test and minor fix

* Fix
  • Loading branch information
Cary-Xx authored and muhammadaljunied committed Oct 16, 2019
1 parent 013e713 commit b92c5c3
Show file tree
Hide file tree
Showing 12 changed files with 143 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ public EditExpenseDescriptor(EditExpenseDescriptor toCopy) {
* Returns true if at least one field is edited.
*/
public boolean isAnyFieldEdited() {
return CollectionUtil.isAnyNonNull(name, amount, date, tags);
return CollectionUtil.isAnyNonNull(name, amount, currency, date, tags);
}

public void setName(Name name) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class EditCommandParser implements Parser<EditCommand> {
public EditCommand parse(String args) throws ParseException {
requireNonNull(args);
ArgumentMultimap argMultimap =
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_AMOUNT, PREFIX_DATE, PREFIX_TAG);
ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_AMOUNT, PREFIX_CURRENCY, PREFIX_DATE, PREFIX_TAG);

Index index;

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/seedu/address/model/expense/Expense.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,9 @@ public boolean isSameExpense(Expense otherExpense) {

return otherExpense != null
&& otherExpense.getName().equals(getName())
&& (otherExpense.getAmount().equals(getAmount())
|| (otherExpense.getCurrency().equals(getCurrency()) || otherExpense.getDate().equals(getDate())));
&& otherExpense.getAmount().equals(getAmount())
&& otherExpense.getCurrency().equals(getCurrency())
&& otherExpense.getDate().equals(getDate());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public class CommandTestUtil {
public static final String VALID_AMOUNT_VODKA = "$30";
public static final String VALID_AMOUNT_RUM = "$200";
public static final String VALID_CURRENCY_VODKA = "SGD";
public static final String VALID_CURRENCY_RUM = "SGD";
public static final String VALID_CURRENCY_RUM = "USD";
public static final String VALID_DATE_VODKA = "13/10/2019";
public static final String VALID_DATE_RUM = "09/05/2019";
public static final String VALID_TAG_ALCOHOL = "alcohol";
Expand Down
65 changes: 42 additions & 23 deletions src/test/java/seedu/address/logic/parser/AddCommandParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.commands.CommandTestUtil.AMOUNT_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.AMOUNT_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.CURRENCY_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.CURRENCY_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.DATE_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.DATE_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_CURRENCY_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATE_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;
Expand All @@ -29,39 +32,50 @@

import seedu.address.logic.commands.AddCommand;
import seedu.address.model.expense.Amount;
import seedu.address.model.expense.Currency;
import seedu.address.model.expense.Date;
import seedu.address.model.expense.Expense;
import seedu.address.model.expense.Name;
import seedu.address.model.tag.Tag;
import seedu.address.testutil.ExpenseBuilder;

public class AddCommandParserTest {

private AddCommandParser parser = new AddCommandParser();

@Test
public void parse_allFieldsPresent_success() {
Expense expectedExpense = new ExpenseBuilder(RUM).withTags(VALID_TAG_DRINKS).build();

// whitespace only preamble
assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM
assertParseSuccess(parser,
PREAMBLE_WHITESPACE + NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));

// multiple names - last name accepted
assertParseSuccess(parser, NAME_DESC_VODKA + NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));
assertParseSuccess(parser, NAME_DESC_VODKA + NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));

// multiple amounts - last amount accepted
assertParseSuccess(parser, NAME_DESC_RUM + AMOUNT_DESC_VODKA + AMOUNT_DESC_RUM + DATE_DESC_RUM
assertParseSuccess(parser,
NAME_DESC_RUM + AMOUNT_DESC_VODKA + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));

// multiple currencies - last currency accepted
assertParseSuccess(parser,
NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_VODKA + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));

// multiple dates - last date accepted
assertParseSuccess(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_VODKA + DATE_DESC_RUM
assertParseSuccess(parser,
NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_VODKA + DATE_DESC_RUM
+ TAG_DESC_DRINKS, new AddCommand(expectedExpense));

// multiple tags - all accepted
Expense expectedExpenseMultipleTags = new ExpenseBuilder(RUM).withTags(VALID_TAG_DRINKS, VALID_TAG_ALCOHOL)
.build();
assertParseSuccess(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM + TAG_DESC_ALCOHOL
.build();
assertParseSuccess(parser,
NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM + TAG_DESC_ALCOHOL
+ TAG_DESC_DRINKS, new AddCommand(expectedExpenseMultipleTags));
}

Expand All @@ -70,7 +84,7 @@ public void parse_optionalFieldsMissing_success() {
// zero tags
Expense expectedExpense = new ExpenseBuilder(VODKA).withTags().build();
assertParseSuccess(parser, NAME_DESC_VODKA + AMOUNT_DESC_VODKA + DATE_DESC_VODKA,
new AddCommand(expectedExpense));
new AddCommand(expectedExpense));
}

@Test
Expand All @@ -79,42 +93,47 @@ public void parse_compulsoryFieldMissing_failure() {

// missing name prefix
assertParseFailure(parser, VALID_NAME_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM,
expectedMessage);
expectedMessage);

// missing amount prefix
assertParseFailure(parser, NAME_DESC_RUM + VALID_AMOUNT_RUM + DATE_DESC_RUM,
expectedMessage);
expectedMessage);

// all prefixes missing
assertParseFailure(parser, VALID_NAME_RUM + VALID_AMOUNT_RUM + VALID_DATE_RUM,
expectedMessage);
expectedMessage);
}

@Test
public void parse_invalidValue_failure() {
// invalid name
assertParseFailure(parser, INVALID_NAME_DESC + AMOUNT_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Name.MESSAGE_CONSTRAINTS);
assertParseFailure(parser, INVALID_NAME_DESC + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Name.MESSAGE_CONSTRAINTS);

// invalid amount
assertParseFailure(parser, NAME_DESC_RUM + INVALID_AMOUNT_DESC + DATE_DESC_RUM
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Amount.MESSAGE_CONSTRAINTS);
assertParseFailure(parser, NAME_DESC_RUM + INVALID_AMOUNT_DESC + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Amount.MESSAGE_CONSTRAINTS);

// invalid currency
assertParseFailure(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM + INVALID_CURRENCY_DESC
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Currency.MESSAGE_CONSTRAINTS);

// invalid date
assertParseFailure(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + INVALID_DATE_DESC
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Date.MESSAGE_CONSTRAINTS);
assertParseFailure(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + INVALID_DATE_DESC
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS, Date.MESSAGE_CONSTRAINTS);

// invalid tag
assertParseFailure(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM
+ INVALID_TAG_DESC + VALID_TAG_DRINKS, Tag.MESSAGE_CONSTRAINTS);
assertParseFailure(parser, NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ INVALID_TAG_DESC + VALID_TAG_DRINKS, Tag.MESSAGE_CONSTRAINTS);

// two invalid values, only first invalid value reported
assertParseFailure(parser, INVALID_NAME_DESC + AMOUNT_DESC_RUM + INVALID_DATE_DESC,
Name.MESSAGE_CONSTRAINTS);
assertParseFailure(parser, INVALID_NAME_DESC + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + INVALID_DATE_DESC,
Name.MESSAGE_CONSTRAINTS);

// non-empty preamble
assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_RUM + AMOUNT_DESC_RUM + DATE_DESC_RUM
assertParseFailure(parser,
PREAMBLE_NON_EMPTY + NAME_DESC_RUM + AMOUNT_DESC_RUM + CURRENCY_DESC_RUM + DATE_DESC_RUM
+ TAG_DESC_ALCOHOL + TAG_DESC_DRINKS,
String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));
String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));
}
}
113 changes: 62 additions & 51 deletions src/test/java/seedu/address/logic/parser/EditCommandParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@
import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.commands.CommandTestUtil.AMOUNT_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.AMOUNT_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.CURRENCY_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.CURRENCY_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.DATE_DESC_RUM;
import static seedu.address.logic.commands.CommandTestUtil.DATE_DESC_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_AMOUNT_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_CURRENCY_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_DATE_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;
Expand All @@ -13,13 +17,18 @@
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DRINKS;
import static seedu.address.logic.commands.CommandTestUtil.VALID_AMOUNT_RUM;
import static seedu.address.logic.commands.CommandTestUtil.VALID_AMOUNT_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.VALID_CURRENCY_RUM;
import static seedu.address.logic.commands.CommandTestUtil.VALID_CURRENCY_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_RUM;
import static seedu.address.logic.commands.CommandTestUtil.VALID_DATE_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_VODKA;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_ALCOHOL;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DRINKS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;
import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EXPENSE;
import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EXPENSE;
import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_EXPENSE;

import org.junit.jupiter.api.Test;
Expand All @@ -28,6 +37,7 @@
import seedu.address.logic.commands.EditCommand;
import seedu.address.logic.commands.EditCommand.EditExpenseDescriptor;
import seedu.address.model.expense.Amount;
import seedu.address.model.expense.Currency;
import seedu.address.model.expense.Date;
import seedu.address.model.expense.Name;
import seedu.address.model.tag.Tag;
Expand Down Expand Up @@ -73,6 +83,7 @@ public void parse_invalidPreamble_failure() {
public void parse_invalidValue_failure() {
assertParseFailure(parser, "1" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name
assertParseFailure(parser, "1" + INVALID_AMOUNT_DESC, Amount.MESSAGE_CONSTRAINTS); // invalid amount
assertParseFailure(parser, "1" + INVALID_CURRENCY_DESC, Currency.MESSAGE_CONSTRAINTS); // invalid currency
assertParseFailure(parser, "1" + INVALID_DATE_DESC, Date.MESSAGE_CONSTRAINTS); // invalid date
assertParseFailure(parser, "1" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag

Expand All @@ -94,19 +105,19 @@ public void parse_invalidValue_failure() {
Name.MESSAGE_CONSTRAINTS);
}

// @Test
// public void parse_allFieldsSpecified_success() {
// Index targetIndex = INDEX_SECOND_EXPENSE;
// String userInput = targetIndex.getOneBased() + AMOUNT_DESC_RUM + CURRENCY_DESC_VODKA + TAG_DESC_ALCOHOL
// + DATE_DESC_VODKA + NAME_DESC_VODKA + TAG_DESC_DRINKS;
//
// EditExpenseDescriptor descriptor = new EditExpenseDescriptorBuilder().withName(VALID_NAME_VODKA)
// .withCurrency(VALID_CURRENCY_RUM).withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_VODKA)
// .withTags(VALID_TAG_ALCOHOL, VALID_TAG_DRINKS).build();
// EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);
//
// assertParseSuccess(parser, userInput, expectedCommand);
// }
@Test
public void parse_allFieldsSpecified_success() {
Index targetIndex = INDEX_SECOND_EXPENSE;
String userInput = targetIndex.getOneBased() + AMOUNT_DESC_RUM + CURRENCY_DESC_VODKA + TAG_DESC_ALCOHOL
+ DATE_DESC_VODKA + NAME_DESC_VODKA + TAG_DESC_DRINKS;

EditExpenseDescriptor descriptor = new EditExpenseDescriptorBuilder().withName(VALID_NAME_VODKA)
.withCurrency(VALID_CURRENCY_VODKA).withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_VODKA)
.withTags(VALID_TAG_ALCOHOL, VALID_TAG_DRINKS).build();
EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);

assertParseSuccess(parser, userInput, expectedCommand);
}

@Test
public void parse_someFieldsSpecified_success() {
Expand Down Expand Up @@ -135,11 +146,11 @@ public void parse_oneFieldSpecified_success() {
expectedCommand = new EditCommand(targetIndex, descriptor);
assertParseSuccess(parser, userInput, expectedCommand);

// // currency
// userInput = targetIndex.getOneBased() + CURRENCY_DESC_VODKA;
// descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_VODKA).build();
// expectedCommand = new EditCommand(targetIndex, descriptor);
// assertParseSuccess(parser, userInput, expectedCommand);
// currency
userInput = targetIndex.getOneBased() + CURRENCY_DESC_VODKA;
descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_VODKA).build();
expectedCommand = new EditCommand(targetIndex, descriptor);
assertParseSuccess(parser, userInput, expectedCommand);

// date
userInput = targetIndex.getOneBased() + DATE_DESC_VODKA;
Expand All @@ -154,39 +165,39 @@ public void parse_oneFieldSpecified_success() {
assertParseSuccess(parser, userInput, expectedCommand);
}

// @Test
// public void parse_multipleRepeatedFields_acceptsLast() {
// Index targetIndex = INDEX_FIRST_EXPENSE;
// String userInput = targetIndex.getOneBased() + AMOUNT_DESC_VODKA + DATE_DESC_VODKA
// + TAG_DESC_DRINKS + AMOUNT_DESC_VODKA + DATE_DESC_VODKA + TAG_DESC_DRINKS
// + AMOUNT_DESC_RUM + DATE_DESC_RUM + TAG_DESC_ALCOHOL + CURRENCY_DESC_VODKA;
//
// EditExpenseDescriptor descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_RUM)
// .withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_RUM)
// .withTags(VALID_TAG_DRINKS, VALID_TAG_ALCOHOL).build();
// EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);
//
// assertParseSuccess(parser, userInput, expectedCommand);
// }

// @Test
// public void parse_invalidValueFollowedByValidValue_success() {
// // no other valid values specified
// Index targetIndex = INDEX_FIRST_EXPENSE;
// String userInput = targetIndex.getOneBased() + INVALID_AMOUNT_DESC + CURRENCY_DESC_RUM + AMOUNT_DESC_RUM;
// EditExpenseDescriptor descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_RUM)
// .withAmount(VALID_AMOUNT_RUM).build();
// EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);
// assertParseSuccess(parser, userInput, expectedCommand);
//
// // other valid values specified
// userInput = targetIndex.getOneBased() + DATE_DESC_RUM + INVALID_AMOUNT_DESC
// + AMOUNT_DESC_RUM;
// descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_RUM)
// .withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_RUM).build();
// expectedCommand = new EditCommand(targetIndex, descriptor);
// assertParseSuccess(parser, userInput, expectedCommand);
// }
@Test
public void parse_multipleRepeatedFields_acceptsLast() {
Index targetIndex = INDEX_FIRST_EXPENSE;
String userInput = targetIndex.getOneBased() + AMOUNT_DESC_RUM + DATE_DESC_VODKA
+ TAG_DESC_DRINKS + AMOUNT_DESC_VODKA + DATE_DESC_VODKA + TAG_DESC_DRINKS
+ AMOUNT_DESC_RUM + DATE_DESC_RUM + TAG_DESC_ALCOHOL + CURRENCY_DESC_RUM;

EditExpenseDescriptor descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_RUM)
.withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_RUM)
.withTags(VALID_TAG_DRINKS, VALID_TAG_ALCOHOL).build();
EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);

assertParseSuccess(parser, userInput, expectedCommand);
}

@Test
public void parse_invalidValueFollowedByValidValue_success() {
// no other valid values specified
Index targetIndex = INDEX_FIRST_EXPENSE;
String userInput = targetIndex.getOneBased() + INVALID_AMOUNT_DESC + AMOUNT_DESC_RUM;
EditExpenseDescriptor descriptor =
new EditExpenseDescriptorBuilder().withAmount(VALID_AMOUNT_RUM).build();
EditCommand expectedCommand = new EditCommand(targetIndex, descriptor);
assertParseSuccess(parser, userInput, expectedCommand);

// other valid values specified
userInput =
targetIndex.getOneBased() + DATE_DESC_RUM + INVALID_AMOUNT_DESC + CURRENCY_DESC_VODKA + AMOUNT_DESC_RUM;
descriptor = new EditExpenseDescriptorBuilder().withCurrency(VALID_CURRENCY_VODKA)
.withAmount(VALID_AMOUNT_RUM).withDate(VALID_DATE_RUM).build();
expectedCommand = new EditCommand(targetIndex, descriptor);
assertParseSuccess(parser, userInput, expectedCommand);
}

@Test
public void parse_resetTags_success() {
Expand Down
Loading

0 comments on commit b92c5c3

Please sign in to comment.