package co.smartreceipts.android.settings.catalog;
import android.support.annotation.NonNull;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.List;
import co.smartreceipts.android.R;
@RunWith(RobolectricTestRunner.class)
public class UserPreferenceTest {
@Test
public void values() {
final List<UserPreference<?>> userPreferences = UserPreference.values();
Assert.assertNotNull(userPreferences);
Assert.assertFalse(userPreferences.isEmpty());
Assert.assertTrue(userPreferences.contains(UserPreference.General.DefaultReportDuration));
Assert.assertTrue(userPreferences.contains(UserPreference.General.DefaultCurrency));
Assert.assertTrue(userPreferences.contains(UserPreference.General.DateSeparator));
Assert.assertTrue(userPreferences.contains(UserPreference.General.IncludeCostCenter));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.MinimumReceiptPrice));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.DefaultTaxPercentage));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.PredictCategories));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.EnableAutoCompleteSuggestions));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.OnlyIncludeReimbursable));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.ReceiptsDefaultAsReimbursable));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.ReceiptDateDefaultsToReportStartDate));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.MatchReceiptNameToCategory));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.MatchReceiptCommentToCategory));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.ShowReceiptID));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.IncludeTaxField));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.UsePreTaxPrice));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.DefaultToFullPage));
Assert.assertTrue(userPreferences.contains(UserPreference.Receipts.UsePaymentMethods));
Assert.assertTrue(userPreferences.contains(UserPreference.ReportOutput.UserId));
Assert.assertTrue(userPreferences.contains(UserPreference.ReportOutput.PrintUserIdByPdfPhoto));
Assert.assertTrue(userPreferences.contains(UserPreference.ReportOutput.PrintReceiptCommentByPdfPhoto));
Assert.assertTrue(userPreferences.contains(UserPreference.ReportOutput.PrintReceiptsTableInLandscape));
Assert.assertTrue(userPreferences.contains(UserPreference.Email.ToAddresses));
Assert.assertTrue(userPreferences.contains(UserPreference.Email.CcAddresses));
Assert.assertTrue(userPreferences.contains(UserPreference.Email.BccAddresses));
Assert.assertTrue(userPreferences.contains(UserPreference.Email.Subject));
Assert.assertTrue(userPreferences.contains(UserPreference.Camera.SaveImagesInGrayScale));
Assert.assertTrue(userPreferences.contains(UserPreference.Camera.AutomaticallyRotateImages));
Assert.assertTrue(userPreferences.contains(UserPreference.Layout.IncludeReceiptDateInLayout));
Assert.assertTrue(userPreferences.contains(UserPreference.Layout.IncludeReceiptCategoryInLayout));
Assert.assertTrue(userPreferences.contains(UserPreference.Layout.IncludeReceiptFileMarkerInLayout));
Assert.assertTrue(userPreferences.contains(UserPreference.Distance.DefaultDistanceRate));
Assert.assertTrue(userPreferences.contains(UserPreference.Distance.PrintDistanceTableInReports));
Assert.assertTrue(userPreferences.contains(UserPreference.Distance.IncludeDistancePriceInReports));
Assert.assertTrue(userPreferences.contains(UserPreference.Distance.PrintDistanceAsDailyReceiptInReports));
Assert.assertTrue(userPreferences.contains(UserPreference.Distance.ShowDistanceAsPriceInSubtotal));
Assert.assertTrue(userPreferences.contains(UserPreference.PlusSubscription.PdfFooterString));
Assert.assertTrue(userPreferences.contains(UserPreference.Misc.AutoBackupOnWifiOnly));
Assert.assertTrue(userPreferences.contains(UserPreference.Misc.OcrIncognitoMode));
Assert.assertTrue(userPreferences.contains(UserPreference.Misc.OcrIsEnabled));
}
@Test
public void general() {
Assert.assertEquals(UserPreference.General.DefaultReportDuration.getType(), Integer.class);
Assert.assertEquals(name(UserPreference.General.DefaultReportDuration), "TripDuration");
Assert.assertEquals(UserPreference.General.DefaultReportDuration.getDefaultValue(), R.integer.pref_general_trip_duration_defaultValue);
Assert.assertEquals(UserPreference.General.DefaultCurrency.getType(), String.class);
Assert.assertEquals(name(UserPreference.General.DefaultCurrency), "isocurr");
Assert.assertEquals(UserPreference.General.DefaultCurrency.getDefaultValue(), R.string.pref_general_default_currency_defaultValue);
Assert.assertEquals(UserPreference.General.DateSeparator.getType(), String.class);
Assert.assertEquals(name(UserPreference.General.DateSeparator), "dateseparator");
Assert.assertEquals(UserPreference.General.DateSeparator.getDefaultValue(), R.string.pref_general_default_date_separator_defaultValue);
Assert.assertEquals(UserPreference.General.IncludeCostCenter.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.General.IncludeCostCenter), "trackcostcenter");
Assert.assertEquals(UserPreference.General.IncludeCostCenter.getDefaultValue(), R.bool.pref_general_track_cost_center_defaultValue);
}
@Test
public void receipts() {
Assert.assertEquals(UserPreference.Receipts.MinimumReceiptPrice.getType(), Float.class);
Assert.assertEquals(name(UserPreference.Receipts.MinimumReceiptPrice), "MinReceiptPrice");
Assert.assertEquals(UserPreference.Receipts.MinimumReceiptPrice.getDefaultValue(), R.dimen.pref_receipt_minimum_receipts_price_defaultValue);
Assert.assertEquals(UserPreference.Receipts.DefaultTaxPercentage.getType(), Float.class);
Assert.assertEquals(name(UserPreference.Receipts.DefaultTaxPercentage), "TaxPercentage");
Assert.assertEquals(UserPreference.Receipts.DefaultTaxPercentage.getDefaultValue(), R.dimen.pref_receipt_tax_percent_defaultValue);
Assert.assertEquals(UserPreference.Receipts.PredictCategories.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.PredictCategories), "PredictCats");
Assert.assertEquals(UserPreference.Receipts.PredictCategories.getDefaultValue(), R.bool.pref_receipt_predict_categories_defaultValue);
Assert.assertEquals(UserPreference.Receipts.EnableAutoCompleteSuggestions.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.EnableAutoCompleteSuggestions), "EnableAutoCompleteSuggestions");
Assert.assertEquals(UserPreference.Receipts.EnableAutoCompleteSuggestions.getDefaultValue(), R.bool.pref_receipt_enable_autocomplete_defaultValue);
Assert.assertEquals(UserPreference.Receipts.OnlyIncludeReimbursable.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.OnlyIncludeReimbursable), "OnlyIncludeExpensable");
Assert.assertEquals(UserPreference.Receipts.OnlyIncludeReimbursable.getDefaultValue(), R.bool.pref_receipt_reimbursable_only_defaultValue);
Assert.assertEquals(UserPreference.Receipts.ReceiptsDefaultAsReimbursable.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.ReceiptsDefaultAsReimbursable), "ExpensableDefault");
Assert.assertEquals(UserPreference.Receipts.ReceiptsDefaultAsReimbursable.getDefaultValue(), R.bool.pref_receipt_reimbursable_default_defaultValue);
Assert.assertEquals(UserPreference.Receipts.ReceiptDateDefaultsToReportStartDate.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.ReceiptDateDefaultsToReportStartDate), "DefaultToFirstReportDate");
Assert.assertEquals(UserPreference.Receipts.ReceiptDateDefaultsToReportStartDate.getDefaultValue(), R.bool.pref_receipt_default_to_report_start_date_defaultValue);
Assert.assertEquals(UserPreference.Receipts.MatchReceiptNameToCategory.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.MatchReceiptNameToCategory), "MatchNameCats");
Assert.assertEquals(UserPreference.Receipts.MatchReceiptNameToCategory.getDefaultValue(), R.bool.pref_receipt_match_name_to_category_defaultValue);
Assert.assertEquals(UserPreference.Receipts.MatchReceiptCommentToCategory.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.MatchReceiptCommentToCategory), "MatchCommentCats");
Assert.assertEquals(UserPreference.Receipts.MatchReceiptCommentToCategory.getDefaultValue(), R.bool.pref_receipt_match_comment_to_category_defaultValue);
Assert.assertEquals(UserPreference.Receipts.ShowReceiptID.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.ShowReceiptID), "ShowReceiptID");
Assert.assertEquals(UserPreference.Receipts.ShowReceiptID.getDefaultValue(), R.bool.pref_receipt_show_id_defaultValue);
Assert.assertEquals(UserPreference.Receipts.IncludeTaxField.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.IncludeTaxField), "IncludeTaxField");
Assert.assertEquals(UserPreference.Receipts.IncludeTaxField.getDefaultValue(), R.bool.pref_receipt_include_tax_field_defaultValue);
Assert.assertEquals(UserPreference.Receipts.UsePreTaxPrice.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.UsePreTaxPrice), "PreTax");
Assert.assertEquals(UserPreference.Receipts.UsePreTaxPrice.getDefaultValue(), R.bool.pref_receipt_pre_tax_defaultValue);
Assert.assertEquals(UserPreference.Receipts.DefaultToFullPage.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.DefaultToFullPage), "UseFullPage");
Assert.assertEquals(UserPreference.Receipts.DefaultToFullPage.getDefaultValue(), R.bool.pref_receipt_full_page_defaultValue);
Assert.assertEquals(UserPreference.Receipts.UsePaymentMethods.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Receipts.UsePaymentMethods), "UsePaymentMethods");
Assert.assertEquals(UserPreference.Receipts.UsePaymentMethods.getDefaultValue(), R.bool.pref_receipt_use_payment_methods_defaultValue);
}
@Test
public void reportOutput() {
Assert.assertEquals(UserPreference.ReportOutput.UserId.getType(), String.class);
Assert.assertEquals(name(UserPreference.ReportOutput.UserId), "UserName");
Assert.assertEquals(UserPreference.ReportOutput.UserId.getDefaultValue(), R.string.pref_output_username_defaultValue);
Assert.assertEquals(UserPreference.ReportOutput.PrintUserIdByPdfPhoto.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.ReportOutput.PrintUserIdByPdfPhoto), "PrintByIDPhotoKey");
Assert.assertEquals(UserPreference.ReportOutput.PrintUserIdByPdfPhoto.getDefaultValue(), R.bool.pref_output_print_receipt_id_by_photo_defaultValue);
Assert.assertEquals(UserPreference.ReportOutput.PrintReceiptCommentByPdfPhoto.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.ReportOutput.PrintReceiptCommentByPdfPhoto), "PrintCommentByPhoto");
Assert.assertEquals(UserPreference.ReportOutput.PrintReceiptCommentByPdfPhoto.getDefaultValue(), R.bool.pref_output_print_receipt_comment_by_photo_defaultValue);
Assert.assertEquals(UserPreference.ReportOutput.PrintReceiptsTableInLandscape.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.ReportOutput.PrintReceiptsTableInLandscape), "ReceiptsTableLandscape");
Assert.assertEquals(UserPreference.ReportOutput.PrintReceiptsTableInLandscape.getDefaultValue(), R.bool.pref_output_receipts_landscape_defaultValue);
}
@Test
public void email() {
Assert.assertEquals(UserPreference.Email.ToAddresses.getType(), String.class);
Assert.assertEquals(name(UserPreference.Email.ToAddresses), "EmailTo");
Assert.assertEquals(UserPreference.Email.ToAddresses.getDefaultValue(), R.string.pref_email_default_email_to_defaultValue);
Assert.assertEquals(UserPreference.Email.CcAddresses.getType(), String.class);
Assert.assertEquals(name(UserPreference.Email.CcAddresses), "EmailCC");
Assert.assertEquals(UserPreference.Email.CcAddresses.getDefaultValue(), R.string.pref_email_default_email_cc_defaultValue);
Assert.assertEquals(UserPreference.Email.BccAddresses.getType(), String.class);
Assert.assertEquals(name(UserPreference.Email.BccAddresses), "EmailBCC");
Assert.assertEquals(UserPreference.Email.BccAddresses.getDefaultValue(), R.string.pref_email_default_email_bcc_defaultValue);
Assert.assertEquals(UserPreference.Email.Subject.getType(), String.class);
Assert.assertEquals(name(UserPreference.Email.Subject), "EmailSubject");
Assert.assertEquals(UserPreference.Email.Subject.getDefaultValue(), R.string.EMAIL_DATA_SUBJECT);
}
@Test
public void camera() {
Assert.assertEquals(UserPreference.Camera.SaveImagesInGrayScale.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Camera.SaveImagesInGrayScale), "SaveBW");
Assert.assertEquals(UserPreference.Camera.SaveImagesInGrayScale.getDefaultValue(), R.bool.pref_camera_bw_defaultValue);
Assert.assertEquals(UserPreference.Camera.AutomaticallyRotateImages.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Camera.AutomaticallyRotateImages), "Camera_Rotate");
Assert.assertEquals(UserPreference.Camera.AutomaticallyRotateImages.getDefaultValue(), R.bool.pref_camera_rotate_defaultValue);
}
@Test
public void layout() {
Assert.assertEquals(UserPreference.Layout.IncludeReceiptDateInLayout.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Layout.IncludeReceiptDateInLayout), "LayoutIncludeReceiptDate");
Assert.assertEquals(UserPreference.Layout.IncludeReceiptDateInLayout.getDefaultValue(), R.bool.pref_layout_display_date_defaultValue);
Assert.assertEquals(UserPreference.Layout.IncludeReceiptCategoryInLayout.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Layout.IncludeReceiptCategoryInLayout), "LayoutIncludeReceiptCategory");
Assert.assertEquals(UserPreference.Layout.IncludeReceiptCategoryInLayout.getDefaultValue(), R.bool.pref_layout_display_category_defaultValue);
Assert.assertEquals(UserPreference.Layout.IncludeReceiptFileMarkerInLayout.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Layout.IncludeReceiptFileMarkerInLayout), "LayoutIncludeReceiptPicture");
Assert.assertEquals(UserPreference.Layout.IncludeReceiptFileMarkerInLayout.getDefaultValue(), R.bool.pref_layout_display_photo_defaultValue);
}
@Test
public void distance() {
Assert.assertEquals(UserPreference.Distance.DefaultDistanceRate.getType(), Float.class);
Assert.assertEquals(name(UserPreference.Distance.DefaultDistanceRate), "MileageRate");
Assert.assertEquals(UserPreference.Distance.DefaultDistanceRate.getDefaultValue(), R.dimen.pref_distance_rate_defaultValue);
Assert.assertEquals(UserPreference.Distance.PrintDistanceTableInReports.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Distance.PrintDistanceTableInReports), "MileagePrintTable");
Assert.assertEquals(UserPreference.Distance.PrintDistanceTableInReports.getDefaultValue(), R.bool.pref_distance_print_table_defaultValue);
Assert.assertEquals(UserPreference.Distance.IncludeDistancePriceInReports.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Distance.IncludeDistancePriceInReports), "MileageTotalInReport");
Assert.assertEquals(UserPreference.Distance.IncludeDistancePriceInReports.getDefaultValue(), R.bool.pref_distance_include_price_in_report_defaultValue);
Assert.assertEquals(UserPreference.Distance.PrintDistanceAsDailyReceiptInReports.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Distance.PrintDistanceAsDailyReceiptInReports), "MileageAddToPDF");
Assert.assertEquals(UserPreference.Distance.PrintDistanceAsDailyReceiptInReports.getDefaultValue(), R.bool.pref_distance_print_daily_defaultValue);
Assert.assertEquals(UserPreference.Distance.ShowDistanceAsPriceInSubtotal.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Distance.ShowDistanceAsPriceInSubtotal), "DistanceAsPrice");
Assert.assertEquals(UserPreference.Distance.ShowDistanceAsPriceInSubtotal.getDefaultValue(), R.bool.pref_distance_as_price_defaultValue);
}
@Test
public void plus() {
Assert.assertEquals(UserPreference.PlusSubscription.PdfFooterString.getType(), String.class);
Assert.assertEquals(name(UserPreference.PlusSubscription.PdfFooterString), "PdfFooterString");
Assert.assertEquals(UserPreference.PlusSubscription.PdfFooterString.getDefaultValue(), R.string.pref_pro_pdf_footer_defaultValue);
}
@Test
public void misc() {
Assert.assertEquals(UserPreference.Misc.AutoBackupOnWifiOnly.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Misc.AutoBackupOnWifiOnly), "AutoBackupWifiOnly");
Assert.assertEquals(UserPreference.Misc.AutoBackupOnWifiOnly.getDefaultValue(), R.bool.pref_no_category_auto_backup_wifi_only_defaultValue);
Assert.assertEquals(UserPreference.Misc.OcrIncognitoMode.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Misc.OcrIncognitoMode), "OcrIncognitoMode");
Assert.assertEquals(UserPreference.Misc.OcrIncognitoMode.getDefaultValue(), R.bool.pref_no_category_ocr_incognito_mode_defaultValue);
Assert.assertEquals(UserPreference.Misc.OcrIsEnabled.getType(), Boolean.class);
Assert.assertEquals(name(UserPreference.Misc.OcrIsEnabled), "OcrIsEnabled");
Assert.assertEquals(UserPreference.Misc.OcrIsEnabled.getDefaultValue(), R.bool.pref_no_category_ocr_is_enabled_defaultValue);
}
@NonNull
private String name(@NonNull UserPreference<?> userPreference) {
return RuntimeEnvironment.application.getString(userPreference.getName());
}
}