dorsale 3.1.7 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/app/assets/javascripts/dorsale/common/comments.coffee +18 -20
- data/app/assets/javascripts/dorsale/common/datepicker.coffee +1 -1
- data/app/assets/javascripts/dorsale/common/forms.coffee +1 -1
- data/app/assets/javascripts/dorsale/common/modals.coffee +1 -1
- data/app/assets/javascripts/dorsale/common/tabs_loader.coffee +1 -1
- data/app/assets/javascripts/dorsale/common/tags.coffee +1 -1
- data/app/assets/javascripts/dorsale/common/tooltips.coffee +1 -1
- data/app/assets/javascripts/dorsale/dependencies.coffee +2 -0
- data/app/assets/javascripts/dorsale/engines/billing_machine.coffee +1 -1
- data/app/assets/stylesheets/dorsale/all.sass +1 -1
- data/app/assets/stylesheets/dorsale/common/comments.sass +1 -1
- data/app/assets/stylesheets/dorsale/common/filters.sass +16 -1
- data/app/assets/stylesheets/dorsale/common/styles.sass +3 -0
- data/app/assets/stylesheets/dorsale/engines/customer_vault.sass +2 -2
- data/app/assets/stylesheets/dorsale/engines/expense_gun.sass +3 -0
- data/app/assets/stylesheets/dorsale/engines/flyboy.sass +4 -0
- data/app/assets/stylesheets/dorsale/print.sass +73 -0
- data/app/controllers/dorsale/alexandrie/attachments_controller.rb +0 -4
- data/app/controllers/dorsale/application_controller.rb +12 -0
- data/app/controllers/dorsale/billing_machine/application_controller.rb +0 -5
- data/app/controllers/dorsale/billing_machine/id_cards_controller.rb +0 -4
- data/app/controllers/dorsale/billing_machine/invoices_controller.rb +0 -4
- data/app/controllers/dorsale/billing_machine/payment_terms_controller.rb +0 -4
- data/app/controllers/dorsale/billing_machine/quotations_controller.rb +0 -4
- data/app/controllers/dorsale/comments_controller.rb +30 -55
- data/app/controllers/dorsale/customer_vault/links_controller.rb +5 -5
- data/app/controllers/dorsale/customer_vault/people_controller.rb +9 -11
- data/app/controllers/dorsale/expense_gun/categories_controller.rb +0 -4
- data/app/controllers/dorsale/expense_gun/expenses_controller.rb +1 -5
- data/app/controllers/dorsale/flyboy/folders_controller.rb +0 -4
- data/app/controllers/dorsale/flyboy/tasks_controller.rb +0 -4
- data/app/controllers/dorsale/users_controller.rb +7 -11
- data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_customer.rb +1 -1
- data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +1 -1
- data/app/helpers/dorsale/all_helpers.rb +1 -0
- data/app/helpers/dorsale/billing_machine/application_helper.rb +23 -0
- data/app/helpers/dorsale/comments_helper.rb +14 -2
- data/app/helpers/dorsale/flyboy/application_helper.rb +4 -0
- data/app/helpers/dorsale/text_helper.rb +12 -7
- data/app/libs/dorsale/sortable_uuid_generator.rb +11 -0
- data/app/mailers/dorsale/billing_machine/invoice_mailer.rb +2 -4
- data/app/models/concerns/dorsale/active_record_uuid_concern.rb +15 -0
- data/app/models/concerns/dorsale/default_values_concern.rb +13 -0
- data/app/models/dorsale/alexandrie/attachment.rb +3 -3
- data/app/models/dorsale/application_record.rb +11 -0
- data/app/models/dorsale/billing_machine/invoice.rb +13 -13
- data/app/models/dorsale/billing_machine/invoice_line.rb +3 -9
- data/app/models/dorsale/billing_machine/quotation.rb +6 -12
- data/app/models/dorsale/billing_machine/quotation_line.rb +3 -8
- data/app/models/dorsale/customer_vault/person.rb +5 -4
- data/app/models/dorsale/expense_gun/expense.rb +3 -4
- data/app/models/dorsale/expense_gun/expense_line.rb +4 -5
- data/app/models/dorsale/flyboy/folder.rb +2 -3
- data/app/models/dorsale/flyboy/task.rb +5 -6
- data/app/models/dorsale/flyboy/task_comment.rb +3 -8
- data/app/models/dorsale/users/active.rb +1 -1
- data/app/policies/dorsale/billing_machine/invoice_policy_helper.rb +5 -0
- data/app/policies/dorsale/comment_policy_helper.rb +21 -0
- data/app/serializers/dorsale/serializers/xlsx.rb +13 -2
- data/app/views/dorsale/billing_machine/invoices/_details.html.slim +1 -1
- data/app/views/dorsale/billing_machine/invoices/_filters.html.slim +1 -1
- data/app/views/dorsale/billing_machine/invoices/_form.html.slim +1 -1
- data/app/views/dorsale/billing_machine/invoices/_header_infos.html.slim +9 -4
- data/app/views/dorsale/billing_machine/invoices/_list.html.slim +3 -2
- data/app/views/dorsale/billing_machine/invoices/email.html.slim +6 -0
- data/app/views/dorsale/billing_machine/invoices/index.html.slim +1 -1
- data/app/views/dorsale/billing_machine/invoices/index.xlsx.ruby +41 -0
- data/app/views/dorsale/billing_machine/quotations/_filters.html.slim +1 -1
- data/app/views/dorsale/billing_machine/quotations/_list.html.slim +4 -3
- data/app/views/dorsale/comments/_comment.html.slim +2 -2
- data/app/views/dorsale/comments/_comments.html.slim +5 -0
- data/app/views/dorsale/comments/_form.html.slim +5 -6
- data/app/views/dorsale/comments/_list.html.slim +1 -1
- data/app/views/dorsale/comments/edit.html.slim +1 -1
- data/app/views/dorsale/customer_vault/links/edit.html.slim +13 -17
- data/app/views/dorsale/customer_vault/links/index.html.slim +10 -0
- data/app/views/dorsale/customer_vault/links/new.html.slim +10 -14
- data/app/views/dorsale/customer_vault/people/_actions.html.slim +2 -2
- data/app/views/dorsale/customer_vault/people/_data_context.html.slim +1 -1
- data/app/views/dorsale/customer_vault/people/_index_tabs.html.slim +2 -2
- data/app/views/dorsale/customer_vault/people/_show_layout.html.slim +10 -0
- data/app/views/dorsale/customer_vault/people/_tabs.html.slim +24 -0
- data/app/views/dorsale/customer_vault/people/activity.slim +2 -3
- data/app/views/dorsale/customer_vault/people/edit.html.slim +1 -0
- data/app/views/dorsale/customer_vault/people/index.html.slim +2 -2
- data/app/views/dorsale/customer_vault/people/index.xlsx.ruby +49 -0
- data/app/views/dorsale/customer_vault/people/invoices.html.slim +5 -0
- data/app/views/dorsale/customer_vault/people/show.html.slim +5 -26
- data/app/views/dorsale/customer_vault/people/tasks.html.slim +4 -0
- data/app/views/dorsale/expense_gun/categories/_list.html.slim +4 -1
- data/app/views/dorsale/expense_gun/expenses/_list.html.slim +1 -1
- data/app/views/dorsale/expense_gun/expenses/show.html.slim +3 -3
- data/app/views/dorsale/flyboy/_filters.html.slim +3 -0
- data/app/views/dorsale/flyboy/folders/_form.html.slim +3 -1
- data/app/views/dorsale/flyboy/folders/_list.html.slim +2 -2
- data/app/views/dorsale/flyboy/task_comments/_list.html.slim +2 -2
- data/app/views/dorsale/flyboy/tasks/_form.html.slim +4 -1
- data/app/views/dorsale/flyboy/tasks/_list.html.slim +1 -1
- data/app/views/dorsale/flyboy/tasks/_summary_list.html.slim +6 -5
- data/app/views/dorsale/flyboy/tasks/index.html.slim +2 -4
- data/app/views/dorsale/flyboy/tasks/index.xlsx.ruby +23 -0
- data/app/views/dorsale/flyboy/tasks/summary.html.slim +0 -2
- data/config/locales/common.en.yml +2 -0
- data/config/locales/common.fr.yml +2 -0
- data/config/locales/customer_vault.en.yml +0 -6
- data/config/locales/customer_vault.fr.yml +0 -6
- data/config/locales/flyboy.en.yml +2 -0
- data/config/locales/flyboy.fr.yml +2 -0
- data/config/routes.rb +7 -2
- data/db/migrate/20161118071317_dorsale_add_missing_indexes.rb +25 -0
- data/features/billing_machine_invoices.feature +4 -2
- data/features/customer_vault_invoices.feature +10 -0
- data/features/customer_vault_tasks.feature +1 -1
- data/features/flyboy_tasks.feature +3 -15
- data/features/step_definitions/billing_machine_invoices_steps.rb +2 -6
- data/features/step_definitions/billing_machine_quotations_steps.rb +5 -5
- data/features/step_definitions/common_steps.rb +7 -1
- data/features/step_definitions/customer_vault_corporations_steps.rb +7 -7
- data/features/step_definitions/customer_vault_filters_steps.rb +3 -3
- data/features/step_definitions/customer_vault_individuals_steps.rb +1 -1
- data/features/step_definitions/customer_vault_invoices_steps.rb +7 -0
- data/features/step_definitions/customer_vault_links_steps.rb +5 -3
- data/features/step_definitions/customer_vault_people_steps.rb +1 -1
- data/features/step_definitions/customer_vault_search_steps.rb +4 -4
- data/features/step_definitions/customer_vault_tasks_steps.rb +6 -16
- data/features/step_definitions/expense_gun_expenses_steps.rb +2 -2
- data/features/step_definitions/flyboy_folders_steps.rb +5 -5
- data/features/step_definitions/flyboy_tasks_steps.rb +5 -29
- data/lib/dorsale/engine.rb +6 -1
- data/lib/dorsale/polymorphic_id.rb +1 -1
- data/lib/dorsale/version.rb +1 -1
- data/spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb +3 -4
- data/spec/controllers/dorsale/comments_controller_spec.rb +3 -3
- data/spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb +10 -0
- data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +1 -13
- data/spec/factories/dorsale_comments.rb +3 -3
- data/spec/helpers/dorsale/text_helper_spec.rb +15 -0
- data/spec/{lib → libs}/active_record_comma_type_cast_spec.rb +0 -0
- data/spec/{lib → libs/dorsale}/polymorphic_id_spec.rb +0 -0
- data/spec/libs/dorsale/sortable_uuid_generator_spec.rb +29 -0
- data/spec/rails_helper.rb +2 -0
- data/spec/routing/dorsale/customer_vault/people_routing_spec.rb +15 -0
- metadata +54 -18
- data/app/pdfs/dorsale/flyboy/roadmap.rb +0 -47
- data/app/views/dorsale/billing_machine/invoices/index.csv.ruby +0 -46
- data/app/views/dorsale/comments/_loader.html.slim +0 -5
- data/app/views/dorsale/comments/index.html.slim +0 -11
- data/app/views/dorsale/customer_vault/people/_activity_tab.html.slim +0 -4
- data/app/views/dorsale/customer_vault/people/_comment.html.slim +0 -1
- data/app/views/dorsale/customer_vault/people/_links_tab.html.slim +0 -7
- data/app/views/dorsale/customer_vault/people/_tasks_tab.html.slim +0 -1
- data/app/views/dorsale/customer_vault/people/index.xls.slim +0 -24
- data/app/views/dorsale/flyboy/tasks/index.csv.ruby +0 -24
- data/app/views/dorsale/flyboy/tasks/index.pdf.ruby +0 -6
- data/app/views/dorsale/flyboy/tasks/index.xls.erb +0 -29
|
@@ -23,8 +23,8 @@ Alors(/^this individual appear in search results$/) do
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
Alors(/^other individuals do not appear in search results$/) do
|
|
26
|
-
expect(page).
|
|
27
|
-
expect(page).
|
|
26
|
+
expect(page).to have_no_content "Laurent"
|
|
27
|
+
expect(page).to have_no_content "DURAND"
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
Lorsqu(/^he search an individual by last name$/) do
|
|
@@ -42,6 +42,6 @@ Alors(/^this corporation appear in search results$/) do
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
Alors(/^other corporations do not appear in search results$/) do
|
|
45
|
-
expect(page).
|
|
46
|
-
expect(page).
|
|
45
|
+
expect(page).to have_no_content "zzz"
|
|
46
|
+
expect(page).to have_no_content "contact@zzz.com"
|
|
47
47
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
When(/^I go on the tasks section$/) do
|
|
2
|
-
find("a[href
|
|
2
|
+
find("#person-tabs a[href$='tasks']").click
|
|
3
3
|
end
|
|
4
4
|
|
|
5
5
|
When(/^I create a task on this person$/) do
|
|
6
6
|
@tasks_count = ::Dorsale::Flyboy::Task.count
|
|
7
|
-
find("#
|
|
7
|
+
find("#context-main a[href*='tasks/new']").click
|
|
8
8
|
fill_in :task_name, with: "YepYep"
|
|
9
9
|
fill_in :task_description, with: "Trololo"
|
|
10
10
|
find("[type=submit]").click
|
|
@@ -12,17 +12,9 @@ end
|
|
|
12
12
|
|
|
13
13
|
Then(/^the person task is created$/) do
|
|
14
14
|
expect(::Dorsale::Flyboy::Task.count).to eq(@tasks_count + 1)
|
|
15
|
-
@task = ::Dorsale::Flyboy::Task.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
url = dorsale.customer_vault_corporation_path(@corporation)
|
|
19
|
-
elsif @individual
|
|
20
|
-
url = dorsale.customer_vault_individual_path(@individual)
|
|
21
|
-
else
|
|
22
|
-
raise "invalid person"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
expect(current_path).to eq url
|
|
15
|
+
@task = ::Dorsale::Flyboy::Task.last_created
|
|
16
|
+
person = @corporation || @individual || @person
|
|
17
|
+
expect(current_path).to eq dorsale.tasks_customer_vault_person_path(person)
|
|
26
18
|
end
|
|
27
19
|
|
|
28
20
|
Then(/^the task appear$/) do
|
|
@@ -38,7 +30,5 @@ When(/^I filter tasks$/) do
|
|
|
38
30
|
end
|
|
39
31
|
|
|
40
32
|
Then(/^I an redirected on the tasks tab$/) do
|
|
41
|
-
expect(current_path).to eq dorsale.
|
|
42
|
-
hash = page.evaluate_script("location.href").split("#").last
|
|
43
|
-
expect(hash).to eq "tasks"
|
|
33
|
+
expect(current_path).to eq dorsale.tasks_customer_vault_person_path(@individual)
|
|
44
34
|
end
|
|
@@ -39,7 +39,7 @@ Then(/^the expense is created$/) do
|
|
|
39
39
|
expect(Dorsale::ExpenseGun::Expense.count).to eq(@expenses_count + 1)
|
|
40
40
|
expect(Dorsale::ExpenseGun::ExpenseLine.count).to eq(@expense_lines_count + 2)
|
|
41
41
|
|
|
42
|
-
@expense = Dorsale::ExpenseGun::Expense.
|
|
42
|
+
@expense = Dorsale::ExpenseGun::Expense.last_created
|
|
43
43
|
|
|
44
44
|
expect(@expense.name).to eq "ExpenseName"
|
|
45
45
|
expect(@expense.expense_lines.first.name).to eq "ExpenseLine1Name"
|
|
@@ -131,5 +131,5 @@ end
|
|
|
131
131
|
|
|
132
132
|
Then(/^an expense copy is created$/) do
|
|
133
133
|
expect(Dorsale::ExpenseGun::Expense.count).to eq(@expenses_count + 1)
|
|
134
|
-
@expense = Dorsale::ExpenseGun::Expense.
|
|
134
|
+
@expense = Dorsale::ExpenseGun::Expense.last_created
|
|
135
135
|
end
|
|
@@ -14,7 +14,7 @@ Then(/^I am on this folder$/) do
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
Then(/^I am on the created folder$/) do
|
|
17
|
-
@folder = Dorsale::Flyboy::Folder.
|
|
17
|
+
@folder = Dorsale::Flyboy::Folder.last_created
|
|
18
18
|
expect(current_path).to eq dorsale.flyboy_folder_path(@folder)
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -80,7 +80,7 @@ Then(/^I am on the folders section$/) do
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
Then(/^the folder is deleted$/) do
|
|
83
|
-
expect(page).
|
|
83
|
+
expect(page).to have_no_content @folder.name
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
When(/^I close this folder$/) do
|
|
@@ -114,7 +114,7 @@ end
|
|
|
114
114
|
|
|
115
115
|
Then(/^only open folders appear$/) do
|
|
116
116
|
expect(page).to have_content @open_folder.name
|
|
117
|
-
expect(page).
|
|
117
|
+
expect(page).to have_no_content @closed_folder.name
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
When(/^I filter folders by closed$/) do
|
|
@@ -124,7 +124,7 @@ end
|
|
|
124
124
|
|
|
125
125
|
Then(/^only closed folders appear$/) do
|
|
126
126
|
expect(page).to have_content @closed_folder.name
|
|
127
|
-
expect(page).
|
|
127
|
+
expect(page).to have_no_content @open_folder.name
|
|
128
128
|
end
|
|
129
129
|
|
|
130
130
|
Then(/^all folders appear$/) do
|
|
@@ -138,7 +138,7 @@ end
|
|
|
138
138
|
|
|
139
139
|
Then(/^only the "Hello" folder appear$/) do
|
|
140
140
|
expect(page).to have_content "Hello"
|
|
141
|
-
expect(page).
|
|
141
|
+
expect(page).to have_no_content "World"
|
|
142
142
|
end
|
|
143
143
|
|
|
144
144
|
Given(/^(\d+) existing folders$/) do |n|
|
|
@@ -94,18 +94,6 @@ When(/^I snooze this task$/) do
|
|
|
94
94
|
find("a[href*=snooze]").click
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
When(/^I export tasks to PDF$/) do
|
|
98
|
-
find("a[href$=pdf]").click
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
When(/^I export tasks to CSV$/) do
|
|
102
|
-
find("a[href$=csv]").click
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
When(/^I export tasks to XLS$/) do
|
|
106
|
-
find("a[href$=xls]").click
|
|
107
|
-
end
|
|
108
|
-
|
|
109
97
|
When(/^I filter tasks by done$/) do
|
|
110
98
|
select "Fermé"
|
|
111
99
|
find(".filters [type=submit]:last-child").click
|
|
@@ -127,7 +115,7 @@ When(/^I delete this task$/) do
|
|
|
127
115
|
end
|
|
128
116
|
|
|
129
117
|
Then(/^I am on the created task$/) do
|
|
130
|
-
@task = Dorsale::Flyboy::Task.
|
|
118
|
+
@task = Dorsale::Flyboy::Task.last_created
|
|
131
119
|
expect(current_path).to eq dorsale.flyboy_task_path(@task)
|
|
132
120
|
end
|
|
133
121
|
|
|
@@ -152,7 +140,7 @@ Then(/^I am on the tasks section$/) do
|
|
|
152
140
|
end
|
|
153
141
|
|
|
154
142
|
Then(/^the task is deleted$/) do
|
|
155
|
-
expect(page).
|
|
143
|
+
expect(page).to have_no_content @task.name
|
|
156
144
|
end
|
|
157
145
|
|
|
158
146
|
Then(/^the task is completed$/) do
|
|
@@ -163,29 +151,17 @@ Then(/^the task is snoozed$/) do
|
|
|
163
151
|
expect(all("a[href*=snooze]").count).to eq 0
|
|
164
152
|
end
|
|
165
153
|
|
|
166
|
-
Then(/^I download PDF file$/) do
|
|
167
|
-
# Nothing to do, Rails raise if any problem
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
Then(/^I download CSV file$/) do
|
|
171
|
-
# Nothing to do, Rails raise if any problem
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
Then(/^I download XLS file$/) do
|
|
175
|
-
# Nothing to do, Rails raise if any problem
|
|
176
|
-
end
|
|
177
|
-
|
|
178
154
|
Then(/^I am on this task$/) do
|
|
179
155
|
expect(current_path).to eq dorsale.flyboy_task_path(@task)
|
|
180
156
|
end
|
|
181
157
|
|
|
182
158
|
Then(/^only done tasks appear$/) do
|
|
183
159
|
expect(page).to have_content @done_task.name
|
|
184
|
-
expect(page).
|
|
160
|
+
expect(page).to have_no_content @undone_task.name
|
|
185
161
|
end
|
|
186
162
|
|
|
187
163
|
Then(/^only undone tasks appear$/) do
|
|
188
|
-
expect(page).
|
|
164
|
+
expect(page).to have_no_content @done_task.name
|
|
189
165
|
expect(page).to have_content @undone_task.name
|
|
190
166
|
end
|
|
191
167
|
|
|
@@ -197,7 +173,7 @@ end
|
|
|
197
173
|
|
|
198
174
|
Then(/^only the "Hello" task appear$/) do
|
|
199
175
|
expect(page).to have_content "Hello"
|
|
200
|
-
expect(page).
|
|
176
|
+
expect(page).to have_no_content "World"
|
|
201
177
|
end
|
|
202
178
|
|
|
203
179
|
Then(/^tasks are paginated$/) do
|
data/lib/dorsale/engine.rb
CHANGED
|
@@ -20,11 +20,12 @@ require "kaminari-i18n"
|
|
|
20
20
|
require "carrierwave"
|
|
21
21
|
require "aasm"
|
|
22
22
|
require "handles_sortable_columns"
|
|
23
|
-
require "csv"
|
|
24
23
|
require "pdf/reader"
|
|
25
24
|
require "prawn"
|
|
26
25
|
require "prawn/table"
|
|
27
26
|
require "combine_pdf"
|
|
27
|
+
require "nilify_blanks"
|
|
28
|
+
require "chartkick"
|
|
28
29
|
|
|
29
30
|
if Rails.env.test? || Rails.env.development?
|
|
30
31
|
require "pry"
|
|
@@ -57,6 +58,10 @@ module Dorsale
|
|
|
57
58
|
end
|
|
58
59
|
end
|
|
59
60
|
|
|
61
|
+
initializer "assets" do
|
|
62
|
+
Rails.application.config.assets.precompile += %w( dorsale/avatar.png )
|
|
63
|
+
end
|
|
64
|
+
|
|
60
65
|
Mime::Type.register "application/vnd.ms-excel", :xls
|
|
61
66
|
Mime::Type.register "application/vnd.ms-excel", :xlsx
|
|
62
67
|
end
|
data/lib/dorsale/version.rb
CHANGED
|
@@ -6,16 +6,15 @@ describe Dorsale::BillingMachine::InvoicesController, type: :controller do
|
|
|
6
6
|
let(:user) { create(:user) }
|
|
7
7
|
before(:each) { sign_in(user) }
|
|
8
8
|
|
|
9
|
-
describe "
|
|
9
|
+
describe "XLSX export" do
|
|
10
10
|
render_views
|
|
11
11
|
|
|
12
12
|
it "should be ok" do
|
|
13
13
|
3.times { create(:billing_machine_invoice_line) }
|
|
14
|
-
get :index, params: {format: :
|
|
14
|
+
get :index, params: {format: :xlsx}
|
|
15
15
|
expect(response).to be_ok
|
|
16
|
-
expect(response.body.split("\n").length).to eq 4 # headers + 3 invoices
|
|
17
16
|
end
|
|
18
|
-
end # describe "
|
|
17
|
+
end # describe "XLSX export"
|
|
19
18
|
|
|
20
19
|
describe "filters" do
|
|
21
20
|
before do
|
|
@@ -8,11 +8,11 @@ describe Dorsale::CommentsController, type: :controller do
|
|
|
8
8
|
before(:each) { sign_in(user) }
|
|
9
9
|
|
|
10
10
|
let(:valid_params){
|
|
11
|
-
commentable =
|
|
11
|
+
commentable = create(:customer_vault_corporation)
|
|
12
12
|
{
|
|
13
|
-
:commentable_id => commentable.id,
|
|
14
|
-
:commentable_type => commentable.class.to_s,
|
|
15
13
|
:comment => {
|
|
14
|
+
:commentable_id => commentable.id,
|
|
15
|
+
:commentable_type => commentable.class.to_s,
|
|
16
16
|
:text => "Hello",
|
|
17
17
|
},
|
|
18
18
|
:back_url => "/",
|
|
@@ -30,6 +30,16 @@ RSpec.describe ::Dorsale::ExpenseGun::ExpensesController, type: :controller do
|
|
|
30
30
|
|
|
31
31
|
expect(assigns :expenses).to eq [expense1]
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
it "should assigns only users having expenses" do
|
|
35
|
+
user1 = create(:user)
|
|
36
|
+
user2 = create(:user)
|
|
37
|
+
expense2 = create(:expense_gun_expense, user: user2)
|
|
38
|
+
|
|
39
|
+
get :index
|
|
40
|
+
|
|
41
|
+
expect(assigns :users).to eq [user2]
|
|
42
|
+
end
|
|
33
43
|
end # describe "filters"
|
|
34
44
|
end # describe "#index"
|
|
35
45
|
end
|
|
@@ -130,18 +130,6 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
|
|
|
130
130
|
expect(assigns(:tasks).to_a).to eq [@task2, @task3, @task1]
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
|
-
|
|
134
|
-
context "export" do
|
|
135
|
-
render_views
|
|
136
|
-
|
|
137
|
-
it "should not paginate the CSV" do
|
|
138
|
-
50.times { task.dup.save }
|
|
139
|
-
get :index, params: {format: :csv}
|
|
140
|
-
exported_lines_count_plus_header = CSV.parse(response.body).count
|
|
141
|
-
task_count = Dorsale::Flyboy::Task.count
|
|
142
|
-
expect(exported_lines_count_plus_header).to eq task_count+1
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
133
|
end
|
|
146
134
|
|
|
147
135
|
describe "GET show" do
|
|
@@ -182,7 +170,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
|
|
|
182
170
|
|
|
183
171
|
it "redirects to the created task" do
|
|
184
172
|
post :create, params: {:task => valid_attributes}
|
|
185
|
-
expect(response).to redirect_to Dorsale::Flyboy::Task.
|
|
173
|
+
expect(response).to redirect_to Dorsale::Flyboy::Task.last_created
|
|
186
174
|
end
|
|
187
175
|
|
|
188
176
|
it "should send a mail to the owner" do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
FactoryGirl.define do
|
|
2
2
|
factory :dorsale_comment, class: ::Dorsale::Comment do
|
|
3
|
-
commentable {
|
|
4
|
-
author { create(:user)
|
|
5
|
-
text { Faker::Lorem.paragraph
|
|
3
|
+
commentable { create(:customer_vault_corporation) }
|
|
4
|
+
author { create(:user) }
|
|
5
|
+
text { Faker::Lorem.paragraph }
|
|
6
6
|
end
|
|
7
7
|
end
|
|
@@ -103,6 +103,21 @@ describe Dorsale::TextHelper, type: :helper do
|
|
|
103
103
|
it "should work with class" do
|
|
104
104
|
expect(info Dorsale::CustomerVault::Person, :count, 123).to eq %(<div class="info"><strong class="info-label">Nombre de contacts</strong><span class="info-separator"> : </span><span class="info-value person-count">123</span></div>)
|
|
105
105
|
end
|
|
106
|
+
|
|
107
|
+
it "should accept default value" do
|
|
108
|
+
quotation_line.unit = nil
|
|
109
|
+
expect(info quotation_line, :unit, default: "hello").to eq %(<div class="info"><strong class="info-label">Unité</strong><span class="info-separator"> : </span><span class="info-value quotation_line-unit">hello</span></div>)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should accept :hide as default value" do
|
|
113
|
+
quotation_line.unit = nil
|
|
114
|
+
expect(info quotation_line, :unit, default: :hide).to eq nil
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "should hide on blank strings" do
|
|
118
|
+
quotation_line.unit = " \n"
|
|
119
|
+
expect(info quotation_line, :unit, default: :hide).to eq nil
|
|
120
|
+
end
|
|
106
121
|
end
|
|
107
122
|
|
|
108
123
|
end
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe Dorsale::SortableUUIDGenerator do
|
|
4
|
+
it "should generate a valid uuid" do
|
|
5
|
+
uuid = described_class.generate
|
|
6
|
+
expect(uuid).to match described_class::REGEX_WITH_DASHES
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should still work in 100 years" do
|
|
10
|
+
Timecop.travel "2116-11-17"
|
|
11
|
+
uuid = described_class.generate
|
|
12
|
+
expect(uuid).to match described_class::REGEX_WITH_DASHES
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should be incremental" do
|
|
16
|
+
uuids = []
|
|
17
|
+
1_000.times { uuids << described_class.generate }
|
|
18
|
+
Timecop.travel 1.day.from_now
|
|
19
|
+
1_000.times { uuids << described_class.generate }
|
|
20
|
+
Timecop.travel 1.month.from_now
|
|
21
|
+
1_000.times { uuids << described_class.generate }
|
|
22
|
+
Timecop.travel 1.year.from_now
|
|
23
|
+
1_000.times { uuids << described_class.generate }
|
|
24
|
+
Timecop.travel 10.years.from_now
|
|
25
|
+
1_000.times { uuids << described_class.generate }
|
|
26
|
+
|
|
27
|
+
expect(uuids).to eq uuids.dup.sort
|
|
28
|
+
end
|
|
29
|
+
end
|
data/spec/rails_helper.rb
CHANGED
|
@@ -59,6 +59,21 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :routing do
|
|
|
59
59
|
route_to("dorsale/customer_vault/people#show", id: "1")
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
+
it "#tasks" do
|
|
63
|
+
expect(get "/customer_vault/people/1/tasks").to \
|
|
64
|
+
route_to("dorsale/customer_vault/people#tasks", id: "1")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "#invoices" do
|
|
68
|
+
expect(get "/customer_vault/people/1/invoices").to \
|
|
69
|
+
route_to("dorsale/customer_vault/people#invoices", id: "1")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "#links" do
|
|
73
|
+
expect(get "/customer_vault/people/1/links").to \
|
|
74
|
+
route_to("dorsale/customer_vault/links#index", person_id: "1")
|
|
75
|
+
end
|
|
76
|
+
|
|
62
77
|
it "#edit" do
|
|
63
78
|
expect(get "/customer_vault/people/1/edit").to \
|
|
64
79
|
route_to("dorsale/customer_vault/people#edit", id: "1")
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dorsale
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- agilidée
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-11-
|
|
11
|
+
date: 2016-11-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -444,6 +444,34 @@ dependencies:
|
|
|
444
444
|
- - ">="
|
|
445
445
|
- !ruby/object:Gem::Version
|
|
446
446
|
version: '0'
|
|
447
|
+
- !ruby/object:Gem::Dependency
|
|
448
|
+
name: nilify_blanks
|
|
449
|
+
requirement: !ruby/object:Gem::Requirement
|
|
450
|
+
requirements:
|
|
451
|
+
- - ">="
|
|
452
|
+
- !ruby/object:Gem::Version
|
|
453
|
+
version: '0'
|
|
454
|
+
type: :runtime
|
|
455
|
+
prerelease: false
|
|
456
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
457
|
+
requirements:
|
|
458
|
+
- - ">="
|
|
459
|
+
- !ruby/object:Gem::Version
|
|
460
|
+
version: '0'
|
|
461
|
+
- !ruby/object:Gem::Dependency
|
|
462
|
+
name: chartkick
|
|
463
|
+
requirement: !ruby/object:Gem::Requirement
|
|
464
|
+
requirements:
|
|
465
|
+
- - ">="
|
|
466
|
+
- !ruby/object:Gem::Version
|
|
467
|
+
version: '0'
|
|
468
|
+
type: :runtime
|
|
469
|
+
prerelease: false
|
|
470
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
471
|
+
requirements:
|
|
472
|
+
- - ">="
|
|
473
|
+
- !ruby/object:Gem::Version
|
|
474
|
+
version: '0'
|
|
447
475
|
description: Run your own business.
|
|
448
476
|
email:
|
|
449
477
|
- contact@agilidee.com
|
|
@@ -502,6 +530,7 @@ files:
|
|
|
502
530
|
- app/assets/stylesheets/dorsale/engines/flyboy.sass
|
|
503
531
|
- app/assets/stylesheets/dorsale/engines/users.sass
|
|
504
532
|
- app/assets/stylesheets/dorsale/opt/bootstrap_nav_left.sass
|
|
533
|
+
- app/assets/stylesheets/dorsale/print.sass
|
|
505
534
|
- app/commands/dorsale/flyboy/task_commands.rb
|
|
506
535
|
- app/controllers/concerns/dorsale/back_url_concern.rb
|
|
507
536
|
- app/controllers/concerns/dorsale/flyboy/tasks_summary_concern.rb
|
|
@@ -562,10 +591,13 @@ files:
|
|
|
562
591
|
- app/helpers/dorsale/routes_helper.rb
|
|
563
592
|
- app/helpers/dorsale/text_helper.rb
|
|
564
593
|
- app/helpers/dorsale/users_helper.rb
|
|
594
|
+
- app/libs/dorsale/sortable_uuid_generator.rb
|
|
565
595
|
- app/mailers/dorsale/application_mailer.rb
|
|
566
596
|
- app/mailers/dorsale/billing_machine/invoice_mailer.rb
|
|
567
597
|
- app/mailers/dorsale/flyboy/task_mailer.rb
|
|
568
598
|
- app/mailers/dorsale/user_mailer.rb
|
|
599
|
+
- app/models/concerns/dorsale/active_record_uuid_concern.rb
|
|
600
|
+
- app/models/concerns/dorsale/default_values_concern.rb
|
|
569
601
|
- app/models/dorsale/address.rb
|
|
570
602
|
- app/models/dorsale/alexandrie.rb
|
|
571
603
|
- app/models/dorsale/alexandrie/attachment.rb
|
|
@@ -604,7 +636,6 @@ files:
|
|
|
604
636
|
- app/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf.rb
|
|
605
637
|
- app/pdfs/dorsale/billing_machine/quotation_pdf_common_methods.rb
|
|
606
638
|
- app/pdfs/dorsale/billing_machine/quotation_single_vat_pdf.rb
|
|
607
|
-
- app/pdfs/dorsale/flyboy/roadmap.rb
|
|
608
639
|
- app/policies/dorsale/alexandrie/attachment_policy_helper.rb
|
|
609
640
|
- app/policies/dorsale/alexandrie/attachment_type_policy_helper.rb
|
|
610
641
|
- app/policies/dorsale/application_policy.rb
|
|
@@ -663,8 +694,8 @@ files:
|
|
|
663
694
|
- app/views/dorsale/billing_machine/invoices/_show_actions.html.slim
|
|
664
695
|
- app/views/dorsale/billing_machine/invoices/edit.html.slim
|
|
665
696
|
- app/views/dorsale/billing_machine/invoices/email.html.slim
|
|
666
|
-
- app/views/dorsale/billing_machine/invoices/index.csv.ruby
|
|
667
697
|
- app/views/dorsale/billing_machine/invoices/index.html.slim
|
|
698
|
+
- app/views/dorsale/billing_machine/invoices/index.xlsx.ruby
|
|
668
699
|
- app/views/dorsale/billing_machine/invoices/new.html.slim
|
|
669
700
|
- app/views/dorsale/billing_machine/invoices/show.html.slim
|
|
670
701
|
- app/views/dorsale/billing_machine/invoices/show.pdf.ruby
|
|
@@ -686,33 +717,33 @@ files:
|
|
|
686
717
|
- app/views/dorsale/billing_machine/quotations/show.html.slim
|
|
687
718
|
- app/views/dorsale/billing_machine/quotations/show.pdf.ruby
|
|
688
719
|
- app/views/dorsale/comments/_comment.html.slim
|
|
720
|
+
- app/views/dorsale/comments/_comments.html.slim
|
|
689
721
|
- app/views/dorsale/comments/_form.html.slim
|
|
690
722
|
- app/views/dorsale/comments/_list.html.slim
|
|
691
|
-
- app/views/dorsale/comments/_loader.html.slim
|
|
692
723
|
- app/views/dorsale/comments/edit.html.slim
|
|
693
|
-
- app/views/dorsale/comments/index.html.slim
|
|
694
724
|
- app/views/dorsale/customer_vault/corporations/_context.html.slim
|
|
695
725
|
- app/views/dorsale/customer_vault/individuals/_context.html.slim
|
|
696
726
|
- app/views/dorsale/customer_vault/links/edit.html.slim
|
|
727
|
+
- app/views/dorsale/customer_vault/links/index.html.slim
|
|
697
728
|
- app/views/dorsale/customer_vault/links/new.html.slim
|
|
698
729
|
- app/views/dorsale/customer_vault/people/_actions.html.slim
|
|
699
|
-
- app/views/dorsale/customer_vault/people/_activity_tab.html.slim
|
|
700
|
-
- app/views/dorsale/customer_vault/people/_comment.html.slim
|
|
701
730
|
- app/views/dorsale/customer_vault/people/_context.html.slim
|
|
702
731
|
- app/views/dorsale/customer_vault/people/_data_context.html.slim
|
|
703
732
|
- app/views/dorsale/customer_vault/people/_filters.html.slim
|
|
704
733
|
- app/views/dorsale/customer_vault/people/_form.html.slim
|
|
705
734
|
- app/views/dorsale/customer_vault/people/_index_tabs.html.slim
|
|
706
|
-
- app/views/dorsale/customer_vault/people/_links_tab.html.slim
|
|
707
735
|
- app/views/dorsale/customer_vault/people/_list.html.slim
|
|
708
736
|
- app/views/dorsale/customer_vault/people/_list_item.html.slim
|
|
709
|
-
- app/views/dorsale/customer_vault/people/
|
|
737
|
+
- app/views/dorsale/customer_vault/people/_show_layout.html.slim
|
|
738
|
+
- app/views/dorsale/customer_vault/people/_tabs.html.slim
|
|
710
739
|
- app/views/dorsale/customer_vault/people/activity.slim
|
|
711
740
|
- app/views/dorsale/customer_vault/people/edit.html.slim
|
|
712
741
|
- app/views/dorsale/customer_vault/people/index.html.slim
|
|
713
|
-
- app/views/dorsale/customer_vault/people/index.
|
|
742
|
+
- app/views/dorsale/customer_vault/people/index.xlsx.ruby
|
|
743
|
+
- app/views/dorsale/customer_vault/people/invoices.html.slim
|
|
714
744
|
- app/views/dorsale/customer_vault/people/new.html.slim
|
|
715
745
|
- app/views/dorsale/customer_vault/people/show.html.slim
|
|
746
|
+
- app/views/dorsale/customer_vault/people/tasks.html.slim
|
|
716
747
|
- app/views/dorsale/expense_gun/categories/_form.html.slim
|
|
717
748
|
- app/views/dorsale/expense_gun/categories/_list.html.slim
|
|
718
749
|
- app/views/dorsale/expense_gun/categories/edit.html.slim
|
|
@@ -747,10 +778,8 @@ files:
|
|
|
747
778
|
- app/views/dorsale/flyboy/tasks/_taskable_context.html.slim
|
|
748
779
|
- app/views/dorsale/flyboy/tasks/_tasks_for_taskable.html.slim
|
|
749
780
|
- app/views/dorsale/flyboy/tasks/edit.html.slim
|
|
750
|
-
- app/views/dorsale/flyboy/tasks/index.csv.ruby
|
|
751
781
|
- app/views/dorsale/flyboy/tasks/index.html.slim
|
|
752
|
-
- app/views/dorsale/flyboy/tasks/index.
|
|
753
|
-
- app/views/dorsale/flyboy/tasks/index.xls.erb
|
|
782
|
+
- app/views/dorsale/flyboy/tasks/index.xlsx.ruby
|
|
754
783
|
- app/views/dorsale/flyboy/tasks/new.html.slim
|
|
755
784
|
- app/views/dorsale/flyboy/tasks/show.html.slim
|
|
756
785
|
- app/views/dorsale/flyboy/tasks/summary.html.slim
|
|
@@ -809,6 +838,7 @@ files:
|
|
|
809
838
|
- db/migrate/20160317124838_add_user_on_expense_gun_expense.rb
|
|
810
839
|
- db/migrate/20160910164840_create_dorsale_customer_vault_people.rb
|
|
811
840
|
- db/migrate/20160930073538_create_dorsale_alexandrie_attachment_types.rb
|
|
841
|
+
- db/migrate/20161118071317_dorsale_add_missing_indexes.rb
|
|
812
842
|
- features/access.feature
|
|
813
843
|
- features/billing_machine_id_cards.feature
|
|
814
844
|
- features/billing_machine_invoices.feature
|
|
@@ -818,6 +848,7 @@ files:
|
|
|
818
848
|
- features/customer_vault_corporations.feature
|
|
819
849
|
- features/customer_vault_filters.feature
|
|
820
850
|
- features/customer_vault_individuals.feature
|
|
851
|
+
- features/customer_vault_invoices.feature
|
|
821
852
|
- features/customer_vault_links.feature
|
|
822
853
|
- features/customer_vault_people.feature
|
|
823
854
|
- features/customer_vault_search.feature
|
|
@@ -839,6 +870,7 @@ files:
|
|
|
839
870
|
- features/step_definitions/customer_vault_corporations_steps.rb
|
|
840
871
|
- features/step_definitions/customer_vault_filters_steps.rb
|
|
841
872
|
- features/step_definitions/customer_vault_individuals_steps.rb
|
|
873
|
+
- features/step_definitions/customer_vault_invoices_steps.rb
|
|
842
874
|
- features/step_definitions/customer_vault_links_steps.rb
|
|
843
875
|
- features/step_definitions/customer_vault_people_steps.rb
|
|
844
876
|
- features/step_definitions/customer_vault_search_steps.rb
|
|
@@ -914,8 +946,9 @@ files:
|
|
|
914
946
|
- spec/helpers/dorsale/form_helper_spec.rb
|
|
915
947
|
- spec/helpers/dorsale/link_helper_spec.rb
|
|
916
948
|
- spec/helpers/dorsale/text_helper_spec.rb
|
|
917
|
-
- spec/
|
|
918
|
-
- spec/
|
|
949
|
+
- spec/libs/active_record_comma_type_cast_spec.rb
|
|
950
|
+
- spec/libs/dorsale/polymorphic_id_spec.rb
|
|
951
|
+
- spec/libs/dorsale/sortable_uuid_generator_spec.rb
|
|
919
952
|
- spec/mailers/user_mailer.rb
|
|
920
953
|
- spec/models/dorsale/address_spec.rb
|
|
921
954
|
- spec/models/dorsale/alexandrie/attachment_spec.rb
|
|
@@ -1024,8 +1057,9 @@ test_files:
|
|
|
1024
1057
|
- spec/helpers/dorsale/form_helper_spec.rb
|
|
1025
1058
|
- spec/helpers/dorsale/link_helper_spec.rb
|
|
1026
1059
|
- spec/helpers/dorsale/text_helper_spec.rb
|
|
1027
|
-
- spec/
|
|
1028
|
-
- spec/
|
|
1060
|
+
- spec/libs/active_record_comma_type_cast_spec.rb
|
|
1061
|
+
- spec/libs/dorsale/polymorphic_id_spec.rb
|
|
1062
|
+
- spec/libs/dorsale/sortable_uuid_generator_spec.rb
|
|
1029
1063
|
- spec/mailers/user_mailer.rb
|
|
1030
1064
|
- spec/models/dorsale/address_spec.rb
|
|
1031
1065
|
- spec/models/dorsale/alexandrie/attachment_spec.rb
|
|
@@ -1083,6 +1117,7 @@ test_files:
|
|
|
1083
1117
|
- features/customer_vault_corporations.feature
|
|
1084
1118
|
- features/customer_vault_filters.feature
|
|
1085
1119
|
- features/customer_vault_individuals.feature
|
|
1120
|
+
- features/customer_vault_invoices.feature
|
|
1086
1121
|
- features/customer_vault_links.feature
|
|
1087
1122
|
- features/customer_vault_people.feature
|
|
1088
1123
|
- features/customer_vault_search.feature
|
|
@@ -1104,6 +1139,7 @@ test_files:
|
|
|
1104
1139
|
- features/step_definitions/customer_vault_corporations_steps.rb
|
|
1105
1140
|
- features/step_definitions/customer_vault_filters_steps.rb
|
|
1106
1141
|
- features/step_definitions/customer_vault_individuals_steps.rb
|
|
1142
|
+
- features/step_definitions/customer_vault_invoices_steps.rb
|
|
1107
1143
|
- features/step_definitions/customer_vault_links_steps.rb
|
|
1108
1144
|
- features/step_definitions/customer_vault_people_steps.rb
|
|
1109
1145
|
- features/step_definitions/customer_vault_search_steps.rb
|