mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-17 16:42:48 +01:00
Integration tests
This commit is contained in:
parent
ff0a37f1d8
commit
ba50e701c8
@ -101,6 +101,7 @@ class AppController extends BaseController
|
||||
if (Industry::count() == 0) {
|
||||
Artisan::call('db:seed', array('--force' => true));
|
||||
}
|
||||
Cache::flush();
|
||||
Artisan::call('optimize', array('--force' => true));
|
||||
|
||||
$firstName = trim(Input::get('first_name'));
|
||||
|
@ -326,6 +326,7 @@ class InvoiceController extends BaseController
|
||||
$actions[] = ['url' => 'javascript:onArchiveClick()', 'label' => trans("texts.archive_{$entityType}")];
|
||||
$actions[] = ['url' => 'javascript:onDeleteClick()', 'label' => trans("texts.delete_{$entityType}")];
|
||||
|
||||
$lastSent = ($invoice->is_recurring && $invoice->last_sent_date) ? $invoice->recurring_invoices->last() : null;
|
||||
|
||||
$data = array(
|
||||
'entityType' => $entityType,
|
||||
@ -338,7 +339,8 @@ class InvoiceController extends BaseController
|
||||
'title' => trans("texts.edit_{$entityType}"),
|
||||
'client' => $invoice->client,
|
||||
'isRecurring' => $invoice->is_recurring,
|
||||
'actions' => $actions);
|
||||
'actions' => $actions,
|
||||
'lastSent' => $lastSent);
|
||||
$data = array_merge($data, self::getViewModel());
|
||||
|
||||
// Set the invitation link on the client's contacts
|
||||
|
@ -221,7 +221,8 @@ class ReportController extends BaseController
|
||||
foreach ($period as $d)
|
||||
{
|
||||
$dateFormat = $groupBy == 'DAYOFYEAR' ? 'z' : ($groupBy == 'WEEK' ? 'W' : 'n');
|
||||
$date = $d->format('Y'.$dateFormat);
|
||||
// MySQL returns 1-366 for DAYOFYEAR, whereas PHP returns 0-365
|
||||
$date = $groupBy == 'DAYOFYEAR' ? $d->format('Y') . ($d->format($dateFormat) + 1) : $d->format('Y'.$dateFormat);
|
||||
$totals[] = isset($data[$date]) ? $data[$date] : 0;
|
||||
|
||||
if ($entityType == ENTITY_INVOICE)
|
||||
|
@ -219,202 +219,203 @@ Route::get('/forgot_password', function() {
|
||||
});
|
||||
|
||||
|
||||
define('CONTACT_EMAIL', Config::get('mail.from.address'));
|
||||
define('CONTACT_NAME', Config::get('mail.from.name'));
|
||||
define('SITE_URL', Config::get('app.url'));
|
||||
if (!defined('CONTACT_EMAIL')) {
|
||||
define('CONTACT_EMAIL', Config::get('mail.from.address'));
|
||||
define('CONTACT_NAME', Config::get('mail.from.name'));
|
||||
define('SITE_URL', Config::get('app.url'));
|
||||
|
||||
define('ENV_DEVELOPMENT', 'local');
|
||||
define('ENV_STAGING', 'staging');
|
||||
define('ENV_PRODUCTION', 'fortrabbit');
|
||||
define('ENV_DEVELOPMENT', 'local');
|
||||
define('ENV_STAGING', 'staging');
|
||||
define('ENV_PRODUCTION', 'fortrabbit');
|
||||
|
||||
define('RECENTLY_VIEWED', 'RECENTLY_VIEWED');
|
||||
define('ENTITY_CLIENT', 'client');
|
||||
define('ENTITY_INVOICE', 'invoice');
|
||||
define('ENTITY_RECURRING_INVOICE', 'recurring_invoice');
|
||||
define('ENTITY_PAYMENT', 'payment');
|
||||
define('ENTITY_CREDIT', 'credit');
|
||||
define('ENTITY_QUOTE', 'quote');
|
||||
define('ENTITY_TASK', 'task');
|
||||
define('RECENTLY_VIEWED', 'RECENTLY_VIEWED');
|
||||
define('ENTITY_CLIENT', 'client');
|
||||
define('ENTITY_INVOICE', 'invoice');
|
||||
define('ENTITY_RECURRING_INVOICE', 'recurring_invoice');
|
||||
define('ENTITY_PAYMENT', 'payment');
|
||||
define('ENTITY_CREDIT', 'credit');
|
||||
define('ENTITY_QUOTE', 'quote');
|
||||
define('ENTITY_TASK', 'task');
|
||||
|
||||
define('PERSON_CONTACT', 'contact');
|
||||
define('PERSON_USER', 'user');
|
||||
define('PERSON_CONTACT', 'contact');
|
||||
define('PERSON_USER', 'user');
|
||||
|
||||
define('ACCOUNT_DETAILS', 'details');
|
||||
define('ACCOUNT_NOTIFICATIONS', 'notifications');
|
||||
define('ACCOUNT_IMPORT_EXPORT', 'import_export');
|
||||
define('ACCOUNT_PAYMENTS', 'payments');
|
||||
define('ACCOUNT_MAP', 'import_map');
|
||||
define('ACCOUNT_EXPORT', 'export');
|
||||
define('ACCOUNT_PRODUCTS', 'products');
|
||||
define('ACCOUNT_ADVANCED_SETTINGS', 'advanced_settings');
|
||||
define('ACCOUNT_INVOICE_SETTINGS', 'invoice_settings');
|
||||
define('ACCOUNT_INVOICE_DESIGN', 'invoice_design');
|
||||
define('ACCOUNT_CHART_BUILDER', 'chart_builder');
|
||||
define('ACCOUNT_USER_MANAGEMENT', 'user_management');
|
||||
define('ACCOUNT_DATA_VISUALIZATIONS', 'data_visualizations');
|
||||
define('ACCOUNT_EMAIL_TEMPLATES', 'email_templates');
|
||||
define('ACCOUNT_TOKEN_MANAGEMENT', 'token_management');
|
||||
define('ACCOUNT_CUSTOMIZE_DESIGN', 'customize_design');
|
||||
define('ACCOUNT_DETAILS', 'details');
|
||||
define('ACCOUNT_NOTIFICATIONS', 'notifications');
|
||||
define('ACCOUNT_IMPORT_EXPORT', 'import_export');
|
||||
define('ACCOUNT_PAYMENTS', 'payments');
|
||||
define('ACCOUNT_MAP', 'import_map');
|
||||
define('ACCOUNT_EXPORT', 'export');
|
||||
define('ACCOUNT_PRODUCTS', 'products');
|
||||
define('ACCOUNT_ADVANCED_SETTINGS', 'advanced_settings');
|
||||
define('ACCOUNT_INVOICE_SETTINGS', 'invoice_settings');
|
||||
define('ACCOUNT_INVOICE_DESIGN', 'invoice_design');
|
||||
define('ACCOUNT_CHART_BUILDER', 'chart_builder');
|
||||
define('ACCOUNT_USER_MANAGEMENT', 'user_management');
|
||||
define('ACCOUNT_DATA_VISUALIZATIONS', 'data_visualizations');
|
||||
define('ACCOUNT_EMAIL_TEMPLATES', 'email_templates');
|
||||
define('ACCOUNT_TOKEN_MANAGEMENT', 'token_management');
|
||||
define('ACCOUNT_CUSTOMIZE_DESIGN', 'customize_design');
|
||||
|
||||
|
||||
define('ACTIVITY_TYPE_CREATE_CLIENT', 1);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_CLIENT', 2);
|
||||
define('ACTIVITY_TYPE_DELETE_CLIENT', 3);
|
||||
define('ACTIVITY_TYPE_CREATE_CLIENT', 1);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_CLIENT', 2);
|
||||
define('ACTIVITY_TYPE_DELETE_CLIENT', 3);
|
||||
|
||||
define('ACTIVITY_TYPE_CREATE_INVOICE', 4);
|
||||
define('ACTIVITY_TYPE_UPDATE_INVOICE', 5);
|
||||
define('ACTIVITY_TYPE_EMAIL_INVOICE', 6);
|
||||
define('ACTIVITY_TYPE_VIEW_INVOICE', 7);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_INVOICE', 8);
|
||||
define('ACTIVITY_TYPE_DELETE_INVOICE', 9);
|
||||
define('ACTIVITY_TYPE_CREATE_INVOICE', 4);
|
||||
define('ACTIVITY_TYPE_UPDATE_INVOICE', 5);
|
||||
define('ACTIVITY_TYPE_EMAIL_INVOICE', 6);
|
||||
define('ACTIVITY_TYPE_VIEW_INVOICE', 7);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_INVOICE', 8);
|
||||
define('ACTIVITY_TYPE_DELETE_INVOICE', 9);
|
||||
|
||||
define('ACTIVITY_TYPE_CREATE_PAYMENT', 10);
|
||||
define('ACTIVITY_TYPE_UPDATE_PAYMENT', 11);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_PAYMENT', 12);
|
||||
define('ACTIVITY_TYPE_DELETE_PAYMENT', 13);
|
||||
define('ACTIVITY_TYPE_CREATE_PAYMENT', 10);
|
||||
define('ACTIVITY_TYPE_UPDATE_PAYMENT', 11);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_PAYMENT', 12);
|
||||
define('ACTIVITY_TYPE_DELETE_PAYMENT', 13);
|
||||
|
||||
define('ACTIVITY_TYPE_CREATE_CREDIT', 14);
|
||||
define('ACTIVITY_TYPE_UPDATE_CREDIT', 15);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_CREDIT', 16);
|
||||
define('ACTIVITY_TYPE_DELETE_CREDIT', 17);
|
||||
define('ACTIVITY_TYPE_CREATE_CREDIT', 14);
|
||||
define('ACTIVITY_TYPE_UPDATE_CREDIT', 15);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_CREDIT', 16);
|
||||
define('ACTIVITY_TYPE_DELETE_CREDIT', 17);
|
||||
|
||||
define('ACTIVITY_TYPE_CREATE_QUOTE', 18);
|
||||
define('ACTIVITY_TYPE_UPDATE_QUOTE', 19);
|
||||
define('ACTIVITY_TYPE_EMAIL_QUOTE', 20);
|
||||
define('ACTIVITY_TYPE_VIEW_QUOTE', 21);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_QUOTE', 22);
|
||||
define('ACTIVITY_TYPE_DELETE_QUOTE', 23);
|
||||
define('ACTIVITY_TYPE_CREATE_QUOTE', 18);
|
||||
define('ACTIVITY_TYPE_UPDATE_QUOTE', 19);
|
||||
define('ACTIVITY_TYPE_EMAIL_QUOTE', 20);
|
||||
define('ACTIVITY_TYPE_VIEW_QUOTE', 21);
|
||||
define('ACTIVITY_TYPE_ARCHIVE_QUOTE', 22);
|
||||
define('ACTIVITY_TYPE_DELETE_QUOTE', 23);
|
||||
|
||||
define('ACTIVITY_TYPE_RESTORE_QUOTE', 24);
|
||||
define('ACTIVITY_TYPE_RESTORE_INVOICE', 25);
|
||||
define('ACTIVITY_TYPE_RESTORE_CLIENT', 26);
|
||||
define('ACTIVITY_TYPE_RESTORE_PAYMENT', 27);
|
||||
define('ACTIVITY_TYPE_RESTORE_CREDIT', 28);
|
||||
define('ACTIVITY_TYPE_APPROVE_QUOTE', 29);
|
||||
define('ACTIVITY_TYPE_RESTORE_QUOTE', 24);
|
||||
define('ACTIVITY_TYPE_RESTORE_INVOICE', 25);
|
||||
define('ACTIVITY_TYPE_RESTORE_CLIENT', 26);
|
||||
define('ACTIVITY_TYPE_RESTORE_PAYMENT', 27);
|
||||
define('ACTIVITY_TYPE_RESTORE_CREDIT', 28);
|
||||
define('ACTIVITY_TYPE_APPROVE_QUOTE', 29);
|
||||
|
||||
define('DEFAULT_INVOICE_NUMBER', '0001');
|
||||
define('RECENTLY_VIEWED_LIMIT', 8);
|
||||
define('LOGGED_ERROR_LIMIT', 100);
|
||||
define('RANDOM_KEY_LENGTH', 32);
|
||||
define('MAX_NUM_CLIENTS', 500);
|
||||
define('MAX_NUM_CLIENTS_PRO', 20000);
|
||||
define('MAX_NUM_USERS', 20);
|
||||
define('MAX_SUBDOMAIN_LENGTH', 30);
|
||||
define('DEFAULT_FONT_SIZE', 9);
|
||||
define('DEFAULT_INVOICE_NUMBER', '0001');
|
||||
define('RECENTLY_VIEWED_LIMIT', 8);
|
||||
define('LOGGED_ERROR_LIMIT', 100);
|
||||
define('RANDOM_KEY_LENGTH', 32);
|
||||
define('MAX_NUM_CLIENTS', 500);
|
||||
define('MAX_NUM_CLIENTS_PRO', 20000);
|
||||
define('MAX_NUM_USERS', 20);
|
||||
define('MAX_SUBDOMAIN_LENGTH', 30);
|
||||
define('DEFAULT_FONT_SIZE', 9);
|
||||
|
||||
define('INVOICE_STATUS_DRAFT', 1);
|
||||
define('INVOICE_STATUS_SENT', 2);
|
||||
define('INVOICE_STATUS_VIEWED', 3);
|
||||
define('INVOICE_STATUS_PARTIAL', 4);
|
||||
define('INVOICE_STATUS_PAID', 5);
|
||||
define('INVOICE_STATUS_DRAFT', 1);
|
||||
define('INVOICE_STATUS_SENT', 2);
|
||||
define('INVOICE_STATUS_VIEWED', 3);
|
||||
define('INVOICE_STATUS_PARTIAL', 4);
|
||||
define('INVOICE_STATUS_PAID', 5);
|
||||
|
||||
define('PAYMENT_TYPE_CREDIT', 1);
|
||||
define('CUSTOM_DESIGN', 11);
|
||||
define('PAYMENT_TYPE_CREDIT', 1);
|
||||
define('CUSTOM_DESIGN', 11);
|
||||
|
||||
define('FREQUENCY_WEEKLY', 1);
|
||||
define('FREQUENCY_TWO_WEEKS', 2);
|
||||
define('FREQUENCY_FOUR_WEEKS', 3);
|
||||
define('FREQUENCY_MONTHLY', 4);
|
||||
define('FREQUENCY_THREE_MONTHS', 5);
|
||||
define('FREQUENCY_SIX_MONTHS', 6);
|
||||
define('FREQUENCY_ANNUALLY', 7);
|
||||
define('FREQUENCY_WEEKLY', 1);
|
||||
define('FREQUENCY_TWO_WEEKS', 2);
|
||||
define('FREQUENCY_FOUR_WEEKS', 3);
|
||||
define('FREQUENCY_MONTHLY', 4);
|
||||
define('FREQUENCY_THREE_MONTHS', 5);
|
||||
define('FREQUENCY_SIX_MONTHS', 6);
|
||||
define('FREQUENCY_ANNUALLY', 7);
|
||||
|
||||
define('SESSION_TIMEZONE', 'timezone');
|
||||
define('SESSION_CURRENCY', 'currency');
|
||||
define('SESSION_DATE_FORMAT', 'dateFormat');
|
||||
define('SESSION_DATE_PICKER_FORMAT', 'datePickerFormat');
|
||||
define('SESSION_DATETIME_FORMAT', 'datetimeFormat');
|
||||
define('SESSION_COUNTER', 'sessionCounter');
|
||||
define('SESSION_LOCALE', 'sessionLocale');
|
||||
define('SESSION_USER_ACCOUNTS', 'userAccounts');
|
||||
define('SESSION_TIMEZONE', 'timezone');
|
||||
define('SESSION_CURRENCY', 'currency');
|
||||
define('SESSION_DATE_FORMAT', 'dateFormat');
|
||||
define('SESSION_DATE_PICKER_FORMAT', 'datePickerFormat');
|
||||
define('SESSION_DATETIME_FORMAT', 'datetimeFormat');
|
||||
define('SESSION_COUNTER', 'sessionCounter');
|
||||
define('SESSION_LOCALE', 'sessionLocale');
|
||||
define('SESSION_USER_ACCOUNTS', 'userAccounts');
|
||||
|
||||
define('SESSION_LAST_REQUEST_PAGE', 'SESSION_LAST_REQUEST_PAGE');
|
||||
define('SESSION_LAST_REQUEST_TIME', 'SESSION_LAST_REQUEST_TIME');
|
||||
define('SESSION_LAST_REQUEST_PAGE', 'SESSION_LAST_REQUEST_PAGE');
|
||||
define('SESSION_LAST_REQUEST_TIME', 'SESSION_LAST_REQUEST_TIME');
|
||||
|
||||
define('DEFAULT_TIMEZONE', 'US/Eastern');
|
||||
define('DEFAULT_CURRENCY', 1); // US Dollar
|
||||
define('DEFAULT_LANGUAGE', 1); // English
|
||||
define('DEFAULT_DATE_FORMAT', 'M j, Y');
|
||||
define('DEFAULT_DATE_PICKER_FORMAT', 'M d, yyyy');
|
||||
define('DEFAULT_DATETIME_FORMAT', 'F j, Y, g:i a');
|
||||
define('DEFAULT_QUERY_CACHE', 120); // minutes
|
||||
define('DEFAULT_LOCALE', 'en');
|
||||
define('DEFAULT_TIMEZONE', 'US/Eastern');
|
||||
define('DEFAULT_CURRENCY', 1); // US Dollar
|
||||
define('DEFAULT_LANGUAGE', 1); // English
|
||||
define('DEFAULT_DATE_FORMAT', 'M j, Y');
|
||||
define('DEFAULT_DATE_PICKER_FORMAT', 'M d, yyyy');
|
||||
define('DEFAULT_DATETIME_FORMAT', 'F j, Y, g:i a');
|
||||
define('DEFAULT_QUERY_CACHE', 120); // minutes
|
||||
define('DEFAULT_LOCALE', 'en');
|
||||
|
||||
define('RESULT_SUCCESS', 'success');
|
||||
define('RESULT_FAILURE', 'failure');
|
||||
define('RESULT_SUCCESS', 'success');
|
||||
define('RESULT_FAILURE', 'failure');
|
||||
|
||||
|
||||
define('PAYMENT_LIBRARY_OMNIPAY', 1);
|
||||
define('PAYMENT_LIBRARY_PHP_PAYMENTS', 2);
|
||||
define('PAYMENT_LIBRARY_OMNIPAY', 1);
|
||||
define('PAYMENT_LIBRARY_PHP_PAYMENTS', 2);
|
||||
|
||||
define('GATEWAY_AUTHORIZE_NET', 1);
|
||||
define('GATEWAY_AUTHORIZE_NET_SIM', 2);
|
||||
define('GATEWAY_PAYPAL_EXPRESS', 17);
|
||||
define('GATEWAY_PAYPAL_PRO', 18);
|
||||
define('GATEWAY_STRIPE', 23);
|
||||
define('GATEWAY_TWO_CHECKOUT', 27);
|
||||
define('GATEWAY_BEANSTREAM', 29);
|
||||
define('GATEWAY_PSIGATE', 30);
|
||||
define('GATEWAY_MOOLAH', 31);
|
||||
define('GATEWAY_BITPAY', 42);
|
||||
define('GATEWAY_DWOLLA', 43);
|
||||
define('GATEWAY_AUTHORIZE_NET', 1);
|
||||
define('GATEWAY_AUTHORIZE_NET_SIM', 2);
|
||||
define('GATEWAY_PAYPAL_EXPRESS', 17);
|
||||
define('GATEWAY_PAYPAL_PRO', 18);
|
||||
define('GATEWAY_STRIPE', 23);
|
||||
define('GATEWAY_TWO_CHECKOUT', 27);
|
||||
define('GATEWAY_BEANSTREAM', 29);
|
||||
define('GATEWAY_PSIGATE', 30);
|
||||
define('GATEWAY_MOOLAH', 31);
|
||||
define('GATEWAY_BITPAY', 42);
|
||||
define('GATEWAY_DWOLLA', 43);
|
||||
|
||||
define('EVENT_CREATE_CLIENT', 1);
|
||||
define('EVENT_CREATE_INVOICE', 2);
|
||||
define('EVENT_CREATE_QUOTE', 3);
|
||||
define('EVENT_CREATE_PAYMENT', 4);
|
||||
define('EVENT_CREATE_CLIENT', 1);
|
||||
define('EVENT_CREATE_INVOICE', 2);
|
||||
define('EVENT_CREATE_QUOTE', 3);
|
||||
define('EVENT_CREATE_PAYMENT', 4);
|
||||
|
||||
define('REQUESTED_PRO_PLAN', 'REQUESTED_PRO_PLAN');
|
||||
define('DEMO_ACCOUNT_ID', 'DEMO_ACCOUNT_ID');
|
||||
define('PREV_USER_ID', 'PREV_USER_ID');
|
||||
define('NINJA_ACCOUNT_KEY', 'zg4ylmzDkdkPOT8yoKQw9LTWaoZJx79h');
|
||||
define('NINJA_GATEWAY_ID', GATEWAY_STRIPE);
|
||||
define('NINJA_GATEWAY_CONFIG', '');
|
||||
define('NINJA_WEB_URL', 'https://www.invoiceninja.com');
|
||||
define('NINJA_APP_URL', 'https://app.invoiceninja.com');
|
||||
define('NINJA_VERSION', '2.3.3');
|
||||
define('NINJA_DATE', '2000-01-01');
|
||||
define('REQUESTED_PRO_PLAN', 'REQUESTED_PRO_PLAN');
|
||||
define('DEMO_ACCOUNT_ID', 'DEMO_ACCOUNT_ID');
|
||||
define('PREV_USER_ID', 'PREV_USER_ID');
|
||||
define('NINJA_ACCOUNT_KEY', 'zg4ylmzDkdkPOT8yoKQw9LTWaoZJx79h');
|
||||
define('NINJA_GATEWAY_ID', GATEWAY_STRIPE);
|
||||
define('NINJA_GATEWAY_CONFIG', '');
|
||||
define('NINJA_WEB_URL', 'https://www.invoiceninja.com');
|
||||
define('NINJA_APP_URL', 'https://app.invoiceninja.com');
|
||||
define('NINJA_VERSION', '2.3.3');
|
||||
define('NINJA_DATE', '2000-01-01');
|
||||
|
||||
define('NINJA_FROM_EMAIL', 'maildelivery@invoiceninja.com');
|
||||
define('RELEASES_URL', 'https://github.com/hillelcoren/invoice-ninja/releases/');
|
||||
define('ZAPIER_URL', 'https://zapier.com/developer/invite/11276/85cf0ee4beae8e802c6c579eb4e351f1/');
|
||||
define('OUTDATE_BROWSER_URL', 'http://browsehappy.com/');
|
||||
define('PDFMAKE_DOCS', 'http://pdfmake.org/playground.html');
|
||||
define('NINJA_FROM_EMAIL', 'maildelivery@invoiceninja.com');
|
||||
define('RELEASES_URL', 'https://github.com/hillelcoren/invoice-ninja/releases/');
|
||||
define('ZAPIER_URL', 'https://zapier.com/developer/invite/11276/85cf0ee4beae8e802c6c579eb4e351f1/');
|
||||
define('OUTDATE_BROWSER_URL', 'http://browsehappy.com/');
|
||||
define('PDFMAKE_DOCS', 'http://pdfmake.org/playground.html');
|
||||
|
||||
define('COUNT_FREE_DESIGNS', 4);
|
||||
define('COUNT_FREE_DESIGNS_SELF_HOST', 5); // include the custom design
|
||||
define('PRODUCT_ONE_CLICK_INSTALL', 1);
|
||||
define('PRODUCT_INVOICE_DESIGNS', 2);
|
||||
define('PRODUCT_WHITE_LABEL', 3);
|
||||
define('PRODUCT_SELF_HOST', 4);
|
||||
define('WHITE_LABEL_AFFILIATE_KEY', '92D2J5');
|
||||
define('INVOICE_DESIGNS_AFFILIATE_KEY', 'T3RS74');
|
||||
define('SELF_HOST_AFFILIATE_KEY', '8S69AD');
|
||||
define('COUNT_FREE_DESIGNS', 4);
|
||||
define('COUNT_FREE_DESIGNS_SELF_HOST', 5); // include the custom design
|
||||
define('PRODUCT_ONE_CLICK_INSTALL', 1);
|
||||
define('PRODUCT_INVOICE_DESIGNS', 2);
|
||||
define('PRODUCT_WHITE_LABEL', 3);
|
||||
define('PRODUCT_SELF_HOST', 4);
|
||||
define('WHITE_LABEL_AFFILIATE_KEY', '92D2J5');
|
||||
define('INVOICE_DESIGNS_AFFILIATE_KEY', 'T3RS74');
|
||||
define('SELF_HOST_AFFILIATE_KEY', '8S69AD');
|
||||
|
||||
define('PRO_PLAN_PRICE', 50);
|
||||
define('WHITE_LABEL_PRICE', 20);
|
||||
define('INVOICE_DESIGNS_PRICE', 10);
|
||||
define('PRO_PLAN_PRICE', 50);
|
||||
define('WHITE_LABEL_PRICE', 20);
|
||||
define('INVOICE_DESIGNS_PRICE', 10);
|
||||
|
||||
define('USER_TYPE_SELF_HOST', 'SELF_HOST');
|
||||
define('USER_TYPE_CLOUD_HOST', 'CLOUD_HOST');
|
||||
define('NEW_VERSION_AVAILABLE', 'NEW_VERSION_AVAILABLE');
|
||||
define('USER_TYPE_SELF_HOST', 'SELF_HOST');
|
||||
define('USER_TYPE_CLOUD_HOST', 'CLOUD_HOST');
|
||||
define('NEW_VERSION_AVAILABLE', 'NEW_VERSION_AVAILABLE');
|
||||
|
||||
define('TEST_USERNAME', 'user@email.com');
|
||||
define('TEST_PASSWORD', 'password');
|
||||
define('TEST_USERNAME', 'user@example.com');
|
||||
define('TEST_PASSWORD', 'password');
|
||||
|
||||
define('TOKEN_BILLING_DISABLED', 1);
|
||||
define('TOKEN_BILLING_OPT_IN', 2);
|
||||
define('TOKEN_BILLING_OPT_OUT', 3);
|
||||
define('TOKEN_BILLING_ALWAYS', 4);
|
||||
define('TOKEN_BILLING_DISABLED', 1);
|
||||
define('TOKEN_BILLING_OPT_IN', 2);
|
||||
define('TOKEN_BILLING_OPT_OUT', 3);
|
||||
define('TOKEN_BILLING_ALWAYS', 4);
|
||||
|
||||
define('PAYMENT_TYPE_PAYPAL', 'PAYMENT_TYPE_PAYPAL');
|
||||
define('PAYMENT_TYPE_CREDIT_CARD', 'PAYMENT_TYPE_CREDIT_CARD');
|
||||
define('PAYMENT_TYPE_BITCOIN', 'PAYMENT_TYPE_BITCOIN');
|
||||
define('PAYMENT_TYPE_DWOLLA', 'PAYMENT_TYPE_DWOLLA');
|
||||
define('PAYMENT_TYPE_TOKEN', 'PAYMENT_TYPE_TOKEN');
|
||||
define('PAYMENT_TYPE_ANY', 'PAYMENT_TYPE_ANY');
|
||||
define('PAYMENT_TYPE_PAYPAL', 'PAYMENT_TYPE_PAYPAL');
|
||||
define('PAYMENT_TYPE_CREDIT_CARD', 'PAYMENT_TYPE_CREDIT_CARD');
|
||||
define('PAYMENT_TYPE_BITCOIN', 'PAYMENT_TYPE_BITCOIN');
|
||||
define('PAYMENT_TYPE_DWOLLA', 'PAYMENT_TYPE_DWOLLA');
|
||||
define('PAYMENT_TYPE_TOKEN', 'PAYMENT_TYPE_TOKEN');
|
||||
define('PAYMENT_TYPE_ANY', 'PAYMENT_TYPE_ANY');
|
||||
|
||||
$creditCards = [
|
||||
$creditCards = [
|
||||
1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'],
|
||||
2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'],
|
||||
4 => ['card' => 'images/credit_cards/Test-AmericanExpress-Icon.png', 'text' => 'American Express'],
|
||||
@ -422,16 +423,16 @@ $creditCards = [
|
||||
16 => ['card' => 'images/credit_cards/Test-Discover-Icon.png', 'text' => 'Discover']
|
||||
];
|
||||
|
||||
define('CREDIT_CARDS', serialize($creditCards));
|
||||
define('CREDIT_CARDS', serialize($creditCards));
|
||||
|
||||
function uctrans($text)
|
||||
{
|
||||
function uctrans($text)
|
||||
{
|
||||
return ucwords(trans($text));
|
||||
}
|
||||
}
|
||||
|
||||
// optional trans: only return the string if it's translated
|
||||
function otrans($text)
|
||||
{
|
||||
// optional trans: only return the string if it's translated
|
||||
function otrans($text)
|
||||
{
|
||||
$locale = Session::get(SESSION_LOCALE);
|
||||
|
||||
if ($locale == 'en') {
|
||||
@ -441,6 +442,7 @@ function otrans($text)
|
||||
$english = trans($text, [], 'en');
|
||||
return $string != $english ? $string : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -119,6 +119,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'pretend' => false,
|
||||
'pretend' => env('MAIL_PRETEND'),
|
||||
|
||||
];
|
||||
|
@ -23,6 +23,8 @@ class UserTableSeeder extends Seeder
|
||||
'username' => TEST_USERNAME,
|
||||
'account_id' => $account->id,
|
||||
'password' => Hash::make(TEST_PASSWORD),
|
||||
'registered' => true,
|
||||
'confirmed' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ return array(
|
||||
'client' => 'Kunde',
|
||||
'invoice_date' => 'Rechnungsdatum',
|
||||
'due_date' => 'Fällig am',
|
||||
'invoice_number' => 'Rechungsnummer',
|
||||
'invoice_number' => 'Rechnungsnummer',
|
||||
'invoice_number_short' => 'Rechnung #',
|
||||
'po_number' => 'Bestellnummer',
|
||||
'po_number_short' => 'BN #',
|
||||
@ -346,7 +346,7 @@ return array(
|
||||
|
||||
'chart_builder' => 'Diagrammersteller',
|
||||
'ninja_email_footer' => 'Nutze :site um Kunden Rechnungen zu stellen und online bezahlt zu werden, kostenlos!',
|
||||
'go_pro' => 'Werde Pro-Mitglied',
|
||||
'go_pro' => 'Go Pro',
|
||||
|
||||
// Quotes
|
||||
'quote' => 'Angebot',
|
||||
|
@ -20,7 +20,7 @@
|
||||
@endif
|
||||
|
||||
{!! Former::text('product_key')->label('texts.product') !!}
|
||||
{!! Former::textarea('notes')->data_bind("value: wrapped_notes, valueUpdate: 'afterkeydown'") !!}
|
||||
{!! Former::textarea('notes') !!}
|
||||
{!! Former::text('cost') !!}
|
||||
|
||||
</div>
|
||||
@ -35,29 +35,6 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function ViewModel(data) {
|
||||
var self = this;
|
||||
@if ($product)
|
||||
self.notes = ko.observable(wordWrapText('{{ str_replace(["\r\n","\r","\n"], '\n', addslashes($product->notes)) }}', 300));
|
||||
@else
|
||||
self.notes = ko.observable('');
|
||||
@endif
|
||||
|
||||
self.wrapped_notes = ko.computed({
|
||||
read: function() {
|
||||
return self.notes();
|
||||
},
|
||||
write: function(value) {
|
||||
value = wordWrapText(value, 235);
|
||||
self.notes(value);
|
||||
},
|
||||
owner: this
|
||||
});
|
||||
}
|
||||
|
||||
window.model = new ViewModel();
|
||||
ko.applyBindings(model);
|
||||
|
||||
$(function() {
|
||||
$('#product_key').focus();
|
||||
});
|
||||
|
@ -100,10 +100,10 @@
|
||||
<div class="pull-right" style="padding-top: 6px">
|
||||
{!! trans('texts.created_by_invoice', ['invoice' => link_to('/invoices/'.$invoice->recurring_invoice->public_id, trans('texts.recurring_invoice'))]) !!}
|
||||
</div>
|
||||
@elseif ($invoice && $invoice->last_sent_date && $invoice->recurring_invoices->last())
|
||||
@elseif ($invoice && isset($lastSent) && $lastSent)
|
||||
<div class="pull-right" style="padding-top: 6px">
|
||||
{!! trans('texts.last_invoice_sent', [
|
||||
'date' => link_to('/invoices/'.$invoice->recurring_invoices->last()->public_id, Utils::dateToString($invoice->last_sent_date))
|
||||
'date' => link_to('/invoices/'.$lastSent->public_id, Utils::dateToString($invoice->last_sent_date), ['id' => 'lastInvoiceSent'])
|
||||
]) !!}
|
||||
</div>
|
||||
@endif
|
||||
|
@ -2,5 +2,5 @@
|
||||
// This is global bootstrap for autoloading
|
||||
use Codeception\Util\Fixtures;
|
||||
|
||||
Fixtures::add('username', 'user@email.com');
|
||||
Fixtures::add('username', 'user@example.com');
|
||||
Fixtures::add('password', 'password');
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use Codeception\Util\Fixtures;
|
||||
|
||||
/**
|
||||
* Inherited Methods
|
||||
@ -23,4 +24,15 @@ class FunctionalTester extends \Codeception\Actor
|
||||
/**
|
||||
* Define custom actions here
|
||||
*/
|
||||
function checkIfLogin(\FunctionalTester $I)
|
||||
{
|
||||
//if ($I->loadSessionSnapshot('login')) return;
|
||||
|
||||
$I->amOnPage('/login');
|
||||
$I->fillField(['name' => 'email'], Fixtures::get('username'));
|
||||
$I->fillField(['name' => 'password'], Fixtures::get('password'));
|
||||
$I->click('Let\'s go');
|
||||
|
||||
//$I->saveSessionSnapshot('login');
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -25,7 +25,7 @@ class ChartsAndReportsCest
|
||||
|
||||
$faker = Faker\Factory::create();
|
||||
|
||||
$I->wantTo("Run the report");
|
||||
$I->wantTo('Run the report');
|
||||
|
||||
$I->amOnPage('/company/advanced_settings/charts_and_reports');
|
||||
|
||||
|
@ -1,30 +0,0 @@
|
||||
<?php
|
||||
use \AcceptanceTester;
|
||||
use Faker\Factory;
|
||||
|
||||
class GatewayCest
|
||||
{
|
||||
private $faker;
|
||||
|
||||
public function _before(AcceptanceTester $I)
|
||||
{
|
||||
$I->checkIfLogin($I);
|
||||
|
||||
$this->faker = Factory::create();
|
||||
}
|
||||
|
||||
|
||||
// tests
|
||||
public function create(AcceptanceTester $I)
|
||||
{
|
||||
$I->wantTo("create a gateway");
|
||||
$I->amOnPage('/gateways/create');
|
||||
$I->seeCurrentUrlEquals('/gateways/create');
|
||||
|
||||
$I->fillField(['name' => '23_apiKey'], $this->faker->swiftBicNumber);
|
||||
$I->click('Save');
|
||||
|
||||
$I->see('Successfully created gateway');
|
||||
$I->seeInDatabase('account_gateways', array('gateway_id' => 23));
|
||||
}
|
||||
}
|
@ -47,18 +47,22 @@ class InvoiceCest
|
||||
$I->amOnPage('/recurring_invoices/create');
|
||||
|
||||
$I->selectDropdown($I, $clientName, '.client_select .dropdown-toggle');
|
||||
//$I->selectOption('#frequency_id', Helper::getRandom('Frequency'));
|
||||
$I->selectDataPicker($I, '#start_date');
|
||||
$I->selectDataPicker($I, '#end_date', '+ 1 week');
|
||||
|
||||
$I->fillField('#po_number', rand(100, 200));
|
||||
$I->fillField('#discount', rand(0, 20));
|
||||
|
||||
$this->fillItems($I);
|
||||
|
||||
$I->executeJS('submitAction()');
|
||||
$I->executeJS("submitAction('email')");
|
||||
$I->wait(1);
|
||||
$I->see($clientName);
|
||||
|
||||
$invoiceNumber = $I->grabAttributeFrom('#invoice_number', 'value');
|
||||
$I->click('Recurring Invoice');
|
||||
$I->see($clientName);
|
||||
|
||||
$I->click('#lastInvoiceSent');
|
||||
$I->see($invoiceNumber);
|
||||
}
|
||||
|
||||
public function editInvoice(AcceptanceTester $I)
|
||||
@ -111,25 +115,6 @@ class InvoiceCest
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
public function indexInvoice(AcceptanceTester $I)
|
||||
{
|
||||
$I->wantTo('list invoices');
|
||||
|
||||
$I->amOnPage('/invoices');
|
||||
$I->seeCurrentUrlEquals('/invoices');
|
||||
|
||||
$random_invoice_number = Helper::getRandom('Invoice', 'invoice_number', [
|
||||
'is_quote' => 0,
|
||||
'is_recurring' => false
|
||||
]);
|
||||
|
||||
if ($random_invoice_number) {
|
||||
$I->wait(2);
|
||||
$I->see($random_invoice_number);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
private function fillItems(AcceptanceTester $I, $max = 2)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ class PaymentCest
|
||||
$clientName = $I->grabFromDatabase('clients', 'name');
|
||||
$amount = rand(1, 30);
|
||||
|
||||
$I->wantTo("enter a payment");
|
||||
$I->wantTo('enter a payment');
|
||||
$I->amOnPage('/payments/create');
|
||||
|
||||
$I->selectDropdown($I, $clientName, '.client-select .dropdown-toggle');
|
||||
@ -40,7 +40,7 @@ class PaymentCest
|
||||
{
|
||||
$ref = $this->faker->text(12);
|
||||
|
||||
$I->wantTo("edit a payment");
|
||||
$I->wantTo('edit a payment');
|
||||
$I->amOnPage('/payments/1/edit');
|
||||
|
||||
$I->selectDataPicker($I, '#payment_date', 'now + 2 day');
|
||||
@ -52,7 +52,7 @@ class PaymentCest
|
||||
|
||||
public function listPayments(AcceptanceTester $I)
|
||||
{
|
||||
$I->wantTo("list payments");
|
||||
$I->wantTo('list payments');
|
||||
$I->amOnPage('/payments');
|
||||
|
||||
$I->seeNumberOfElements('tbody tr[role=row]', [1, 10]);
|
||||
|
@ -69,7 +69,7 @@ class TaskCest
|
||||
|
||||
public function listTasks(AcceptanceTester $I)
|
||||
{
|
||||
$I->wantTo("list tasks");
|
||||
$I->wantTo('list tasks');
|
||||
$I->amOnPage('/tasks');
|
||||
|
||||
$I->seeNumberOfElements('tbody tr[role=row]', [1, 10]);
|
||||
|
@ -7,5 +7,9 @@
|
||||
class_name: FunctionalTester
|
||||
modules:
|
||||
enabled:
|
||||
# add framework module here
|
||||
- \Helper\Functional
|
||||
- PhpBrowser:
|
||||
url: 'http://ninja.dev/'
|
||||
- Laravel5:
|
||||
environment_file: '.env'
|
||||
cleanup: false
|
193
tests/functional/SettingsCest.php
Normal file
193
tests/functional/SettingsCest.php
Normal file
@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
use \FunctionalTester;
|
||||
use Faker\Factory;
|
||||
|
||||
class SettingsCest
|
||||
{
|
||||
private $faker;
|
||||
|
||||
public function _before(FunctionalTester $I)
|
||||
{
|
||||
$I->checkIfLogin($I);
|
||||
|
||||
$this->faker = Factory::create();
|
||||
}
|
||||
|
||||
public function companyDetails(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the company details');
|
||||
$I->amOnPage('/company/details');
|
||||
|
||||
$name = $this->faker->company;
|
||||
|
||||
$I->fillField(['name' => 'name'], $name);
|
||||
$I->fillField(['name' => 'work_email'], $this->faker->safeEmail);
|
||||
$I->fillField(['name' => 'work_phone'], $this->faker->phoneNumber);
|
||||
$I->fillField(['name' => 'address1'], $this->faker->buildingNumber . ' ' . $this->faker->streetName);
|
||||
$I->fillField(['name' => 'address2'], $this->faker->secondaryAddress);
|
||||
$I->fillField(['name' => 'city'], $this->faker->city);
|
||||
$I->fillField(['name' => 'state'], $this->faker->state);
|
||||
$I->fillField(['name' => 'postal_code'], $this->faker->postcode);
|
||||
|
||||
$I->fillField(['name' => 'first_name'], $this->faker->firstName);
|
||||
$I->fillField(['name' => 'last_name'], $this->faker->lastName);
|
||||
$I->fillField(['name' => 'phone'], $this->faker->phoneNumber);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
$I->seeRecord('accounts', array('name' => $name));
|
||||
}
|
||||
|
||||
public function productSettings(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update the product settings');
|
||||
$I->amOnPage('/company/products');
|
||||
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
}
|
||||
|
||||
public function onlinePayments(FunctionalTester $I)
|
||||
{
|
||||
$gateway = $I->grabRecord('account_gateways', array('gateway_id' => 23));
|
||||
|
||||
if (!$gateway) {
|
||||
$apiKey = $this->faker->swiftBicNumber;
|
||||
|
||||
$I->wantTo('create a gateway');
|
||||
$I->amOnPage('/gateways/create');
|
||||
$I->seeCurrentUrlEquals('/gateways/create');
|
||||
|
||||
$I->fillField(['name' => '23_apiKey'], $apiKey);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully created gateway');
|
||||
$I->seeRecord('account_gateways', array('gateway_id' => 23));
|
||||
} else {
|
||||
$config = json_decode($gateway->config);
|
||||
$apiKey = $config->apiKey;
|
||||
}
|
||||
|
||||
/*
|
||||
$I->amOnPage('/gateways/1/edit');
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated gateway');
|
||||
$I->seeRecord('account_gateways', array('config' => '{"apiKey":"ASHHOWAH"}'));
|
||||
*/
|
||||
}
|
||||
|
||||
public function createProduct(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('create a product');
|
||||
$I->amOnPage('/products/create');
|
||||
|
||||
$productKey = $this->faker->text(10);
|
||||
|
||||
$I->fillField(['name' => 'product_key'], $productKey);
|
||||
$I->fillField(['name' => 'notes'], $this->faker->text(80));
|
||||
$I->fillField(['name' => 'cost'], $this->faker->numberBetween(1,20));
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully created product');
|
||||
$I->seeRecord('products', array('product_key' => $productKey));
|
||||
}
|
||||
|
||||
public function updateProduct(FunctionalTester $I)
|
||||
{
|
||||
return;
|
||||
|
||||
$I->wantTo('update a product');
|
||||
$I->amOnPage('/products/1/edit');
|
||||
|
||||
$productKey = $this->faker->text(10);
|
||||
|
||||
$I->fillField(['name' => 'product_key'], $productKey);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated product');
|
||||
$I->seeRecord('products', array('product_key' => $productKey));
|
||||
}
|
||||
|
||||
public function updateNotifications(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update notification settings');
|
||||
$I->amOnPage('/company/notifications');
|
||||
|
||||
$terms = $this->faker->text(80);
|
||||
|
||||
$I->fillField(['name' => 'invoice_terms'], $terms);
|
||||
$I->fillField(['name' => 'invoice_footer'], $this->faker->text(60));
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
$I->seeRecord('accounts', array('invoice_terms' => $terms));
|
||||
}
|
||||
|
||||
public function updateInvoiceDesign(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update invoice design');
|
||||
$I->amOnPage('/company/advanced_settings/invoice_design');
|
||||
|
||||
$color = $this->faker->hexcolor;
|
||||
|
||||
$I->fillField(['name' => 'labels_item'], $this->faker->text(14));
|
||||
$I->fillField(['name' => 'primary_color'], $color);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
$I->seeRecord('accounts', array('primary_color' => $color));
|
||||
}
|
||||
|
||||
public function updateInvoiceSettings(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update invoice settings');
|
||||
$I->amOnPage('/company/advanced_settings/invoice_settings');
|
||||
|
||||
$label = $this->faker->text(10);
|
||||
|
||||
$I->fillField(['name' => 'custom_client_label1'], $label);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
$I->seeRecord('accounts', array('custom_client_label1' => $label));
|
||||
|
||||
$I->amOnPage('/clients/create');
|
||||
$I->see($label);
|
||||
}
|
||||
|
||||
public function updateEmailTemplates(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update email templates');
|
||||
$I->amOnPage('/company/advanced_settings/email_templates');
|
||||
|
||||
$string = $this->faker->text(100);
|
||||
|
||||
$I->fillField(['name' => 'email_template_payment'], $string);
|
||||
$I->click('Save');
|
||||
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->see('Successfully updated settings');
|
||||
$I->seeRecord('accounts', array('email_template_payment' => $string));
|
||||
}
|
||||
|
||||
public function runReport(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('run the report');
|
||||
$I->amOnPage('/company/advanced_settings/charts_and_reports');
|
||||
|
||||
$I->click('Run');
|
||||
$I->seeResponseCodeIs(200);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user