dorsale 3.9.0 → 3.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/app/controllers/dorsale/flyboy/tasks_controller.rb +7 -44
  5. data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +3 -2
  6. data/app/helpers/dorsale/flyboy/application_helper.rb +13 -1
  7. data/app/models/dorsale/flyboy/task.rb +5 -0
  8. data/app/services/dorsale/billing_machine/quotation/to_invoice.rb +1 -1
  9. data/app/sorters/dorsale/flyboy/tasks_sorter.rb +44 -0
  10. data/app/views/dorsale/flyboy/_filters.html.slim +11 -3
  11. data/app/views/dorsale/flyboy/tasks/_context.html.slim +2 -1
  12. data/app/views/dorsale/flyboy/tasks/_filters.html.slim +10 -0
  13. data/app/views/dorsale/flyboy/tasks/_form.html.slim +3 -2
  14. data/app/views/dorsale/flyboy/tasks/_list.html.slim +6 -0
  15. data/app/views/dorsale/flyboy/tasks/_tasks_for_taskable.html.slim +1 -1
  16. data/app/views/dorsale/flyboy/tasks/index.html.slim +1 -1
  17. data/config/locales/dorsale.en.yml +0 -1
  18. data/config/locales/dorsale.fr.yml +0 -1
  19. data/config/locales/flyboy.en.yml +1 -0
  20. data/config/locales/flyboy.fr.yml +1 -0
  21. data/features/support/env.rb +3 -0
  22. data/lib/dorsale/version.rb +1 -1
  23. data/spec/controllers/dorsale/customer_vault/people_controller_spec.rb +2 -2
  24. data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +21 -0
  25. data/spec/routing/dorsale/alexandrie/attachments_routing_spec.rb +5 -5
  26. data/spec/routing/dorsale/billing_machine/invoices_routing_spec.rb +11 -11
  27. data/spec/routing/dorsale/billing_machine/quotations_routing_spec.rb +9 -9
  28. data/spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb +5 -5
  29. data/spec/routing/dorsale/customer_vault/events_routing_spec.rb +1 -1
  30. data/spec/routing/dorsale/customer_vault/origins_routing_spec.rb +5 -5
  31. data/spec/routing/dorsale/customer_vault/people_routing_spec.rb +20 -20
  32. data/spec/routing/dorsale/expense_gun/expenses_routing_spec.rb +11 -11
  33. metadata +97 -95
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f957740f5e197d1396130300fa94904f32e3571
4
- data.tar.gz: 1a1210313bd18d1bae5e90c5a057bd4db71fe876
3
+ metadata.gz: 76ebbb416c39796db8712d68bb5952b6a9805904
4
+ data.tar.gz: e2a2fa91cab07ed102a24bdb0fc9240e1a940a92
5
5
  SHA512:
6
- metadata.gz: 3bfb5ef6465100808adb9fdb9b88d26475d53ad63a50f607ccd3b82d8ca04d6bd3e9e11f4a4ba1f8c29ce86e3d288934cda1510403b43f716d7773836365348f
7
- data.tar.gz: 4a0afd7c630a26b280a4b555c0e48c8e70da325ad2f02b088e7507220e5c1f3c7c3e82160bd53301ca16048f4f2aaecadcf083024be39ce632d9b3e2a490b0f2
6
+ metadata.gz: bd88080f00eaa88ee7e464d60e6377359e88af977807e9f616679d620ec38b35ae0c7b4034dc64cafb93d8fe726e611c737bff2c085de7363e4774542a278c9b
7
+ data.tar.gz: 416f512d565db0c0d0a7878006b822fee869acc2ea4b7aa9df05a377102eb86e4a6ccd1d3b2cb52d3b76adad3114a696753598442a6ec6ade2b733e247e05cf1
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Next version
4
4
 
5
+ ## 3.9.1
6
+
7
+ - Add tags to tasks
8
+
5
9
  ## 3.9.0
6
10
 
7
11
  - Remove BM id cards
data/README.md CHANGED
@@ -17,7 +17,7 @@ go to http://localhost:3000/
17
17
 
18
18
  ## Online demo
19
19
 
20
- https://dorsale-dummy.herokuapp.com
20
+ http://dorsale-dummy.agilidee.com/
21
21
 
22
22
  ## Requirements
23
23
  Hosting application shall define a global current_user method providing the current logged user.
@@ -11,34 +11,20 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
11
11
  :copy,
12
12
  ]
13
13
 
14
- before_action :set_owners, only: [
15
- :new,
16
- :create,
17
- :edit,
18
- :update,
19
- :copy,
20
- ]
21
-
22
14
  def index
23
15
  authorize model, :list?
24
16
 
25
- @tasks ||= scope.all.preload(:taskable)
26
-
27
- @order ||= order_from_params
28
-
17
+ @tasks ||= scope.all.preload(:taskable, :taggings)
29
18
  @filters ||= ::Dorsale::Flyboy::SmallData::FilterForTasks.new(filters_jar)
30
-
31
19
  @tasks = @filters.apply(@tasks)
32
20
  @tasks = @tasks.search(params[:q])
21
+ @tasks_without_pagination = @tasks
22
+ @tasks = Dorsale::Flyboy::TasksSorter.(@tasks, params["sort"] ||= "term")
33
23
 
34
- if @order.is_a?(Proc) # when sorting by a polymorphic attribute
35
- @tasks = @tasks.sort(&@order)
36
- @tasks_without_pagination = @tasks
37
- @tasks = Kaminari.paginate_array(@tasks).page(params[:page])
38
- else
39
- @tasks = @tasks.order(@order)
40
- @tasks_without_pagination = @tasks
24
+ if @tasks.is_a?(ActiveRecord::Relation)
41
25
  @tasks = @tasks.page(params[:page])
26
+ else
27
+ @tasks = Kaminari.paginate_array(@tasks).page(params[:page])
42
28
  end
43
29
  end
44
30
 
@@ -176,10 +162,6 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
176
162
  @taskable ||= @task.taskable
177
163
  end
178
164
 
179
- def set_owners
180
- @owners ||= policy_scope(User).actives
181
- end
182
-
183
165
  def permitted_params
184
166
  [
185
167
  :taskable_id,
@@ -193,30 +175,11 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
193
175
  :reminder_duration,
194
176
  :reminder_unit,
195
177
  :owner_id,
178
+ :tag_list => [],
196
179
  ]
197
180
  end
198
181
 
199
182
  def task_params
200
183
  params.fetch(:task, {}).permit(permitted_params)
201
184
  end
202
-
203
- def order_from_params
204
- sortable_column_order do |column, direction|
205
- case column
206
- when :name, :status
207
- %(LOWER(dorsale_flyboy_tasks.#{column}) #{direction})
208
- when :progress, :term
209
- %(dorsale_flyboy_tasks.#{column} #{direction})
210
- when :taskable
211
- if direction == :asc
212
- proc { |a, b| a.taskable.to_s.downcase <=> b.taskable.to_s.downcase }
213
- else
214
- proc { |a, b| b.taskable.to_s.downcase <=> a.taskable.to_s.downcase }
215
- end
216
- else
217
- params["sort"] = "term"
218
- "term ASC"
219
- end
220
- end
221
- end
222
185
  end
@@ -1,6 +1,7 @@
1
1
  class Dorsale::Flyboy::SmallData::FilterForTasks < ::Agilibox::SmallData::Filter
2
2
  STRATEGIES = {
3
- "fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
4
- "fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id),
3
+ "fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
4
+ "fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id),
5
+ "fb_tags" => ::Agilibox::SmallData::FilterStrategyByTags.new,
5
6
  }
6
7
  end
@@ -31,8 +31,20 @@ module Dorsale::Flyboy::ApplicationHelper
31
31
  end
32
32
  end
33
33
 
34
+ def flyboy_tasks_owners_for_select
35
+ ([@task&.owner].compact + policy_scope(User).actives).uniq
36
+ end
37
+
34
38
  def flyboy_tasks_owners_for_filters_select
35
- policy_scope(User)
39
+ flyboy_tasks_owners_for_select
40
+ end
41
+
42
+ def flyboy_tasks_tags_for_select
43
+ Dorsale::TagListForModel.(Dorsale::Flyboy::Task)
44
+ end
45
+
46
+ def flyboy_tasks_tags_for_filters_select
47
+ flyboy_tasks_tags_for_select
36
48
  end
37
49
 
38
50
  def flyboy_reminder_types_for_select
@@ -15,6 +15,11 @@ class Dorsale::Flyboy::Task < ::Dorsale::ApplicationRecord
15
15
  polymorphic_id_for :taskable
16
16
  polymorphic_id_for :owner
17
17
 
18
+ acts_as_taggable
19
+ def tag_list
20
+ super.sort
21
+ end
22
+
18
23
  STATES = %w(done undone ontime onwarning onalert)
19
24
 
20
25
  def state
@@ -37,6 +37,6 @@ class Dorsale::BillingMachine::Quotation::ToInvoice < ::Dorsale::Service
37
37
 
38
38
  def ignored_key?(k)
39
39
  k = k.to_s
40
- k == "id" || k.match?(/index|tracking|state/) || k.end_with?("_at")
40
+ k == "id" || k.match(/index|tracking|state/) || k.end_with?("_at")
41
41
  end
42
42
  end
@@ -0,0 +1,44 @@
1
+ class Dorsale::Flyboy::TasksSorter < Agilibox::Sorter
2
+ def sort
3
+ case column
4
+ when :name, :status
5
+ %(LOWER(dorsale_flyboy_tasks.#{column}) #{direction})
6
+ when :progress, :term
7
+ %(dorsale_flyboy_tasks.#{column} #{direction})
8
+ when :taskable
9
+ if direction == :asc
10
+ proc { |a, b| a.taskable.to_s.downcase <=> b.taskable.to_s.downcase }
11
+ else
12
+ proc { |a, b| b.taskable.to_s.downcase <=> a.taskable.to_s.downcase }
13
+ end
14
+ when :tags
15
+ %(
16
+ (
17
+ SELECT STRING_AGG(n, ' ' ORDER BY n)
18
+ FROM (
19
+ SELECT name AS n
20
+ FROM tags
21
+ WHERE id IN (
22
+ SELECT taggings.tag_id
23
+ FROM taggings
24
+ WHERE taggable_id = dorsale_flyboy_tasks.id
25
+ AND taggings.taggable_type = '#{Dorsale::Flyboy::Task}'
26
+ )
27
+ ) AS task_tags
28
+ ) #{direction}
29
+ )
30
+ end
31
+ end
32
+
33
+ def call
34
+ order = sort
35
+
36
+ if order.is_a?(Proc) # sorting by a polymorphic attribute
37
+ result = @collection.sort(&order)
38
+ else
39
+ result = @collection.reorder(order)
40
+ end
41
+
42
+ result
43
+ end
44
+ end
@@ -1,5 +1,13 @@
1
1
  = filters_form do |f|
2
- = f.input :fb_state, collection: flyboy_status_for_filters_select, include_blank: Dorsale::Flyboy::Task.t("state.all")
2
+ = f.input :fb_state,
3
+ :collection => flyboy_status_for_filters_select,
4
+ :include_blank => Dorsale::Flyboy::Task.t("state.all")
3
5
 
4
- - if @filters.class::STRATEGIES.include?("fb_owner")
5
- = f.input :fb_owner, collection: flyboy_tasks_owners_for_filters_select, include_blank: t("filters.all_owners")
6
+ = f.input :fb_owner,
7
+ :collection => flyboy_tasks_owners_for_filters_select,
8
+ :include_blank => t("filters.all_owners")
9
+
10
+ = f.input :fb_tags,
11
+ :collection => flyboy_tasks_tags_for_filters_select,
12
+ :input_html => {multiple: true},
13
+ :placeholder => ::Dorsale::Flyboy::Task.t(:all_tags)
@@ -5,11 +5,12 @@
5
5
  = task
6
6
 
7
7
  .context-body class=task.state
8
+ = info task, :tags, tags(task)
8
9
  = info task, :progress, progress_bar(percentage: task.progress, label: true)
9
10
  = info task, :owner
10
11
  = info task, :created_at
11
- = info task, :term
12
12
  = info task, :reminder_date
13
+ = info task, :term
13
14
  = info task, :done
14
15
 
15
16
  .context-footer
@@ -0,0 +1,10 @@
1
+ = filters_form do |f|
2
+ = f.input :fb_state, collection: flyboy_status_for_filters_select, include_blank: Dorsale::Flyboy::Task.t("state.all")
3
+
4
+ - if @filters.class::STRATEGIES.include?("fb_owner")
5
+ = f.input :fb_owner, collection: flyboy_tasks_owners_for_filters_select, include_blank: t("filters.all_owners")
6
+
7
+ = f.input :fb_tags,
8
+ :collection => flyboy_tasks_tags_for_filters_select,
9
+ :input_html => {multiple: true},
10
+ :placeholder => ::Dorsale::Flyboy::Task.t(:all_tags)
@@ -17,11 +17,12 @@
17
17
 
18
18
  .row
19
19
  .col-sm-8 = f.input :name
20
- .col-sm-4 = f.input :owner_id, collection: @owners
20
+ .col-sm-4 = f.input :owner_id, collection: flyboy_tasks_owners_for_select
21
21
 
22
+ = f.input :tag_list, collection: flyboy_tasks_tags_for_select, input_html: {multiple: true}
22
23
  = f.input :description, input_html: {rows: 5}
23
- = render "dorsale/flyboy/tasks/term_fields", f: f
24
24
  = render "dorsale/flyboy/tasks/reminder_fields", f: f
25
+ = render "dorsale/flyboy/tasks/term_fields", f: f
25
26
  = f.hidden_field :taskable_id
26
27
  = f.hidden_field :taskable_type
27
28
 
@@ -9,6 +9,9 @@ table#tasks-list
9
9
  th.task-name
10
10
  = sortable_column Dorsale::Flyboy::Task.t, :name
11
11
 
12
+ th.task-tags
13
+ = sortable_column Dorsale::Flyboy::Task.t(:tags), :tags
14
+
12
15
  - unless nested
13
16
  th.taskable-name.hidden-xs
14
17
  = sortable_column Dorsale::Flyboy::Task.t(:taskable), :taskable
@@ -53,6 +56,9 @@ table#tasks-list
53
56
  td.task-name
54
57
  = link_to_object(task)
55
58
 
59
+ td.task-tags
60
+ = tags(task)
61
+
56
62
  - unless nested
57
63
  td.taskable-name.hidden-xs
58
64
  = link_to_object(task.taskable)
@@ -1,6 +1,6 @@
1
1
  .flyboy
2
2
  - content_for :filters
3
- = render "dorsale/flyboy/filters"
3
+ = render "dorsale/flyboy/tasks/filters"
4
4
 
5
5
  - content_for :table
6
6
  = render "dorsale/flyboy/tasks/list", tasks: tasks, nested: true
@@ -5,7 +5,7 @@
5
5
  = ::Dorsale::Flyboy::Task.ts
6
6
 
7
7
  - content_for :filters
8
- = render "dorsale/flyboy/filters"
8
+ = render "dorsale/flyboy/tasks/filters"
9
9
 
10
10
  - content_for :search
11
11
  = search_form
@@ -1,5 +1,4 @@
1
1
  en:
2
- update: "Update"
3
2
  messages:
4
3
  comments:
5
4
  create_ok : "Comment created."
@@ -1,5 +1,4 @@
1
1
  fr:
2
- update: "Modifier"
3
2
  messages:
4
3
  comments:
5
4
  create_ok : "Le commentaire a été créé."
@@ -51,6 +51,7 @@ en:
51
51
  done: "Done ?"
52
52
  description: "Description"
53
53
  progress: "Progress"
54
+ all_tags: "All tags"
54
55
 
55
56
  dorsale/flyboy/task/state:
56
57
  all: "All states"
@@ -53,6 +53,7 @@ fr:
53
53
  done: "Fait"
54
54
  description: "Description"
55
55
  progress: "Progression"
56
+ all_tags: "Tous les tags"
56
57
 
57
58
  dorsale/flyboy/task/state:
58
59
  all: "Tous les états"
@@ -1,4 +1,7 @@
1
1
  ENV["RAILS_ROOT"] ||= File.expand_path("../../../spec/dummy", __FILE__)
2
2
  require "cucumber/rails"
3
3
  require "agilibox/cucumber_config"
4
+ def Zonebie.set_random_timezone
5
+ # https://github.com/agilidee/dorsale/issues/273
6
+ end
4
7
  Agilibox::CucumberConfig.require_all_helpers!
@@ -1,3 +1,3 @@
1
1
  module Dorsale
2
- VERSION = "3.9.0"
2
+ VERSION = "3.9.1"
3
3
  end
@@ -92,7 +92,7 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :controller do
92
92
  describe "#create" do
93
93
  before do
94
94
  allow_any_instance_of(Dorsale::CustomerVault::PeopleController).to \
95
- receive(:model) { Dorsale::CustomerVault::Corporation }
95
+ receive(:model) { Dorsale::CustomerVault::Corporation }
96
96
  end
97
97
 
98
98
  it "should generate an event" do
@@ -110,7 +110,7 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :controller do
110
110
  describe "#update" do
111
111
  before do
112
112
  allow_any_instance_of(Dorsale::CustomerVault::PeopleController).to \
113
- receive(:model) { Dorsale::CustomerVault::Corporation }
113
+ receive(:model) { Dorsale::CustomerVault::Corporation }
114
114
  end
115
115
 
116
116
  it "should generate an event" do
@@ -70,6 +70,14 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
70
70
  get :index
71
71
  expect(assigns(:tasks).to_a).to eq [@task2]
72
72
  end
73
+
74
+ it "should filter by tags" do
75
+ task1 = create(:flyboy_task, tag_list: "abc")
76
+ task2 = create(:flyboy_task, tag_list: "xyz")
77
+ cookies["filters"] = {fb_tags: ["abc"]}.to_json
78
+ get :index
79
+ expect(assigns(:tasks)).to eq [task1]
80
+ end
73
81
  end
74
82
 
75
83
  context "when sorting" do
@@ -86,6 +94,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
86
94
  :term => "21/12/2012",
87
95
  :reminder_type => "custom",
88
96
  :reminder_date => "21/12/2012",
97
+ :tag_list => "aaa",
89
98
  )
90
99
 
91
100
  @task2 = create(:flyboy_task,
@@ -95,6 +104,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
95
104
  :term => "23/12/2012",
96
105
  :reminder_type => "custom",
97
106
  :reminder_date => "23/12/2012",
107
+ :tag_list => "bbb",
98
108
  )
99
109
 
100
110
  @task3 = create(:flyboy_task,
@@ -104,6 +114,7 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
104
114
  :term => "22/12/2012",
105
115
  :reminder_type => "custom",
106
116
  :reminder_date => "22/12/2012",
117
+ :tag_list => "",
107
118
  )
108
119
  end
109
120
 
@@ -146,6 +157,16 @@ describe Dorsale::Flyboy::TasksController, type: :controller do
146
157
  get :index, params: {sort: "-term"}
147
158
  expect(assigns(:tasks).to_a).to eq [@task2, @task3, @task1]
148
159
  end
160
+
161
+ it "sorting by tags asc" do
162
+ get :index, params: {sort: "tags"}
163
+ expect(assigns(:tasks).to_a).to eq [@task1, @task2, @task3]
164
+ end
165
+
166
+ it "sorting by tags desc" do
167
+ get :index, params: {sort: "-tags"}
168
+ expect(assigns(:tasks).to_a).to eq [@task3, @task2, @task1]
169
+ end
149
170
  end
150
171
  end
151
172
 
@@ -6,27 +6,27 @@ RSpec.describe Dorsale::Alexandrie::AttachmentsController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#create" do
8
8
  expect(get "/alexandrie/attachments").to \
9
- route_to("dorsale/alexandrie/attachments#index")
9
+ route_to("dorsale/alexandrie/attachments#index")
10
10
  end
11
11
 
12
12
  it "#create" do
13
13
  expect(post "/alexandrie/attachments").to \
14
- route_to("dorsale/alexandrie/attachments#create")
14
+ route_to("dorsale/alexandrie/attachments#create")
15
15
  end
16
16
 
17
17
  it "#edit" do
18
18
  expect(get "/alexandrie/attachments/3/edit").to \
19
- route_to("dorsale/alexandrie/attachments#edit", id: "3")
19
+ route_to("dorsale/alexandrie/attachments#edit", id: "3")
20
20
  end
21
21
 
22
22
  it "#update" do
23
23
  expect(patch "/alexandrie/attachments/3").to \
24
- route_to("dorsale/alexandrie/attachments#update", id: "3")
24
+ route_to("dorsale/alexandrie/attachments#update", id: "3")
25
25
  end
26
26
 
27
27
  it "#destroy" do
28
28
  expect(delete "/alexandrie/attachments/3").to \
29
- route_to("dorsale/alexandrie/attachments#destroy", id: "3")
29
+ route_to("dorsale/alexandrie/attachments#destroy", id: "3")
30
30
  end
31
31
  end
32
32
  end
@@ -6,57 +6,57 @@ describe ::Dorsale::BillingMachine::InvoicesController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/billing_machine/invoices").to \
9
- route_to("dorsale/billing_machine/invoices#index")
9
+ route_to("dorsale/billing_machine/invoices#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/billing_machine/invoices/new").to \
14
- route_to("dorsale/billing_machine/invoices#new")
14
+ route_to("dorsale/billing_machine/invoices#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/billing_machine/invoices").to \
19
- route_to("dorsale/billing_machine/invoices#create")
19
+ route_to("dorsale/billing_machine/invoices#create")
20
20
  end
21
21
 
22
22
  it "#show" do
23
23
  expect(get "/billing_machine/invoices/1").to \
24
- route_to("dorsale/billing_machine/invoices#show", id: "1")
24
+ route_to("dorsale/billing_machine/invoices#show", id: "1")
25
25
  end
26
26
 
27
27
  it "#show pdf" do
28
28
  expect(get "/billing_machine/invoices/1.pdf").to \
29
- route_to("dorsale/billing_machine/invoices#show", id: "1", format: "pdf")
29
+ route_to("dorsale/billing_machine/invoices#show", id: "1", format: "pdf")
30
30
  end
31
31
 
32
32
  it "#pay" do
33
33
  expect(patch "/billing_machine/invoices/1/pay").to \
34
- route_to("dorsale/billing_machine/invoices#pay", id: "1")
34
+ route_to("dorsale/billing_machine/invoices#pay", id: "1")
35
35
  end
36
36
 
37
37
  it "#copy" do
38
38
  expect(get "/billing_machine/invoices/1/copy").to \
39
- route_to("dorsale/billing_machine/invoices#copy", id: "1")
39
+ route_to("dorsale/billing_machine/invoices#copy", id: "1")
40
40
  end
41
41
 
42
42
  it "#edit" do
43
43
  expect(get "/billing_machine/invoices/1/edit").to \
44
- route_to("dorsale/billing_machine/invoices#edit", id: "1")
44
+ route_to("dorsale/billing_machine/invoices#edit", id: "1")
45
45
  end
46
46
 
47
47
  it "#update" do
48
48
  expect(patch "/billing_machine/invoices/1").to \
49
- route_to("dorsale/billing_machine/invoices#update", id: "1")
49
+ route_to("dorsale/billing_machine/invoices#update", id: "1")
50
50
  end
51
51
 
52
52
  it "#email via GET" do
53
53
  expect(get "/billing_machine/invoices/1/email").to \
54
- route_to("dorsale/billing_machine/invoices#email", id: "1")
54
+ route_to("dorsale/billing_machine/invoices#email", id: "1")
55
55
  end
56
56
 
57
57
  it "#email via PORT" do
58
58
  expect(post "/billing_machine/invoices/1/email").to \
59
- route_to("dorsale/billing_machine/invoices#email", id: "1")
59
+ route_to("dorsale/billing_machine/invoices#email", id: "1")
60
60
  end
61
61
  end
62
62
  end
@@ -6,47 +6,47 @@ describe ::Dorsale::BillingMachine::QuotationsController do
6
6
 
7
7
  it "#index" do
8
8
  expect(get "/billing_machine/quotations").to \
9
- route_to("dorsale/billing_machine/quotations#index")
9
+ route_to("dorsale/billing_machine/quotations#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/billing_machine/quotations/new").to \
14
- route_to("dorsale/billing_machine/quotations#new")
14
+ route_to("dorsale/billing_machine/quotations#new")
15
15
  end
16
16
 
17
17
  it "#show" do
18
18
  expect(get "/billing_machine/quotations/1").to \
19
- route_to("dorsale/billing_machine/quotations#show", id: "1")
19
+ route_to("dorsale/billing_machine/quotations#show", id: "1")
20
20
  end
21
21
 
22
22
  it "#edit" do
23
23
  expect(get "/billing_machine/quotations/1/edit").to \
24
- route_to("dorsale/billing_machine/quotations#edit", id: "1")
24
+ route_to("dorsale/billing_machine/quotations#edit", id: "1")
25
25
  end
26
26
 
27
27
  it "#create" do
28
28
  expect(post "/billing_machine/quotations").to \
29
- route_to("dorsale/billing_machine/quotations#create")
29
+ route_to("dorsale/billing_machine/quotations#create")
30
30
  end
31
31
 
32
32
  it "#update" do
33
33
  expect(patch "/billing_machine/quotations/1").to \
34
- route_to("dorsale/billing_machine/quotations#update", id: "1")
34
+ route_to("dorsale/billing_machine/quotations#update", id: "1")
35
35
  end
36
36
 
37
37
  it "#destroy" do
38
38
  expect(delete "/billing_machine/quotations/1").to \
39
- route_to("dorsale/billing_machine/quotations#destroy", id: "1")
39
+ route_to("dorsale/billing_machine/quotations#destroy", id: "1")
40
40
  end
41
41
 
42
42
  it "#copy" do
43
43
  expect(post "/billing_machine/quotations/1/copy").to \
44
- route_to("dorsale/billing_machine/quotations#copy", id: "1")
44
+ route_to("dorsale/billing_machine/quotations#copy", id: "1")
45
45
  end
46
46
 
47
47
  it "#create_invoice" do
48
48
  expect(get "/billing_machine/quotations/1/create_invoice").to \
49
- route_to("dorsale/billing_machine/quotations#create_invoice", id: "1")
49
+ route_to("dorsale/billing_machine/quotations#create_invoice", id: "1")
50
50
  end
51
51
  end
52
52
  end
@@ -6,17 +6,17 @@ describe ::Dorsale::CustomerVault::ActivityTypesController do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/activity_types").to \
9
- route_to("dorsale/customer_vault/activity_types#index")
9
+ route_to("dorsale/customer_vault/activity_types#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/customer_vault/activity_types/new").to \
14
- route_to("dorsale/customer_vault/activity_types#new")
14
+ route_to("dorsale/customer_vault/activity_types#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/customer_vault/activity_types").to \
19
- route_to("dorsale/customer_vault/activity_types#create")
19
+ route_to("dorsale/customer_vault/activity_types#create")
20
20
  end
21
21
 
22
22
  it "#show" do
@@ -25,12 +25,12 @@ describe ::Dorsale::CustomerVault::ActivityTypesController do
25
25
 
26
26
  it "#edit" do
27
27
  expect(get "/customer_vault/activity_types/3/edit").to \
28
- route_to("dorsale/customer_vault/activity_types#edit", id: "3")
28
+ route_to("dorsale/customer_vault/activity_types#edit", id: "3")
29
29
  end
30
30
 
31
31
  it "#update" do
32
32
  expect(patch "/customer_vault/activity_types/3").to \
33
- route_to("dorsale/customer_vault/activity_types#update", id: "3")
33
+ route_to("dorsale/customer_vault/activity_types#update", id: "3")
34
34
  end
35
35
 
36
36
  it "#destroy" do
@@ -6,7 +6,7 @@ RSpec.describe ::Dorsale::CustomerVault::EventsController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/events").to \
9
- route_to("dorsale/customer_vault/events#index")
9
+ route_to("dorsale/customer_vault/events#index")
10
10
  end
11
11
  end # describe "routing"
12
12
  end
@@ -6,17 +6,17 @@ describe ::Dorsale::CustomerVault::OriginsController do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/origins").to \
9
- route_to("dorsale/customer_vault/origins#index")
9
+ route_to("dorsale/customer_vault/origins#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/customer_vault/origins/new").to \
14
- route_to("dorsale/customer_vault/origins#new")
14
+ route_to("dorsale/customer_vault/origins#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/customer_vault/origins").to \
19
- route_to("dorsale/customer_vault/origins#create")
19
+ route_to("dorsale/customer_vault/origins#create")
20
20
  end
21
21
 
22
22
  it "#show" do
@@ -25,12 +25,12 @@ describe ::Dorsale::CustomerVault::OriginsController do
25
25
 
26
26
  it "#edit" do
27
27
  expect(get "/customer_vault/origins/3/edit").to \
28
- route_to("dorsale/customer_vault/origins#edit", id: "3")
28
+ route_to("dorsale/customer_vault/origins#edit", id: "3")
29
29
  end
30
30
 
31
31
  it "#update" do
32
32
  expect(patch "/customer_vault/origins/3").to \
33
- route_to("dorsale/customer_vault/origins#update", id: "3")
33
+ route_to("dorsale/customer_vault/origins#update", id: "3")
34
34
  end
35
35
 
36
36
  it "#destroy" do
@@ -6,104 +6,104 @@ RSpec.describe ::Dorsale::CustomerVault::PeopleController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/customer_vault/people").to \
9
- route_to("dorsale/customer_vault/people#index")
9
+ route_to("dorsale/customer_vault/people#index")
10
10
  end
11
11
 
12
12
  it "#corporations via get" do
13
13
  expect(get "/customer_vault/corporations").to \
14
- route_to("dorsale/customer_vault/people#corporations")
14
+ route_to("dorsale/customer_vault/people#corporations")
15
15
  end
16
16
 
17
17
  it "#individuals via get" do
18
18
  expect(get "/customer_vault/individuals").to \
19
- route_to("dorsale/customer_vault/people#individuals")
19
+ route_to("dorsale/customer_vault/people#individuals")
20
20
  end
21
21
 
22
22
  it "#new person" do
23
23
  expect(get "/customer_vault/people/new").to \
24
- route_to("dorsale/customer_vault/people#new")
24
+ route_to("dorsale/customer_vault/people#new")
25
25
  end
26
26
 
27
27
  it "#new corporation" do
28
28
  expect(get "/customer_vault/corporations/new").to \
29
- route_to("dorsale/customer_vault/people#new")
29
+ route_to("dorsale/customer_vault/people#new")
30
30
  end
31
31
 
32
32
  it "#new individual" do
33
33
  expect(get "/customer_vault/individuals/new").to \
34
- route_to("dorsale/customer_vault/people#new")
34
+ route_to("dorsale/customer_vault/people#new")
35
35
  end
36
36
 
37
37
  it "#create person" do
38
38
  expect(post "/customer_vault/people").to \
39
- route_to("dorsale/customer_vault/people#create")
39
+ route_to("dorsale/customer_vault/people#create")
40
40
  end
41
41
 
42
42
  it "#create individual" do
43
43
  expect(post "/customer_vault/individuals").to \
44
- route_to("dorsale/customer_vault/people#create")
44
+ route_to("dorsale/customer_vault/people#create")
45
45
  end
46
46
 
47
47
  it "#create corporation" do
48
48
  expect(post "/customer_vault/corporations").to \
49
- route_to("dorsale/customer_vault/people#create")
49
+ route_to("dorsale/customer_vault/people#create")
50
50
  end
51
51
 
52
52
  it "#show" do
53
53
  expect(get "/customer_vault/people/1").to \
54
- route_to("dorsale/customer_vault/people#show", id: "1")
54
+ route_to("dorsale/customer_vault/people#show", id: "1")
55
55
  end
56
56
 
57
57
  it "#tasks" do
58
58
  expect(get "/customer_vault/people/1/tasks").to \
59
- route_to("dorsale/customer_vault/people#tasks", id: "1")
59
+ route_to("dorsale/customer_vault/people#tasks", id: "1")
60
60
  end
61
61
 
62
62
  it "#invoices" do
63
63
  expect(get "/customer_vault/people/1/invoices").to \
64
- route_to("dorsale/customer_vault/people#invoices", id: "1")
64
+ route_to("dorsale/customer_vault/people#invoices", id: "1")
65
65
  end
66
66
 
67
67
  it "#links" do
68
68
  expect(get "/customer_vault/people/1/links").to \
69
- route_to("dorsale/customer_vault/links#index", person_id: "1")
69
+ route_to("dorsale/customer_vault/links#index", person_id: "1")
70
70
  end
71
71
 
72
72
  it "#edit" do
73
73
  expect(get "/customer_vault/people/1/edit").to \
74
- route_to("dorsale/customer_vault/people#edit", id: "1")
74
+ route_to("dorsale/customer_vault/people#edit", id: "1")
75
75
  end
76
76
 
77
77
  it "#update" do
78
78
  expect(patch "/customer_vault/people/1").to \
79
- route_to("dorsale/customer_vault/people#update", id: "1")
79
+ route_to("dorsale/customer_vault/people#update", id: "1")
80
80
  end
81
81
 
82
82
  it "#destroy" do
83
83
  expect(delete "/customer_vault/people/1").to \
84
- route_to("dorsale/customer_vault/people#destroy", id: "1")
84
+ route_to("dorsale/customer_vault/people#destroy", id: "1")
85
85
  end
86
86
  end # describe "routing"
87
87
 
88
88
  describe "route helpers" do
89
89
  it "#new_customer_vault_corporation_path" do
90
90
  expect(new_customer_vault_corporation_path).to \
91
- eq "/dorsale/customer_vault/corporations/new"
91
+ eq "/dorsale/customer_vault/corporations/new"
92
92
  end
93
93
 
94
94
  it "#new_customer_vault_individual_path" do
95
95
  expect(new_customer_vault_individual_path).to \
96
- eq "/dorsale/customer_vault/individuals/new"
96
+ eq "/dorsale/customer_vault/individuals/new"
97
97
  end
98
98
 
99
99
  it "#customer_vault_corporation_path" do
100
100
  expect(customer_vault_corporations_path).to \
101
- eq "/dorsale/customer_vault/corporations"
101
+ eq "/dorsale/customer_vault/corporations"
102
102
  end
103
103
 
104
104
  it "#customer_vault_individual_path" do
105
105
  expect(customer_vault_individuals_path).to \
106
- eq "/dorsale/customer_vault/individuals"
106
+ eq "/dorsale/customer_vault/individuals"
107
107
  end
108
108
  end # describe "route helpers"
109
109
  end
@@ -6,57 +6,57 @@ describe ::Dorsale::ExpenseGun::ExpensesController, type: :routing do
6
6
  describe "routing" do
7
7
  it "#index" do
8
8
  expect(get "/expense_gun/expenses").to \
9
- route_to("dorsale/expense_gun/expenses#index")
9
+ route_to("dorsale/expense_gun/expenses#index")
10
10
  end
11
11
 
12
12
  it "#new" do
13
13
  expect(get "/expense_gun/expenses/new").to \
14
- route_to("dorsale/expense_gun/expenses#new")
14
+ route_to("dorsale/expense_gun/expenses#new")
15
15
  end
16
16
 
17
17
  it "#create" do
18
18
  expect(post "/expense_gun/expenses").to \
19
- route_to("dorsale/expense_gun/expenses#create")
19
+ route_to("dorsale/expense_gun/expenses#create")
20
20
  end
21
21
 
22
22
  it "#show" do
23
23
  expect(get "/expense_gun/expenses/1").to \
24
- route_to("dorsale/expense_gun/expenses#show", id: "1")
24
+ route_to("dorsale/expense_gun/expenses#show", id: "1")
25
25
  end
26
26
 
27
27
  it "#edit" do
28
28
  expect(get "/expense_gun/expenses/1/edit").to \
29
- route_to("dorsale/expense_gun/expenses#edit", id: "1")
29
+ route_to("dorsale/expense_gun/expenses#edit", id: "1")
30
30
  end
31
31
 
32
32
  it "#update" do
33
33
  expect(patch "/expense_gun/expenses/1").to \
34
- route_to("dorsale/expense_gun/expenses#update", id: "1")
34
+ route_to("dorsale/expense_gun/expenses#update", id: "1")
35
35
  end
36
36
 
37
37
  it "#submit" do
38
38
  expect(patch "/expense_gun/expenses/1/submit").to \
39
- route_to("dorsale/expense_gun/expenses#submit", id: "1")
39
+ route_to("dorsale/expense_gun/expenses#submit", id: "1")
40
40
  end
41
41
 
42
42
  it "#accept" do
43
43
  expect(patch "/expense_gun/expenses/1/accept").to \
44
- route_to("dorsale/expense_gun/expenses#accept", id: "1")
44
+ route_to("dorsale/expense_gun/expenses#accept", id: "1")
45
45
  end
46
46
 
47
47
  it "#refuse" do
48
48
  expect(patch "/expense_gun/expenses/1/refuse").to \
49
- route_to("dorsale/expense_gun/expenses#refuse", id: "1")
49
+ route_to("dorsale/expense_gun/expenses#refuse", id: "1")
50
50
  end
51
51
 
52
52
  it "#cancel" do
53
53
  expect(patch "/expense_gun/expenses/1/cancel").to \
54
- route_to("dorsale/expense_gun/expenses#cancel", id: "1")
54
+ route_to("dorsale/expense_gun/expenses#cancel", id: "1")
55
55
  end
56
56
 
57
57
  it "#copy" do
58
58
  expect(get "/expense_gun/expenses/1/copy").to \
59
- route_to("dorsale/expense_gun/expenses#copy", id: "1")
59
+ route_to("dorsale/expense_gun/expenses#copy", id: "1")
60
60
  end
61
61
  end
62
62
  end
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.9.0
4
+ version: 3.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - agilidée
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2017-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -642,6 +642,7 @@ files:
642
642
  - app/services/dorsale/service.rb
643
643
  - app/services/dorsale/tag_list_for_model.rb
644
644
  - app/sorters/dorsale/flyboy/task_comments_sorter.rb
645
+ - app/sorters/dorsale/flyboy/tasks_sorter.rb
645
646
  - app/uploaders/dorsale/alexandrie/file_uploader.rb
646
647
  - app/uploaders/dorsale/application_uploader.rb
647
648
  - app/uploaders/dorsale/avatar_uploader.rb
@@ -771,6 +772,7 @@ files:
771
772
  - app/views/dorsale/flyboy/task_mailer/new_task.html.slim
772
773
  - app/views/dorsale/flyboy/task_mailer/term_email.html.slim
773
774
  - app/views/dorsale/flyboy/tasks/_context.html.slim
775
+ - app/views/dorsale/flyboy/tasks/_filters.html.slim
774
776
  - app/views/dorsale/flyboy/tasks/_form.html.slim
775
777
  - app/views/dorsale/flyboy/tasks/_index_actions.html.slim
776
778
  - app/views/dorsale/flyboy/tasks/_list.html.slim
@@ -1013,129 +1015,129 @@ signing_key:
1013
1015
  specification_version: 4
1014
1016
  summary: Modular ERP made with Ruby on Rails
1015
1017
  test_files:
1016
- - spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb
1017
- - spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb
1018
- - spec/controllers/dorsale/billing_machine/quotations_controller_spec.rb
1019
- - spec/controllers/dorsale/comments_controller_spec.rb
1020
- - spec/controllers/dorsale/customer_vault/events_controller_spec.rb
1021
- - spec/controllers/dorsale/customer_vault/people_controller_spec.rb
1022
- - spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb
1023
- - spec/controllers/dorsale/flyboy/task_comments_controller_spec.rb
1024
- - spec/controllers/dorsale/flyboy/tasks_controller_spec.rb
1025
- - spec/factories/alexandrie_attachment_types.rb
1026
- - spec/factories/alexandrie_attachments.rb
1018
+ - spec/spec_helper.rb
1019
+ - spec/mailers/user_mailer.rb
1020
+ - spec/models/dorsale/billing_machine_spec.rb
1021
+ - spec/models/dorsale/i18n_spec.rb
1022
+ - spec/models/dorsale/alexandrie/attachment_spec.rb
1023
+ - spec/models/dorsale/alexandrie/attachment_type_spec.rb
1024
+ - spec/models/dorsale/expense_gun/expense_spec.rb
1025
+ - spec/models/dorsale/expense_gun/expense_line_spec.rb
1026
+ - spec/models/dorsale/expense_gun/category_spec.rb
1027
+ - spec/models/dorsale/customer_vault/person_spec.rb
1028
+ - spec/models/dorsale/customer_vault/individual_spec.rb
1029
+ - spec/models/dorsale/customer_vault/activity_type_spec.rb
1030
+ - spec/models/dorsale/customer_vault/origin_spec.rb
1031
+ - spec/models/dorsale/customer_vault/event_spec.rb
1032
+ - spec/models/dorsale/customer_vault/corporation_spec.rb
1033
+ - spec/models/dorsale/customer_vault/link_spec.rb
1034
+ - spec/models/dorsale/users_spec.rb
1035
+ - spec/models/dorsale/billing_machine/quotation_line_spec.rb
1036
+ - spec/models/dorsale/billing_machine/quotation_spec.rb
1037
+ - spec/models/dorsale/billing_machine/invoice_line_spec.rb
1038
+ - spec/models/dorsale/billing_machine/invoice_spec.rb
1039
+ - spec/models/dorsale/comment_spec.rb
1040
+ - spec/models/dorsale/flyboy/task_spec.rb
1041
+ - spec/models/dorsale/flyboy/task_comment_spec.rb
1042
+ - spec/models/dorsale/address_spec.rb
1043
+ - spec/support/devise.rb
1044
+ - spec/support/message_delivery.rb
1045
+ - spec/factories/expense_gun_categories.rb
1046
+ - spec/factories/dorsale_addresses.rb
1027
1047
  - spec/factories/billing_machine_invoice_lines.rb
1048
+ - spec/factories/customer_vault_origins.rb
1049
+ - spec/factories/customer_vault_links.rb
1050
+ - spec/factories/alexandrie_attachments.rb
1051
+ - spec/factories/customer_vault_event.rb
1028
1052
  - spec/factories/billing_machine_invoices.rb
1029
- - spec/factories/billing_machine_payment_terms.rb
1030
- - spec/factories/billing_machine_quotation_lines.rb
1031
- - spec/factories/billing_machine_quotations.rb
1032
1053
  - spec/factories/customer_vault_activity_types.rb
1054
+ - spec/factories/billing_machine_payment_terms.rb
1033
1055
  - spec/factories/customer_vault_corporations.rb
1034
- - spec/factories/customer_vault_event.rb
1056
+ - spec/factories/expense_gun_expenses.rb
1057
+ - spec/factories/alexandrie_attachment_types.rb
1058
+ - spec/factories/billing_machine_quotations.rb
1059
+ - spec/factories/flyboy_tasks.rb
1035
1060
  - spec/factories/customer_vault_individuals.rb
1036
- - spec/factories/customer_vault_links.rb
1037
- - spec/factories/customer_vault_origins.rb
1038
- - spec/factories/dorsale_addresses.rb
1039
- - spec/factories/dorsale_comments.rb
1040
- - spec/factories/expense_gun_categories.rb
1061
+ - spec/factories/billing_machine_quotation_lines.rb
1041
1062
  - spec/factories/expense_gun_expense_lines.rb
1042
- - spec/factories/expense_gun_expenses.rb
1063
+ - spec/factories/dorsale_comments.rb
1043
1064
  - spec/factories/flyboy_task_comments.rb
1044
- - spec/factories/flyboy_tasks.rb
1045
1065
  - spec/files/avatar.png
1046
1066
  - spec/files/pdf.pdf
1047
- - spec/mailers/user_mailer.rb
1048
- - spec/models/dorsale/address_spec.rb
1049
- - spec/models/dorsale/alexandrie/attachment_spec.rb
1050
- - spec/models/dorsale/alexandrie/attachment_type_spec.rb
1051
- - spec/models/dorsale/billing_machine/invoice_line_spec.rb
1052
- - spec/models/dorsale/billing_machine/invoice_spec.rb
1053
- - spec/models/dorsale/billing_machine/quotation_line_spec.rb
1054
- - spec/models/dorsale/billing_machine/quotation_spec.rb
1055
- - spec/models/dorsale/billing_machine_spec.rb
1056
- - spec/models/dorsale/comment_spec.rb
1057
- - spec/models/dorsale/customer_vault/activity_type_spec.rb
1058
- - spec/models/dorsale/customer_vault/corporation_spec.rb
1059
- - spec/models/dorsale/customer_vault/event_spec.rb
1060
- - spec/models/dorsale/customer_vault/individual_spec.rb
1061
- - spec/models/dorsale/customer_vault/link_spec.rb
1062
- - spec/models/dorsale/customer_vault/origin_spec.rb
1063
- - spec/models/dorsale/customer_vault/person_spec.rb
1064
- - spec/models/dorsale/expense_gun/category_spec.rb
1065
- - spec/models/dorsale/expense_gun/expense_line_spec.rb
1066
- - spec/models/dorsale/expense_gun/expense_spec.rb
1067
- - spec/models/dorsale/flyboy/task_comment_spec.rb
1068
- - spec/models/dorsale/flyboy/task_spec.rb
1069
- - spec/models/dorsale/i18n_spec.rb
1070
- - spec/models/dorsale/users_spec.rb
1071
- - spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb
1072
1067
  - spec/pdfs/dorsale/billing_machine/invoice_single_vat_pdf_spec.rb
1073
1068
  - spec/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf_spec.rb
1074
1069
  - spec/pdfs/dorsale/billing_machine/quotation_single_vat_pdf_spec.rb
1075
- - spec/rails_helper.rb
1070
+ - spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb
1076
1071
  - spec/routing/dorsale/alexandrie/attachments_routing_spec.rb
1077
- - spec/routing/dorsale/billing_machine/invoices_routing_spec.rb
1078
- - spec/routing/dorsale/billing_machine/quotations_routing_spec.rb
1079
1072
  - spec/routing/dorsale/comments_routing_spec.rb
1073
+ - spec/routing/dorsale/expense_gun/expenses_routing_spec.rb
1074
+ - spec/routing/dorsale/users_routing_spec.rb
1080
1075
  - spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb
1081
- - spec/routing/dorsale/customer_vault/events_routing_spec.rb
1082
1076
  - spec/routing/dorsale/customer_vault/origins_routing_spec.rb
1083
1077
  - spec/routing/dorsale/customer_vault/people_routing_spec.rb
1084
- - spec/routing/dorsale/expense_gun/expenses_routing_spec.rb
1085
- - spec/routing/dorsale/flyboy/task_comments_routing_spec.rb
1078
+ - spec/routing/dorsale/customer_vault/events_routing_spec.rb
1079
+ - spec/routing/dorsale/billing_machine/quotations_routing_spec.rb
1080
+ - spec/routing/dorsale/billing_machine/invoices_routing_spec.rb
1086
1081
  - spec/routing/dorsale/flyboy/tasks_routing_spec.rb
1087
- - spec/routing/dorsale/users_routing_spec.rb
1088
- - spec/services/dorsale/billing_machine/quotation/copy_spec.rb
1082
+ - spec/routing/dorsale/flyboy/task_comments_routing_spec.rb
1083
+ - spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb
1084
+ - spec/controllers/dorsale/comments_controller_spec.rb
1085
+ - spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb
1086
+ - spec/controllers/dorsale/customer_vault/events_controller_spec.rb
1087
+ - spec/controllers/dorsale/customer_vault/people_controller_spec.rb
1088
+ - spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb
1089
+ - spec/controllers/dorsale/billing_machine/quotations_controller_spec.rb
1090
+ - spec/controllers/dorsale/flyboy/tasks_controller_spec.rb
1091
+ - spec/controllers/dorsale/flyboy/task_comments_controller_spec.rb
1092
+ - spec/rails_helper.rb
1093
+ - spec/services/dorsale/expense_gun/expense/copy_spec.rb
1089
1094
  - spec/services/dorsale/billing_machine/quotation/statistics.rb
1095
+ - spec/services/dorsale/billing_machine/quotation/copy_spec.rb
1090
1096
  - spec/services/dorsale/billing_machine/quotation/to_invoice_spec.rb
1091
- - spec/services/dorsale/expense_gun/expense/copy_spec.rb
1092
1097
  - spec/services/dorsale/flyboy/task/copy_spec.rb
1093
1098
  - spec/services/dorsale/flyboy/task/snoozer_spec.rb
1094
- - spec/spec_helper.rb
1095
- - spec/support/devise.rb
1096
- - spec/support/message_delivery.rb
1097
- - features/access.feature
1098
- - features/billing_machine_invoices.feature
1099
- - features/billing_machine_multiple_vat.feature
1100
- - features/billing_machine_payment_terms.feature
1101
- - features/billing_machine_quotations.feature
1102
- - features/customer_vault_activity_types.feature
1103
- - features/customer_vault_corporations.feature
1104
- - features/customer_vault_filters.feature
1105
- - features/customer_vault_individuals.feature
1106
- - features/customer_vault_invoices.feature
1107
- - features/customer_vault_links.feature
1108
- - features/customer_vault_origins.feature
1109
1099
  - features/customer_vault_people.feature
1110
- - features/customer_vault_search.feature
1111
- - features/customer_vault_tasks.feature
1112
1100
  - features/expense_gun_categories.feature
1101
+ - features/customer_vault_activity_types.feature
1102
+ - features/users_management.feature
1103
+ - features/customer_vault_individuals.feature
1104
+ - features/billing_machine_quotations.feature
1113
1105
  - features/expense_gun_expenses.feature
1114
- - features/flyboy_task_comments.feature
1115
- - features/flyboy_tasks.feature
1106
+ - features/access.feature
1116
1107
  - features/flyboy_tasks_summary.feature
1117
- - features/step_definitions/access_steps.rb
1118
- - features/step_definitions/alexandrie_steps.rb
1119
- - features/step_definitions/billing_machine_invoices_steps.rb
1120
- - features/step_definitions/billing_machine_multiple_vat.rb
1121
- - features/step_definitions/billing_machine_payment_terms_steps.rb
1108
+ - features/customer_vault_corporations.feature
1109
+ - features/billing_machine_invoices.feature
1110
+ - features/support/env.rb
1111
+ - features/customer_vault_search.feature
1112
+ - features/billing_machine_payment_terms.feature
1113
+ - features/customer_vault_origins.feature
1114
+ - features/billing_machine_multiple_vat.feature
1115
+ - features/step_definitions/customer_vault_filters_steps.rb
1122
1116
  - features/step_definitions/billing_machine_quotations_steps.rb
1123
- - features/step_definitions/common_steps.rb
1124
- - features/step_definitions/customer_vault_activity_types_steps.rb
1117
+ - features/step_definitions/customer_vault_search_steps.rb
1118
+ - features/step_definitions/expense_gun_expenses_steps.rb
1125
1119
  - features/step_definitions/customer_vault_corporations_steps.rb
1126
- - features/step_definitions/customer_vault_filters_steps.rb
1120
+ - features/step_definitions/tasks_summary_steps.rb
1121
+ - features/step_definitions/flyboy_tasks_steps.rb
1127
1122
  - features/step_definitions/customer_vault_individuals_steps.rb
1123
+ - features/step_definitions/billing_machine_payment_terms_steps.rb
1124
+ - features/step_definitions/alexandrie_steps.rb
1125
+ - features/step_definitions/billing_machine_invoices_steps.rb
1126
+ - features/step_definitions/billing_machine_multiple_vat.rb
1128
1127
  - features/step_definitions/customer_vault_invoices_steps.rb
1129
- - features/step_definitions/customer_vault_links_steps.rb
1130
- - features/step_definitions/customer_vault_origins_steps.rb
1131
1128
  - features/step_definitions/customer_vault_people_steps.rb
1132
- - features/step_definitions/customer_vault_search_steps.rb
1133
- - features/step_definitions/customer_vault_tasks_steps.rb
1129
+ - features/step_definitions/users_management_step.rb
1134
1130
  - features/step_definitions/expense_gun_categories_steps.rb
1135
- - features/step_definitions/expense_gun_expenses_steps.rb
1131
+ - features/step_definitions/customer_vault_origins_steps.rb
1136
1132
  - features/step_definitions/flyboy_task_comments_steps.rb
1137
- - features/step_definitions/flyboy_tasks_steps.rb
1138
- - features/step_definitions/tasks_summary_steps.rb
1139
- - features/step_definitions/users_management_step.rb
1140
- - features/support/env.rb
1141
- - features/users_management.feature
1133
+ - features/step_definitions/customer_vault_activity_types_steps.rb
1134
+ - features/step_definitions/customer_vault_tasks_steps.rb
1135
+ - features/step_definitions/common_steps.rb
1136
+ - features/step_definitions/access_steps.rb
1137
+ - features/step_definitions/customer_vault_links_steps.rb
1138
+ - features/customer_vault_invoices.feature
1139
+ - features/customer_vault_links.feature
1140
+ - features/customer_vault_filters.feature
1141
+ - features/flyboy_task_comments.feature
1142
+ - features/customer_vault_tasks.feature
1143
+ - features/flyboy_tasks.feature