Skip to content

Commit

Permalink
Merge pull request nus-cs2103-AY1819S1#62 from CS2103-AY1819S1-W12-2/…
Browse files Browse the repository at this point in the history
…julian_changes

Add Calendar Events Synchronization / Test fixes
  • Loading branch information
Aadit Kamat authored Oct 23, 2018
2 parents 711463c + 0cb52b6 commit 18ae5c9
Show file tree
Hide file tree
Showing 14 changed files with 382 additions and 89 deletions.
319 changes: 287 additions & 32 deletions src/main/java/seedu/address/commons/core/CalendarManager.java

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/main/java/seedu/address/logic/parser/EditCommandParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ public EditCommand parse(String args) throws ParseException {
if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {
editTransactionDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));
}
if (argMultimap.getValue(PREFIX_TRANSACTION_AMOUNT).isPresent()) {
editTransactionDescriptor.setAmount(ParserUtil.parseAmount(argMultimap
.getValue(PREFIX_TRANSACTION_AMOUNT).get()));
}
if (argMultimap.getValue(PREFIX_TRANSACTION_TYPE).isPresent()) {
editTransactionDescriptor.setType(ParserUtil.parseType(argMultimap
.getValue(PREFIX_TRANSACTION_TYPE).get()));
}
if (argMultimap.getValue(PREFIX_TRANSACTION_DEADLINE).isPresent()) {
editTransactionDescriptor.setDeadline(ParserUtil.parseDeadline(argMultimap
.getValue(PREFIX_TRANSACTION_DEADLINE).get()));
}
parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editTransactionDescriptor::setTags);

if (!editTransactionDescriptor.isAnyFieldEdited()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public Command parseCommand(String userInput) throws ParseException {

final String commandWord = matcher.group("commandWord");
final String arguments = matcher.group("arguments");
switch (commandWord.toLowerCase()) {
switch (commandWord) {
case AddCommand.COMMAND_WORD:
case AddCommand.COMMAND_ALIAS:
return new AddCommandParser().parse(arguments);
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/seedu/address/model/ModelManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import seedu.address.commons.core.CalendarManager;
import seedu.address.commons.core.ComponentManager;
import seedu.address.commons.core.LogsCenter;
import seedu.address.commons.events.model.FinancialDatabaseChangedEvent;
Expand Down Expand Up @@ -65,13 +66,19 @@ public boolean hasTransaction(Transaction person) {
@Override
public void deleteTransaction(Transaction target) {
versionedFinancialDatabase.removeTransaction(target);
if (CalendarManager.getInstance() != null) {
CalendarManager.getInstance().syncCalendar(this);
}
indicateFinancialDatabaseChanged();
}

@Override
public void addTransaction(Transaction person) {
versionedFinancialDatabase.addTransaction(person);
updateFilteredTransactionList(PREDICATE_SHOW_ALL_TRANSACTIONS);
if (CalendarManager.getInstance() != null) {
CalendarManager.getInstance().syncCalendar(this);
}
indicateFinancialDatabaseChanged();
}

Expand All @@ -80,6 +87,9 @@ public void updateTransaction(Transaction target, Transaction editedTransaction)
requireAllNonNull(target, editedTransaction);

versionedFinancialDatabase.updateTransaction(target, editedTransaction);
if (CalendarManager.getInstance() != null) {
CalendarManager.getInstance().syncCalendar(this);
}
indicateFinancialDatabaseChanged();
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/seedu/address/model/transaction/Amount.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@ public String toString() {

@Override
public boolean equals(Object other) {
if (!(other instanceof Type)) {
if (!(other instanceof Amount)) {
return false;
}
Type type = (Type) other;
return other == this || value.equals(type.value);
Amount amount = (Amount) other;
return other == this || value.equals(amount.value);
}

@Override
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/seedu/address/model/transaction/Deadline.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ public String toString() {

@Override
public boolean equals(Object other) {
if (!(other instanceof Type)) {
if (!(other instanceof Deadline)) {
return false;
}
Type type = (Type) other;
return other == this || value.equals(type.value);
Deadline deadline = (Deadline) other;
return other == this || value.equals(deadline.value);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ public boolean equals(Object other) {
Transaction transaction = (Transaction) other;
return other == this || (type.equals(transaction.type)
&& amount.equals(transaction.amount)
&& person.equals(transaction.person));
&& person.equals(transaction.person)
&& deadline.equals(transaction.deadline));
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/seedu/address/commons/core/ConfigTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ConfigTest {

@Test
public void toString_defaultObject_stringReturned() {
String defaultConfigAsString = "App title : Address App\n"
String defaultConfigAsString = "App title : Debt Tracker\n"
+ "Current log level : INFO\n"
+ "Preference file Location : preferences.json";

Expand Down
17 changes: 10 additions & 7 deletions src/test/java/seedu/address/logic/commands/CommandTestUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.logic.parser.CliSyntax.*;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -29,9 +25,9 @@ public class CommandTestUtil {
public static final String VALID_TYPE_AMY = "Loan";
public static final String VALID_TYPE_BOB = "Loan";
public static final String VALID_AMOUNT_AMY = "SGD 145.60";
public static final String VALID_AMOUNT_BOB = "MYR 276.90";
public static final String VALID_AMOUNT_BOB = "SGD 42.50";
public static final String VALID_DEADLINE_AMY = "17/11/2018";
public static final String VALID_DEADLINE_BOB = "25/12/2018";
public static final String VALID_DEADLINE_BOB = "12/11/2018";
public static final String VALID_NAME_AMY = "Amy Bee";
public static final String VALID_NAME_BOB = "Bob Choo";
public static final String VALID_PHONE_AMY = "11111111";
Expand All @@ -52,6 +48,13 @@ public class CommandTestUtil {
public static final String EMAIL_DESC_BOB = " " + PREFIX_EMAIL + VALID_EMAIL_BOB;
public static final String ADDRESS_DESC_AMY = " " + PREFIX_ADDRESS + VALID_ADDRESS_AMY;
public static final String ADDRESS_DESC_BOB = " " + PREFIX_ADDRESS + VALID_ADDRESS_BOB;
public static final String AMOUNT_DESC_AMY = " " + PREFIX_TRANSACTION_AMOUNT + VALID_AMOUNT_AMY;
public static final String AMOUNT_DESC_BOB = " " + PREFIX_TRANSACTION_AMOUNT + VALID_AMOUNT_BOB;
public static final String TYPE_DESC_AMY = " " + PREFIX_TRANSACTION_TYPE + VALID_TYPE_AMY;
public static final String TYPE_DESC_BOB = " " + PREFIX_TRANSACTION_TYPE + VALID_TYPE_BOB;
public static final String DEADLINE_DESC_AMY = " " + PREFIX_TRANSACTION_DEADLINE + VALID_DEADLINE_AMY;
public static final String DEADLINE_DESC_BOB = " " + PREFIX_TRANSACTION_DEADLINE + VALID_DEADLINE_BOB;

public static final String TAG_DESC_FRIEND = " " + PREFIX_TAG + VALID_TAG_FRIEND;
public static final String TAG_DESC_HUSBAND = " " + PREFIX_TAG + VALID_TAG_HUSBAND;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public TransactionBuilder(Transaction transactionToCopy) {
type = transactionToCopy.getType();
amount = transactionToCopy.getAmount();
person = transactionToCopy.getPerson();
deadline = transactionToCopy.getDeadline();
}

/**
Expand Down
41 changes: 34 additions & 7 deletions src/test/java/seedu/address/testutil/TypicalTransactions.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,43 @@
public class TypicalTransactions {

//TODO: Update according to accepted currencies
public static final Transaction ALICE_TRANSACTION = new TransactionBuilder().withAmount("SGD 42.50")
public static final Transaction ALICE_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.ALICE)
.withAmount("SGD 42.50")
.withType("Loan").build();
public static final Transaction BOB_TRANSACTION = new TransactionBuilder().withAmount("AUD 12.85")
public static final Transaction BENSON_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.BENSON)
.withAmount("AUD 12.85")
.withType("Debt").build();
public static final Transaction CARL_TRANSACTION = new TransactionBuilder().withAmount("USD 57.60")
public static final Transaction CARL_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.CARL)
.withAmount("USD 57.60")
.withType("Debt").build();
public static final Transaction DANIEL_TRANSACTION = new TransactionBuilder().withAmount("INR 44.70")
public static final Transaction DANIEL_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.DANIEL)
.withAmount("INR 44.70")
.withType("Loan").build();
public static final Transaction ELLE_TRANSACTION = new TransactionBuilder().withAmount("CNY 47.65")
public static final Transaction ELLE_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.ELLE)
.withAmount("CNY 47.65")
.withType("Debt").build();
public static final Transaction FIONA_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.FIONA)
.withAmount("CNY 47.25")
.withType("Debt").build();
public static final Transaction GEORGE_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.GEORGE)
.withAmount("CNY 47.15")
.withType("Debt").build();

// Manually added
public static final Transaction HOON_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.HOON)
.withAmount("CNY 77.15")
.withType("Debt").build();
public static final Transaction IDA_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.IDA)
.withAmount("CNY 67.15")
.withType("Debt").build();

// Manually added - Person's details found in {@code CommandTestUtil}
public static final Transaction AMY_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.AMY)
.withAmount("CNY 57.15")
.withType("Debt").build();
public static final Transaction BOB_TRANSACTION = new TransactionBuilder().withPerson(TypicalPersons.BOB)
.withAmount("SGD 42.50")
.withType("Loan").build();

private TypicalTransactions() {} // prevents instantiation

Expand All @@ -38,7 +65,7 @@ public static FinancialDatabase getTypicalFinancialDatabase() {
}

public static List<Transaction> getTypicalTransactions() {
return new ArrayList<>(Arrays.asList(ALICE_TRANSACTION, BOB_TRANSACTION, CARL_TRANSACTION,
DANIEL_TRANSACTION, ELLE_TRANSACTION));
return new ArrayList<>(Arrays.asList(ALICE_TRANSACTION, BENSON_TRANSACTION, CARL_TRANSACTION,
DANIEL_TRANSACTION, ELLE_TRANSACTION, FIONA_TRANSACTION, GEORGE_TRANSACTION));
}
}
32 changes: 8 additions & 24 deletions src/test/java/systemtests/EditCommandSystemTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;
import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;
import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;
import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;
import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;
import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;
import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;
import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;
import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;
import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;
import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;
import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;
import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;
import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;
import static seedu.address.logic.commands.CommandTestUtil.*;
import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TRANSACTIONS;
import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_TRANSACTION;
Expand Down Expand Up @@ -66,8 +47,9 @@ public void edit() {
* -> edited
*/
Index index = INDEX_FIRST_TRANSACTION;
String command = " " + EditCommand.COMMAND_WORD + " " + index.getZeroBased() + " " + NAME_DESC_BOB + " "
+ PHONE_DESC_BOB + " " + EMAIL_DESC_BOB + " " + ADDRESS_DESC_BOB + " " + TAG_DESC_HUSBAND + " ";
String command = " " + EditCommand.COMMAND_WORD + " " + index.getOneBased() + " " + NAME_DESC_BOB + " "
+ PHONE_DESC_BOB + " " + EMAIL_DESC_BOB + " " + ADDRESS_DESC_BOB + " " + AMOUNT_DESC_BOB + " "
+ TYPE_DESC_BOB + " " + DEADLINE_DESC_BOB + " " + TAG_DESC_HUSBAND + " ";
Transaction editedTransaction = new TransactionBuilder(BOB_TRANSACTION).withTags(VALID_TAG_HUSBAND).build();
logger.info("" + index.getZeroBased());
assertCommandSuccess(command, index, editedTransaction);
Expand All @@ -86,7 +68,8 @@ public void edit() {

/* Case: edit a transaction with new values same as existing values -> edited */
command = EditCommand.COMMAND_WORD + " " + index.getOneBased() + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB
+ ADDRESS_DESC_BOB + TAG_DESC_FRIEND + TAG_DESC_HUSBAND;
+ ADDRESS_DESC_BOB + AMOUNT_DESC_BOB + TYPE_DESC_BOB + DEADLINE_DESC_BOB + TAG_DESC_FRIEND
+ TAG_DESC_HUSBAND;
assertCommandSuccess(command, index, BOB_TRANSACTION);

/* Case: edit a transaction with new values same as another transaction's values but with different name ->
Expand All @@ -96,7 +79,8 @@ public void edit() {
index = INDEX_SECOND_TRANSACTION;
assertNotEquals(getModel().getFilteredTransactionList().get(index.getZeroBased()), BOB);
command = EditCommand.COMMAND_WORD + " " + index.getOneBased() + NAME_DESC_AMY + PHONE_DESC_BOB + EMAIL_DESC_BOB
+ ADDRESS_DESC_BOB + TAG_DESC_FRIEND + TAG_DESC_HUSBAND;
+ ADDRESS_DESC_BOB + AMOUNT_DESC_BOB + TYPE_DESC_BOB + DEADLINE_DESC_BOB + TAG_DESC_FRIEND
+ TAG_DESC_HUSBAND;
editedTransaction = new TransactionBuilder(BOB_TRANSACTION).withName(VALID_NAME_AMY).build();
assertCommandSuccess(command, index, editedTransaction);

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/systemtests/FinancialDatabaseSystemTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,10 @@ protected void assertSelectedCardDeselected() {
*/
protected void assertSelectedCardChanged(Index expectedSelectedCardIndex) {
getTransactionListPanel().navigateToCard(getTransactionListPanel().getSelectedCardIndex());
String selectedCardName = getTransactionListPanel().getHandleToSelectedCard().getName();
String selectedCardDeadline = getTransactionListPanel().getHandleToSelectedCard().getDeadline();
URL expectedUrl;
try {
expectedUrl = new URL(BrowserPanel.SEARCH_PAGE_URL + selectedCardName.replaceAll(" ", "%20"));
expectedUrl = new URL(BrowserPanel.SEARCH_PAGE_URL + selectedCardDeadline.replaceAll(" ", "%20"));
} catch (MalformedURLException mue) {
throw new AssertionError("URL expected to be valid.", mue);
}
Expand Down
16 changes: 8 additions & 8 deletions src/test/java/systemtests/FindCommandSystemTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import static seedu.address.testutil.TypicalPersons.BENSON;
import static seedu.address.testutil.TypicalPersons.DANIEL;
import static seedu.address.testutil.TypicalPersons.KEYWORD_MATCHING_MEIER;
import static seedu.address.testutil.TypicalTransactions.BOB_TRANSACTION;
import static seedu.address.testutil.TypicalTransactions.BENSON_TRANSACTION;
import static seedu.address.testutil.TypicalTransactions.CARL_TRANSACTION;
import static seedu.address.testutil.TypicalTransactions.DANIEL_TRANSACTION;

Expand All @@ -33,7 +33,7 @@ public void find() {
String command = " " + FindCommand.COMMAND_WORD + " " + KEYWORD_MATCHING_MEIER + " ";
Model expectedModel = getModel();
// first names of Benson and Daniel are "Meier"
ModelHelper.setFilteredList(expectedModel, BOB_TRANSACTION, DANIEL_TRANSACTION);
ModelHelper.setFilteredList(expectedModel, BENSON_TRANSACTION, DANIEL_TRANSACTION);
assertCommandSuccess(command, expectedModel);
assertSelectedCardUnchanged();

Expand All @@ -53,25 +53,25 @@ public void find() {
assertSelectedCardUnchanged();

/* Case: find multiple persons in address book, 2 keywords -> 2 persons found */
command = FindCommand.COMMAND_WORD + " Bob Daniel";
ModelHelper.setFilteredList(expectedModel, BOB_TRANSACTION, DANIEL_TRANSACTION);
command = FindCommand.COMMAND_WORD + " Benson Daniel";
ModelHelper.setFilteredList(expectedModel, BENSON_TRANSACTION, DANIEL_TRANSACTION);
assertCommandSuccess(command, expectedModel);
assertSelectedCardUnchanged();

/* Case: find multiple persons in address book, 2 keywords in reversed order -> 2 persons found */
command = FindCommand.COMMAND_WORD + " Daniel Bob";
command = FindCommand.COMMAND_WORD + " Daniel Benson";
assertCommandSuccess(command, expectedModel);
assertSelectedCardUnchanged();

/* Case: find multiple persons in address book, 2 keywords with 1 repeat -> 2 persons found */
command = FindCommand.COMMAND_WORD + " Daniel Bob Daniel";
command = FindCommand.COMMAND_WORD + " Daniel Benson Daniel";
assertCommandSuccess(command, expectedModel);
assertSelectedCardUnchanged();

/* Case: find multiple persons in address book, 2 matching keywords and 1 non-matching keyword
* -> 2 persons found
*/
command = FindCommand.COMMAND_WORD + " Daniel Bob NonMatchingKeyWord";
command = FindCommand.COMMAND_WORD + " Daniel Benson NonMatchingKeyWord";
assertCommandSuccess(command, expectedModel);
assertSelectedCardUnchanged();

Expand All @@ -87,7 +87,7 @@ public void find() {

/* Case: find same persons in address book after deleting 1 of them -> 1 transaction found */
executeCommand(DeleteCommand.COMMAND_WORD + " 1");
assertFalse(getModel().getFinancialDatabase().getTransactionList().contains(BENSON));
assertFalse(getModel().getFinancialDatabase().getTransactionList().contains(BENSON_TRANSACTION));
command = FindCommand.COMMAND_WORD + " " + KEYWORD_MATCHING_MEIER;
expectedModel = getModel();
ModelHelper.setFilteredList(expectedModel, DANIEL_TRANSACTION);
Expand Down

0 comments on commit 18ae5c9

Please sign in to comment.