dorsale 3.8.1 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +5 -1
  4. data/app/commands/dorsale/flyboy/task_commands.rb +1 -1
  5. data/app/controllers/concerns/dorsale/flyboy/tasks_summary_concern.rb +0 -1
  6. data/app/controllers/dorsale/alexandrie/attachments_controller.rb +1 -2
  7. data/app/controllers/dorsale/application_controller.rb +0 -1
  8. data/app/controllers/dorsale/billing_machine/application_controller.rb +0 -2
  9. data/app/controllers/dorsale/billing_machine/invoices_controller.rb +9 -22
  10. data/app/controllers/dorsale/billing_machine/payment_terms_controller.rb +0 -1
  11. data/app/controllers/dorsale/billing_machine/quotations_controller.rb +1 -4
  12. data/app/controllers/dorsale/comments_controller.rb +3 -2
  13. data/app/controllers/dorsale/customer_vault/activity_types_controller.rb +0 -1
  14. data/app/controllers/dorsale/customer_vault/application_controller.rb +0 -1
  15. data/app/controllers/dorsale/customer_vault/links_controller.rb +22 -12
  16. data/app/controllers/dorsale/customer_vault/origins_controller.rb +0 -1
  17. data/app/controllers/dorsale/customer_vault/people_controller.rb +2 -3
  18. data/app/controllers/dorsale/expense_gun/categories_controller.rb +0 -1
  19. data/app/controllers/dorsale/expense_gun/expenses_controller.rb +0 -1
  20. data/app/controllers/dorsale/flyboy/task_comments_controller.rb +0 -1
  21. data/app/controllers/dorsale/flyboy/tasks_controller.rb +28 -21
  22. data/app/controllers/dorsale/users_controller.rb +0 -1
  23. data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_payment_status.rb +9 -5
  24. data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_state.rb +2 -2
  25. data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +1 -1
  26. data/app/helpers/dorsale/billing_machine/application_helper.rb +6 -6
  27. data/app/helpers/dorsale/context_helper.rb +1 -1
  28. data/app/helpers/dorsale/flyboy/application_helper.rb +4 -5
  29. data/app/mailers/dorsale/billing_machine/invoice_mailer.rb +0 -1
  30. data/app/mailers/dorsale/flyboy/task_mailer.rb +0 -1
  31. data/app/mailers/dorsale/user_mailer.rb +0 -1
  32. data/app/models/dorsale/address.rb +2 -2
  33. data/app/models/dorsale/alexandrie/attachment_type.rb +0 -1
  34. data/app/models/dorsale/billing_machine.rb +1 -2
  35. data/app/models/dorsale/billing_machine/invoice.rb +19 -30
  36. data/app/models/dorsale/billing_machine/invoice_line.rb +2 -2
  37. data/app/models/dorsale/billing_machine/quotation.rb +11 -17
  38. data/app/models/dorsale/billing_machine/quotation_line.rb +2 -3
  39. data/app/models/dorsale/comment.rb +1 -1
  40. data/app/models/dorsale/customer_vault/corporation.rb +11 -10
  41. data/app/models/dorsale/customer_vault/event.rb +2 -2
  42. data/app/models/dorsale/customer_vault/individual.rb +4 -2
  43. data/app/models/dorsale/customer_vault/person.rb +14 -4
  44. data/app/models/dorsale/customer_vault/person_data.rb +1 -2
  45. data/app/models/dorsale/expense_gun/expense.rb +2 -5
  46. data/app/models/dorsale/expense_gun/expense_line.rb +2 -2
  47. data/app/models/dorsale/flyboy/task.rb +17 -18
  48. data/app/models/dorsale/flyboy/task_comment.rb +1 -1
  49. data/app/models/dorsale/users/active.rb +1 -1
  50. data/app/models/dorsale/users/avatar.rb +2 -1
  51. data/app/models/dorsale/users/password_generation.rb +0 -1
  52. data/app/pdfs/concerns/dorsale/alexandrie/prawn/render_with_attachments.rb +1 -1
  53. data/app/pdfs/dorsale/application_pdf.rb +7 -0
  54. data/app/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf.rb +52 -47
  55. data/app/pdfs/dorsale/billing_machine/invoice_single_vat_pdf.rb +94 -205
  56. data/app/pdfs/dorsale/prawn_helpers.rb +107 -0
  57. data/app/policies/dorsale/application_policy.rb +2 -4
  58. data/app/policies/dorsale/expense_gun/expense_policy_helper.rb +0 -1
  59. data/app/policies/dorsale/flyboy/task_policy_helper.rb +3 -3
  60. data/app/policies/dorsale/policy_checker.rb +11 -18
  61. data/app/services/dorsale/billing_machine/invoice/copy.rb +2 -2
  62. data/app/services/dorsale/billing_machine/pdf_file_generator.rb +7 -2
  63. data/app/services/dorsale/billing_machine/quotation/copy.rb +1 -1
  64. data/app/services/dorsale/billing_machine/quotation/to_invoice.rb +10 -7
  65. data/app/services/dorsale/flyboy/task/snoozer.rb +1 -1
  66. data/app/views/dorsale/billing_machine/invoices/_details.html.slim +1 -2
  67. data/app/views/dorsale/billing_machine/invoices/_form.html.slim +4 -11
  68. data/app/views/dorsale/billing_machine/invoices/index.xlsx.ruby +1 -1
  69. data/app/views/dorsale/flyboy/tasks/index.xlsx.ruby +1 -1
  70. data/config/locales/alexandrie.en.yml +0 -4
  71. data/config/locales/alexandrie.fr.yml +0 -4
  72. data/config/locales/billing_machine.en.yml +0 -41
  73. data/config/locales/billing_machine.fr.yml +0 -41
  74. data/config/routes.rb +0 -1
  75. data/db/migrate/20161119064536_delete_id_cards.rb +9 -0
  76. data/features/billing_machine_invoices.feature +0 -1
  77. data/features/billing_machine_multiple_vat.feature +0 -1
  78. data/features/billing_machine_quotations.feature +0 -1
  79. data/features/step_definitions/billing_machine_invoices_steps.rb +73 -79
  80. data/features/step_definitions/billing_machine_multiple_vat.rb +5 -6
  81. data/features/step_definitions/billing_machine_payment_terms_steps.rb +2 -2
  82. data/features/step_definitions/billing_machine_quotations_steps.rb +45 -80
  83. data/features/step_definitions/common_steps.rb +0 -4
  84. data/features/step_definitions/customer_vault_activity_types_steps.rb +1 -1
  85. data/features/step_definitions/customer_vault_corporations_steps.rb +27 -23
  86. data/features/step_definitions/customer_vault_individuals_steps.rb +8 -9
  87. data/features/step_definitions/customer_vault_invoices_steps.rb +1 -1
  88. data/features/step_definitions/customer_vault_links_steps.rb +6 -6
  89. data/features/step_definitions/customer_vault_origins_steps.rb +1 -1
  90. data/features/step_definitions/customer_vault_people_steps.rb +2 -1
  91. data/features/step_definitions/expense_gun_categories_steps.rb +2 -2
  92. data/features/step_definitions/expense_gun_expenses_steps.rb +6 -6
  93. data/features/step_definitions/flyboy_tasks_steps.rb +4 -7
  94. data/features/step_definitions/tasks_summary_steps.rb +3 -3
  95. data/features/support/env.rb +3 -2
  96. data/lib/dorsale/engine.rb +8 -8
  97. data/lib/dorsale/file_loader.rb +1 -1
  98. data/lib/dorsale/simple_form.rb +3 -3
  99. data/lib/dorsale/simple_form_bootstrap.rb +46 -46
  100. data/lib/dorsale/version.rb +1 -1
  101. data/spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb +3 -3
  102. data/spec/controllers/dorsale/billing_machine/invoices_controller_spec.rb +0 -1
  103. data/spec/controllers/dorsale/comments_controller_spec.rb +1 -1
  104. data/spec/controllers/dorsale/customer_vault/events_controller_spec.rb +9 -9
  105. data/spec/controllers/dorsale/customer_vault/people_controller_spec.rb +15 -19
  106. data/spec/controllers/dorsale/flyboy/task_comments_controller_spec.rb +1 -2
  107. data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +43 -19
  108. data/spec/factories/alexandrie_attachment_types.rb +1 -1
  109. data/spec/factories/alexandrie_attachments.rb +1 -1
  110. data/spec/factories/billing_machine_invoice_lines.rb +1 -1
  111. data/spec/factories/billing_machine_invoices.rb +1 -2
  112. data/spec/factories/billing_machine_payment_terms.rb +1 -1
  113. data/spec/factories/billing_machine_quotation_lines.rb +1 -2
  114. data/spec/factories/billing_machine_quotations.rb +1 -2
  115. data/spec/factories/customer_vault_activity_types.rb +1 -1
  116. data/spec/factories/customer_vault_corporations.rb +1 -1
  117. data/spec/factories/customer_vault_event.rb +1 -1
  118. data/spec/factories/customer_vault_individuals.rb +2 -2
  119. data/spec/factories/customer_vault_links.rb +1 -1
  120. data/spec/factories/customer_vault_origins.rb +1 -1
  121. data/spec/factories/dorsale_addresses.rb +1 -1
  122. data/spec/factories/dorsale_comments.rb +1 -1
  123. data/spec/factories/expense_gun_categories.rb +2 -2
  124. data/spec/factories/expense_gun_expense_lines.rb +8 -8
  125. data/spec/factories/expense_gun_expenses.rb +2 -3
  126. data/spec/factories/flyboy_task_comments.rb +1 -1
  127. data/spec/factories/flyboy_tasks.rb +1 -1
  128. data/spec/mailers/user_mailer.rb +5 -6
  129. data/spec/models/dorsale/address_spec.rb +26 -26
  130. data/spec/models/dorsale/billing_machine/invoice_line_spec.rb +6 -6
  131. data/spec/models/dorsale/billing_machine/invoice_spec.rb +37 -23
  132. data/spec/models/dorsale/billing_machine/quotation_line_spec.rb +9 -10
  133. data/spec/models/dorsale/billing_machine/quotation_spec.rb +26 -28
  134. data/spec/models/dorsale/billing_machine_spec.rb +0 -1
  135. data/spec/models/dorsale/comment_spec.rb +0 -1
  136. data/spec/models/dorsale/customer_vault/corporation_spec.rb +20 -20
  137. data/spec/models/dorsale/customer_vault/event_spec.rb +1 -1
  138. data/spec/models/dorsale/customer_vault/individual_spec.rb +0 -2
  139. data/spec/models/dorsale/customer_vault/link_spec.rb +0 -1
  140. data/spec/models/dorsale/customer_vault/person_spec.rb +7 -6
  141. data/spec/models/dorsale/expense_gun/category_spec.rb +2 -2
  142. data/spec/models/dorsale/expense_gun/expense_line_spec.rb +14 -14
  143. data/spec/models/dorsale/expense_gun/expense_spec.rb +23 -13
  144. data/spec/models/dorsale/flyboy/task_comment_spec.rb +5 -6
  145. data/spec/models/dorsale/flyboy/task_spec.rb +66 -42
  146. data/spec/models/dorsale/users_spec.rb +3 -5
  147. data/spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb +6 -11
  148. data/spec/pdfs/dorsale/billing_machine/invoice_single_vat_pdf_spec.rb +7 -11
  149. data/spec/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf_spec.rb +6 -11
  150. data/spec/pdfs/dorsale/billing_machine/quotation_single_vat_pdf_spec.rb +7 -14
  151. data/spec/rails_helper.rb +1 -1
  152. data/spec/routing/dorsale/billing_machine/invoices_routing_spec.rb +0 -1
  153. data/spec/routing/dorsale/billing_machine/quotations_routing_spec.rb +0 -1
  154. data/spec/routing/dorsale/comments_routing_spec.rb +0 -2
  155. data/spec/routing/dorsale/customer_vault/people_routing_spec.rb +0 -1
  156. data/spec/routing/dorsale/expense_gun/expenses_routing_spec.rb +0 -1
  157. data/spec/routing/dorsale/flyboy/task_comments_routing_spec.rb +0 -1
  158. data/spec/routing/dorsale/users_routing_spec.rb +1 -1
  159. data/spec/services/dorsale/billing_machine/quotation/copy_spec.rb +2 -2
  160. data/spec/services/dorsale/expense_gun/expense/copy_spec.rb +13 -17
  161. data/spec/services/dorsale/flyboy/task/copy_spec.rb +1 -2
  162. data/spec/services/dorsale/flyboy/task/snoozer_spec.rb +3 -3
  163. data/spec/spec_helper.rb +1 -0
  164. metadata +5 -43
  165. data/app/controllers/dorsale/billing_machine/id_cards_controller.rb +0 -106
  166. data/app/models/dorsale/billing_machine/id_card.rb +0 -14
  167. data/app/policies/dorsale/billing_machine/id_card_policy_helper.rb +0 -7
  168. data/app/views/dorsale/billing_machine/id_cards/_form.html.slim +0 -42
  169. data/app/views/dorsale/billing_machine/id_cards/_index_actions.html.slim +0 -2
  170. data/app/views/dorsale/billing_machine/id_cards/_list.html.slim +0 -27
  171. data/app/views/dorsale/billing_machine/id_cards/edit.html.slim +0 -1
  172. data/app/views/dorsale/billing_machine/id_cards/index.html.slim +0 -11
  173. data/app/views/dorsale/billing_machine/id_cards/new.html.slim +0 -1
  174. data/features/billing_machine_id_cards.feature +0 -19
  175. data/features/step_definitions/billing_machine_id_cards_steps.rb +0 -53
  176. data/features/support/ajax.rb +0 -20
  177. data/features/support/database_cleaner.rb +0 -12
  178. data/features/support/factory_girl.rb +0 -1
  179. data/features/support/fix_referrer.rb +0 -9
  180. data/features/support/message_delivery.rb +0 -1
  181. data/features/support/poltergeist.rb +0 -22
  182. data/features/support/rails.rb +0 -1
  183. data/features/support/rspec.rb +0 -6
  184. data/features/support/screenshots.rb +0 -5
  185. data/features/support/sign_in.rb +0 -17
  186. data/features/support/simplecov.rb +0 -1
  187. data/features/support/turbolinks.rb +0 -30
  188. data/spec/factories/billing_machine_id_cards.rb +0 -26
  189. data/spec/models/dorsale/billing_machine/id_card_spec.rb +0 -12
@@ -32,5 +32,4 @@ RSpec.describe Dorsale::BillingMachine do
32
32
  bm.default_currency = "$"
33
33
  expect(bm.default_currency).to eq "$"
34
34
  end
35
-
36
35
  end
@@ -1,6 +1,5 @@
1
1
  require "rails_helper"
2
2
 
3
-
4
3
  RSpec.describe Dorsale::Comment, type: :model do
5
4
  it { is_expected.to belong_to :author }
6
5
  it { is_expected.to validate_presence_of :author }
@@ -1,27 +1,27 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
3
  RSpec.describe ::Dorsale::CustomerVault::Corporation, type: :model do
4
- it { is_expected.to have_one(:address).dependent(:destroy) }
5
- it { is_expected.to have_many :comments }
6
- it { is_expected.to have_many :taggings }
7
- it { is_expected.to have_many :tags }
8
- it { is_expected.to have_many :individuals }
9
- it { is_expected.to have_many(:tasks).dependent(:destroy) }
10
- it { is_expected.to have_many(:events).dependent(:destroy) }
4
+ it { is_expected.to have_one(:address).dependent(:destroy) }
5
+ it { is_expected.to have_many :comments }
6
+ it { is_expected.to have_many :taggings }
7
+ it { is_expected.to have_many :tags }
8
+ it { is_expected.to have_many :individuals }
9
+ it { is_expected.to have_many(:tasks).dependent(:destroy) }
10
+ it { is_expected.to have_many(:events).dependent(:destroy) }
11
11
 
12
- it { is_expected.to respond_to :legal_form }
13
- it { is_expected.to respond_to :capital }
14
- it { is_expected.to respond_to :immatriculation_number }
15
- it { is_expected.to respond_to :naf }
16
- it { is_expected.to respond_to :revenue }
17
- it { is_expected.to respond_to :context }
18
- it { is_expected.to respond_to :number_of_employees }
19
- it { is_expected.to respond_to :societe_com }
12
+ it { is_expected.to respond_to :legal_form }
13
+ it { is_expected.to respond_to :capital }
14
+ it { is_expected.to respond_to :immatriculation_number }
15
+ it { is_expected.to respond_to :naf }
16
+ it { is_expected.to respond_to :revenue }
17
+ it { is_expected.to respond_to :context }
18
+ it { is_expected.to respond_to :number_of_employees }
19
+ it { is_expected.to respond_to :societe_com }
20
20
 
21
- it { is_expected.to belong_to :activity_type }
22
- it { is_expected.to belong_to :origin }
21
+ it { is_expected.to belong_to :activity_type }
22
+ it { is_expected.to belong_to :origin }
23
23
 
24
- it { is_expected.to have_many(:comments).dependent(:destroy) }
24
+ it { is_expected.to have_many(:comments).dependent(:destroy) }
25
25
 
26
- it { is_expected.to validate_presence_of :corporation_name }
26
+ it { is_expected.to validate_presence_of :corporation_name }
27
27
  end
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
3
  RSpec.describe ::Dorsale::CustomerVault::Event, type: :model do
4
4
  it { is_expected.to belong_to :author }
@@ -40,6 +40,4 @@ RSpec.describe ::Dorsale::CustomerVault::Individual, :type => :model do
40
40
  expect(individual.activity_type).to eq nil
41
41
  end
42
42
  end
43
-
44
-
45
43
  end
@@ -12,4 +12,3 @@ RSpec.describe ::Dorsale::CustomerVault::Link, type: :model do
12
12
  it { should validate_presence_of :alice }
13
13
  it { should validate_presence_of :bob }
14
14
  end
15
-
@@ -1,10 +1,10 @@
1
1
  require "rails_helper"
2
2
 
3
3
  RSpec.describe ::Dorsale::CustomerVault::Person, type: :model do
4
- describe '#links' do
4
+ describe "#links" do
5
5
  let!(:c) { create(:customer_vault_corporation) }
6
6
  let!(:i) { create(:customer_vault_individual) }
7
- let!(:link) { create(:customer_vault_link, alice: c, bob: i, title: 'a') }
7
+ let!(:link) { create(:customer_vault_link, alice: c, bob: i, title: "a") }
8
8
 
9
9
  it "should return links" do
10
10
  expect(c.links).to eq [link]
@@ -18,9 +18,9 @@ RSpec.describe ::Dorsale::CustomerVault::Person, type: :model do
18
18
  expect(link.other_person).to eq c
19
19
  end
20
20
 
21
- describe '#destroy' do
21
+ describe "#destroy" do
22
22
  it "should destroy links" do
23
- c.destroy
23
+ c.destroy!
24
24
  expect { link.reload }.to raise_error(ActiveRecord::RecordNotFound)
25
25
  end
26
26
  end
@@ -32,14 +32,15 @@ RSpec.describe ::Dorsale::CustomerVault::Person, type: :model do
32
32
  corporation_event = create(:customer_vault_event, person: corporation)
33
33
  individual_event = create(:customer_vault_event, person: individual)
34
34
 
35
- expect(corporation.self_and_related_events).to contain_exactly(corporation_event, individual_event)
35
+ expect(corporation.self_and_related_events).to \
36
+ contain_exactly(corporation_event, individual_event)
36
37
  expect(individual.self_and_related_events).to contain_exactly(individual_event)
37
38
  end
38
39
 
39
40
  describe "address" do
40
41
  let(:person_without_address) {
41
42
  corporation = Dorsale::CustomerVault::Corporation.create!(name: "agilidée")
42
- corporation.address.destroy
43
+ corporation.address.destroy!
43
44
  corporation
44
45
  }
45
46
 
@@ -1,6 +1,6 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
- RSpec.describe ::Dorsale::ExpenseGun::Category, type: :model do
3
+ RSpec.describe ::Dorsale::ExpenseGun::Category, type: :model do
4
4
  it { is_expected.to validate_presence_of :name }
5
5
 
6
6
  it "category factory should be valid?" do
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
3
  RSpec.describe ::Dorsale::ExpenseGun::ExpenseLine, type: :model do
4
4
  it { is_expected.to belong_to :expense }
@@ -8,7 +8,10 @@ RSpec.describe ::Dorsale::ExpenseGun::ExpenseLine, type: :model do
8
8
  it { is_expected.to validate_presence_of :date }
9
9
  it { is_expected.to validate_presence_of :total_all_taxes }
10
10
  it { is_expected.to validate_presence_of :vat }
11
+ it { is_expected.to validate_presence_of :company_part }
11
12
  it { is_expected.to validate_numericality_of(:total_all_taxes).is_greater_than_or_equal_to(0) }
13
+ it { is_expected.to validate_numericality_of(:company_part).is_greater_than_or_equal_to(0) }
14
+ it { is_expected.to validate_numericality_of(:company_part).is_less_than_or_equal_to(100.0) }
12
15
 
13
16
  it "expense line factory should be valid?" do
14
17
  expense_line = build :expense_gun_expense_line, expense: build(:expense_gun_expense)
@@ -21,33 +24,30 @@ RSpec.describe ::Dorsale::ExpenseGun::ExpenseLine, type: :model do
21
24
  expect(expense_line.vat).to eq 123.0
22
25
  end
23
26
 
24
- it "#company_part should be present" do
25
- expect(build(:expense_gun_expense_line)).to validate_presence_of :company_part
26
- end
27
-
28
- it "#company_part should be >=0 and <= 100" do
29
- expect(build(:expense_gun_expense_line)).to validate_numericality_of(:company_part).is_greater_than_or_equal_to(0).is_less_than_or_equal_to(100.0)
30
- end
31
-
32
27
  it "#company_part should be 100 as default" do
33
- expense_line = ::Dorsale::ExpenseGun::ExpenseLine.new
28
+ expense_line = described_class.new
34
29
  expect(expense_line.company_part).to eq 100.0
35
30
  end
36
31
 
37
32
  it "#employee_payback should be correct" do
38
- expense_line = ::Dorsale::ExpenseGun::ExpenseLine.new(total_all_taxes: 100, company_part: 100)
33
+ expense_line = described_class.new(total_all_taxes: 100, company_part: 100)
39
34
  expect(expense_line.employee_payback).to eq 100.0
40
35
 
41
- expense_line = ::Dorsale::ExpenseGun::ExpenseLine.new(total_all_taxes: 250, company_part: 50)
36
+ expense_line = described_class.new(total_all_taxes: 250, company_part: 50)
42
37
  expect(expense_line.employee_payback).to eq 125.0
43
38
 
44
- expense_line = ::Dorsale::ExpenseGun::ExpenseLine.new(total_all_taxes: 200, company_part: 80)
39
+ expense_line = described_class.new(total_all_taxes: 200, company_part: 80)
45
40
  expect(expense_line.employee_payback).to eq 160.0
46
41
  end
47
42
 
48
43
  it "#total_vat_deductible should be proportional to #company_part}" do
49
44
  category = build(:expense_gun_category, vat_deductible: true)
50
- expense_line = build(:expense_gun_expense_line, category: category, total_all_taxes: 200, vat: 40, company_part: 50)
45
+ expense_line = build(:expense_gun_expense_line,
46
+ :category => category,
47
+ :total_all_taxes => 200,
48
+ :vat => 40,
49
+ :company_part => 50,
50
+ )
51
51
  expect(expense_line.total_vat_deductible).to eq 20.0
52
52
  end
53
53
 
@@ -1,6 +1,6 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
- RSpec.describe ::Dorsale::ExpenseGun::Expense, type: :model do
3
+ RSpec.describe Dorsale::ExpenseGun::Expense, type: :model do
4
4
  it { is_expected.to have_many(:expense_lines).dependent(:destroy) }
5
5
  it { is_expected.to validate_presence_of :name }
6
6
  it { is_expected.to validate_presence_of :date }
@@ -10,11 +10,11 @@ RSpec.describe ::Dorsale::ExpenseGun::Expense, type: :model do
10
10
  end
11
11
 
12
12
  it "default #date should be tody" do
13
- expect(::Dorsale::ExpenseGun::Expense.new.date).to eq Time.zone.now.to_date
13
+ expect(described_class.new.date).to eq Date.current
14
14
  end
15
15
 
16
16
  it "new expense should have new state" do
17
- expect(::Dorsale::ExpenseGun::Expense.new.current_state).to be :draft
17
+ expect(described_class.new.current_state).to be :draft
18
18
  end
19
19
 
20
20
  describe "new state" do
@@ -142,25 +142,35 @@ RSpec.describe ::Dorsale::ExpenseGun::Expense, type: :model do
142
142
 
143
143
  it "#total_employee_payback should return sum of lines" do
144
144
  expense = build(:expense_gun_expense, expense_lines: [])
145
- expense.expense_lines << build(:expense_gun_expense_line, total_all_taxes: 10, company_part: 100)
146
- expense.expense_lines << build(:expense_gun_expense_line, total_all_taxes: 10, company_part: 50)
145
+
146
+ line1 = build(:expense_gun_expense_line, total_all_taxes: 10, company_part: 100)
147
+ expense.expense_lines << line1
148
+
149
+ line2 = build(:expense_gun_expense_line, total_all_taxes: 10, company_part: 50)
150
+ expense.expense_lines << line2
151
+
147
152
  expect(expense.total_employee_payback).to eq 15.0
148
153
  end
149
154
 
150
155
  it "#total_vat_deductible should return sum of lines" do
151
156
  expense = build(:expense_gun_expense, expense_lines: [])
157
+
152
158
  category1 = build(:expense_gun_category, vat_deductible: true)
159
+ line1 = build(:expense_gun_expense_line, vat: 10, category: category1, company_part: 50)
160
+ expense.expense_lines << line1
161
+
153
162
  category2 = build(:expense_gun_category, vat_deductible: false)
154
- expense.expense_lines << build(:expense_gun_expense_line, vat: 10, category: category1, company_part: 50)
155
- expense.expense_lines << build(:expense_gun_expense_line, vat: 10, category: category2, company_part: 50)
163
+ line2 = build(:expense_gun_expense_line, vat: 10, category: category2, company_part: 50)
164
+ expense.expense_lines << line2
165
+
156
166
  expect(expense.total_vat_deductible).to eq 5.0
157
167
  end
158
168
 
159
169
  it "#may_edit? should return false unless expense is not submitted" do
160
- expect(::Dorsale::ExpenseGun::Expense.new(state: :draft).may_edit?).to be true
161
- expect(::Dorsale::ExpenseGun::Expense.new(state: :submitted).may_edit?).to be false
162
- expect(::Dorsale::ExpenseGun::Expense.new(state: :acceped).may_edit?).to be false
163
- expect(::Dorsale::ExpenseGun::Expense.new(state: :refused).may_edit?).to be false
164
- expect(::Dorsale::ExpenseGun::Expense.new(state: :canceled).may_edit?).to be false
170
+ expect(described_class.new(state: :draft).may_edit?).to be true
171
+ expect(described_class.new(state: :submitted).may_edit?).to be false
172
+ expect(described_class.new(state: :acceped).may_edit?).to be false
173
+ expect(described_class.new(state: :refused).may_edit?).to be false
174
+ expect(described_class.new(state: :canceled).may_edit?).to be false
165
175
  end
166
176
  end
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
3
  describe Dorsale::Flyboy::TaskComment do
4
4
  it { is_expected.to belong_to(:task) }
@@ -10,23 +10,23 @@ describe Dorsale::Flyboy::TaskComment do
10
10
  it { is_expected.to belong_to :author }
11
11
  it { is_expected.to validate_presence_of :author }
12
12
 
13
- it 'should have a valid factory' do
13
+ it "should have a valid factory" do
14
14
  expect(build(:flyboy_task_comment)).to be_valid
15
15
  end
16
16
 
17
- it 'should update the task progress upon creation' do
17
+ it "should update the task progress upon creation" do
18
18
  task = create(:flyboy_task, progress: 10)
19
19
  comment = create(:flyboy_task_comment, progress: 20, task: task)
20
20
  expect(task.reload.progress).to eq(20)
21
21
  end
22
22
 
23
- it 'should mark task as complete when progress == 100' do
23
+ it "should mark task as complete when progress == 100" do
24
24
  task = create(:flyboy_task, progress: 10, done: false)
25
25
  comment = create(:flyboy_task_comment, progress: 100, task: task)
26
26
  expect(task.reload.done).to be true
27
27
  end
28
28
 
29
- it 'should mark task as un complete when progress < 100' do
29
+ it "should mark task as un complete when progress < 100" do
30
30
  task = create(:flyboy_task, progress: 100, done: true)
31
31
  comment = create(:flyboy_task_comment, progress: 90, task: task)
32
32
  expect(task.reload.done).to be false
@@ -50,6 +50,5 @@ describe Dorsale::Flyboy::TaskComment do
50
50
  expect(comment1.reload.progress).to eq 30
51
51
  expect(comment2.reload.progress).to eq 50
52
52
  end
53
-
54
53
  end
55
54
  end
@@ -1,4 +1,4 @@
1
- require 'rails_helper'
1
+ require "rails_helper"
2
2
 
3
3
  describe Dorsale::Flyboy::Task do
4
4
  it { is_expected.to belong_to(:taskable) }
@@ -36,8 +36,8 @@ describe Dorsale::Flyboy::Task do
36
36
  end
37
37
  end
38
38
 
39
- describe '#validation' do
40
- it 'factory should be #valid?' do
39
+ describe "#validation" do
40
+ it "factory should be #valid?" do
41
41
  expect(create(:flyboy_task)).to be_valid
42
42
  end
43
43
  end # describe '#validation'
@@ -60,28 +60,52 @@ describe Dorsale::Flyboy::Task do
60
60
  end
61
61
 
62
62
  it "should auto reset reminder_date" do
63
- task = described_class.new(term: "2017-04-12", reminder_type: "custom", reminder_date: "2017-04-11")
63
+ task = described_class.new(
64
+ :term => "2017-04-12",
65
+ :reminder_type => "custom",
66
+ :reminder_date => "2017-04-11",
67
+ )
64
68
  task.reminder_type = nil
65
69
  expect(task.reminder_date).to eq nil
66
70
  end
67
71
 
68
72
  it "should auto set reminder_date by with days" do
69
- task = described_class.new(term: "2017-04-12", reminder_type: "duration", reminder_duration: 1, reminder_unit: "days")
73
+ task = described_class.new(
74
+ :term => "2017-04-12",
75
+ :reminder_type => "duration",
76
+ :reminder_duration => 1,
77
+ :reminder_unit => "days",
78
+ )
70
79
  expect(task.reminder_date).to eq Date.parse("2017-04-11")
71
80
  end
72
81
 
73
82
  it "should auto set reminder_date by with weeks" do
74
- task = described_class.new(term: "2017-04-12", reminder_type: "duration", reminder_duration: 2, reminder_unit: "weeks")
83
+ task = described_class.new(
84
+ :term => "2017-04-12",
85
+ :reminder_type => "duration",
86
+ :reminder_duration => 2,
87
+ :reminder_unit => "weeks",
88
+ )
75
89
  expect(task.reminder_date).to eq Date.parse("2017-03-29")
76
90
  end
77
91
 
78
92
  it "should auto set reminder_date by with months" do
79
- task = described_class.new(term: "2017-04-12", reminder_type: "duration", reminder_duration: 1, reminder_unit: "months")
93
+ task = described_class.new(
94
+ :term => "2017-04-12",
95
+ :reminder_type => "duration",
96
+ :reminder_duration => 1,
97
+ :reminder_unit => "months",
98
+ )
80
99
  expect(task.reminder_date).to eq Date.parse("2017-03-12")
81
100
  end
82
101
 
83
102
  it "update term should update reminder_date" do
84
- task = described_class.new(term: "2017-04-12", reminder_type: "duration", reminder_duration: 1, reminder_unit: "days")
103
+ task = described_class.new(
104
+ :term => "2017-04-12",
105
+ :reminder_type => "duration",
106
+ :reminder_duration => 1,
107
+ :reminder_unit => "days",
108
+ )
85
109
  expect(task.reminder_date).to eq Date.parse("2017-04-11")
86
110
  task.term = "2017-04-25"
87
111
  expect(task.reminder_date).to eq Date.parse("2017-04-24")
@@ -90,51 +114,51 @@ describe Dorsale::Flyboy::Task do
90
114
 
91
115
  describe "scopes" do
92
116
  it "should return delayed undone tasks" do
93
- task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+1)
94
- task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-1, done: true)
95
- task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-1, done: false)
96
- task_3 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-2, done: true)
97
- task_4 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-2, done: false)
117
+ task = create(:flyboy_task, owner: @user1, term: Date.current+1)
118
+ task1 = create(:flyboy_task, owner: @user1, term: Date.current-1, done: true)
119
+ task2 = create(:flyboy_task, owner: @user1, term: Date.current-1, done: false)
120
+ task3 = create(:flyboy_task, owner: @user1, term: Date.current-2, done: true)
121
+ task4 = create(:flyboy_task, owner: @user1, term: Date.current-2, done: false)
98
122
  tasks = ::Dorsale::Flyboy::Task.delayed
99
- expect(tasks).to contain_exactly(task_2, task_4)
123
+ expect(tasks).to contain_exactly(task2, task4)
100
124
  end
101
125
 
102
126
  it "should return today undone tasks" do
103
- task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+1)
104
- task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: true)
105
- task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: false)
127
+ task = create(:flyboy_task, owner: @user1, term: Date.current+1)
128
+ task1 = create(:flyboy_task, owner: @user1, term: Date.current, done: true)
129
+ task2 = create(:flyboy_task, owner: @user1, term: Date.current, done: false)
106
130
  tasks = ::Dorsale::Flyboy::Task.today
107
- expect(tasks).to contain_exactly(task_2)
131
+ expect(tasks).to contain_exactly(task2)
108
132
  end
109
133
 
110
134
  it "should return tomorrow undone tasks" do
111
- task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date)
112
- task_1 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: true)
113
- task_2 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: false)
135
+ task = create(:flyboy_task, owner: @user1, term: Date.current)
136
+ task1 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: true)
137
+ task2 = create(:flyboy_task, owner: @user1, term: Date.tomorrow, done: false)
114
138
  tasks = ::Dorsale::Flyboy::Task.tomorrow
115
- expect(tasks).to contain_exactly(task_2)
139
+ expect(tasks).to contain_exactly(task2)
116
140
  end
117
141
 
118
142
  it "should return this week undone tasks" do
119
143
  Timecop.freeze(2015, 5, 21, 12, 0, 0)
120
- task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date-7, done: false)
121
- task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+2, done: true)
122
- task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+2, done: false)
123
- task_3 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+3, done: false)
124
- task_4 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+5, done: false)
144
+ task = create(:flyboy_task, owner: @user1, term: Date.current-7, done: false)
145
+ task1 = create(:flyboy_task, owner: @user1, term: Date.current+2, done: true)
146
+ task2 = create(:flyboy_task, owner: @user1, term: Date.current+2, done: false)
147
+ task3 = create(:flyboy_task, owner: @user1, term: Date.current+3, done: false)
148
+ task4 = create(:flyboy_task, owner: @user1, term: Date.current+5, done: false)
125
149
  tasks = ::Dorsale::Flyboy::Task.this_week
126
- expect(tasks).to contain_exactly(task_2, task_3)
150
+ expect(tasks).to contain_exactly(task2, task3)
127
151
  end
128
152
 
129
153
  it "should return next week undone tasks" do
130
154
  Timecop.freeze(2015, 5, 21)
131
- task = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date, done: false)
132
- task_1 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+7, done: true)
133
- task_2 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+7, done: false)
134
- task_3 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+9, done: false)
135
- task_4 = create(:flyboy_task, owner: @user1, term: Time.zone.now.to_date+12, done: false)
155
+ task = create(:flyboy_task, owner: @user1, term: Date.current, done: false)
156
+ task1 = create(:flyboy_task, owner: @user1, term: Date.current+7, done: true)
157
+ task2 = create(:flyboy_task, owner: @user1, term: Date.current+7, done: false)
158
+ task3 = create(:flyboy_task, owner: @user1, term: Date.current+9, done: false)
159
+ task4 = create(:flyboy_task, owner: @user1, term: Date.current+12, done: false)
136
160
  tasks = ::Dorsale::Flyboy::Task.next_week
137
- expect(tasks).to contain_exactly(task_2, task_3)
161
+ expect(tasks).to contain_exactly(task2, task3)
138
162
  end
139
163
  end # describe "scopes"
140
164
 
@@ -144,8 +168,8 @@ describe Dorsale::Flyboy::Task do
144
168
  let(:task_ontime) {
145
169
  create(:flyboy_task,
146
170
  :reminder_type => "custom",
147
- :reminder_date => Time.zone.now.to_date + 1.day,
148
- :term => Time.zone.now.to_date + 3.days,
171
+ :reminder_date => Date.current + 1.day,
172
+ :term => Date.current + 3.days,
149
173
  :done => false,
150
174
  )
151
175
  }
@@ -159,8 +183,8 @@ describe Dorsale::Flyboy::Task do
159
183
  let(:task_onwarning) {
160
184
  create(:flyboy_task,
161
185
  :reminder_type => "custom",
162
- :reminder_date => Time.zone.now.to_date,
163
- :term => Time.zone.now.to_date + 3.days,
186
+ :reminder_date => Date.current,
187
+ :term => Date.current + 3.days,
164
188
  :done => false,
165
189
  )
166
190
  }
@@ -174,8 +198,8 @@ describe Dorsale::Flyboy::Task do
174
198
  let(:task_onalert) {
175
199
  create(:flyboy_task,
176
200
  :reminder_type => "custom",
177
- :reminder_date => Time.zone.now.to_date - 3.days,
178
- :term => Time.zone.now.to_date,
201
+ :reminder_date => Date.current - 3.days,
202
+ :term => Date.current,
179
203
  :done => false,
180
204
  )
181
205
  }
@@ -189,8 +213,8 @@ describe Dorsale::Flyboy::Task do
189
213
  let(:task_done) {
190
214
  create(:flyboy_task,
191
215
  :reminder_type => "custom",
192
- :reminder_date => Time.zone.now.to_date - 3.days,
193
- :term => Time.zone.now.to_date - 1.day,
216
+ :reminder_date => Date.current - 3.days,
217
+ :term => Date.current - 1.day,
194
218
  :done => true,
195
219
  )
196
220
  }