void save() { checkEditViewSet(); if (bill == null) bill = new Bill(); bill = editView.fillBill(bill); bill.setInitDate(initDate); bill.setEndDate(endDate); OperationResult result = repository.save(bill); if (result.isValid()) { editView.finishView(); } else { for (ValidationError validationError : result.getErrors()) editView.showError(validationError); } }
void viewUpdated(boolean invalidateCache) { if (bill != null) { if (invalidateCache) bill = repository.find(bill.getUuid()); if (editView != null) { editView.setTitle(R.string.edit_bill_title); } else { String title = view.getContext().getString(R.string.bill); view.setTitle(title.concat(" ").concat(bill.getName())); } view.showBill(bill); initDate = bill.getInitDate(); if (editView != null) editView.onInitDateChanged(initDate); endDate = bill.getEndDate(); if (editView != null) editView.onEndDateChanged(endDate); } else { if (editView != null) editView.setTitle(R.string.new_bill_title); } }
@Test public void save_gets_data_from_screen_and_save_to_repository() { when(view.fillBill(any(Bill.class))).thenReturn(new Bill()); when(repository.save(any(Bill.class))).thenReturn(new OperationResult()); presenter.save(); verify(view, times(1)).fillBill(any(Bill.class)); verify(repository, times(1)).save(any(Bill.class)); verify(view, times(1)).finishView(); }
@Test public void call_view_with_errors() { OperationResult result = new OperationResult(); result.addError(ValidationError.NAME); when(view.fillBill(any(Bill.class))).thenReturn(new Bill()); when(repository.save(any(Bill.class))).thenReturn(result); presenter.save(); verify(view, times(1)).showError(ValidationError.NAME); }