dorsale 3.1.7 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|