dorsale 3.10.0 → 3.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/app/models/dorsale/billing_machine/email.rb +3 -1
- data/app/models/dorsale/email.rb +17 -0
- data/config/locales/dorsale.fr.yml +1 -1
- data/lib/dorsale/version.rb +1 -1
- data/spec/models/dorsale/email_spec.rb +39 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6559b13a1111e750335152391d9ad213511c9ff0
|
|
4
|
+
data.tar.gz: dff3aeadb39a076fdbde226fab8be96655a36a9b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2d68ee55bcee6d19c132bab307068d404c01c8e297332d806b8c58bae0bc529c6ea3c8f93f406b15aadf2d2a253e0d506a18543cae11566f4b9c8f7e3f748576
|
|
7
|
+
data.tar.gz: 10287be7d16627f1a5f74cd8821dcd23e14e97f46ed6c50ff3d74355dbc0858501fe6ef13891f15657beaba7132f809f5d3ebbc9470b9ffed4dd813801094b0c
|
data/CHANGELOG.md
CHANGED
|
@@ -13,7 +13,9 @@ class Dorsale::BillingMachine::Email < Dorsale::Email
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def default_to
|
|
16
|
-
|
|
16
|
+
return if document.customer&.email.blank?
|
|
17
|
+
|
|
18
|
+
"#{document.customer} <#{document.customer.email}>"
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def default_subject
|
data/app/models/dorsale/email.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "mail"
|
|
2
|
+
|
|
1
3
|
class Dorsale::Email
|
|
2
4
|
include ActiveModel::Model
|
|
3
5
|
include Agilibox::ModelToS
|
|
@@ -7,6 +9,8 @@ class Dorsale::Email
|
|
|
7
9
|
validates :subject, presence: true
|
|
8
10
|
validates :body, presence: true
|
|
9
11
|
|
|
12
|
+
validate :validate_to_and_cc_format
|
|
13
|
+
|
|
10
14
|
attr_accessor(
|
|
11
15
|
:current_user,
|
|
12
16
|
:from,
|
|
@@ -77,4 +81,17 @@ class Dorsale::Email
|
|
|
77
81
|
def default_attachments
|
|
78
82
|
{}
|
|
79
83
|
end
|
|
84
|
+
|
|
85
|
+
def validate_to_and_cc_format
|
|
86
|
+
validate_addrs_format(:to)
|
|
87
|
+
validate_addrs_format(:cc)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def validate_addrs_format(attr)
|
|
91
|
+
string = public_send(attr).to_s
|
|
92
|
+
return if string.blank?
|
|
93
|
+
addrs = Mail.new(to: string).to_addrs
|
|
94
|
+
return true if addrs.any? && addrs.all? { |addr| URI::MailTo::EMAIL_REGEXP.match?(addr) }
|
|
95
|
+
errors.add(attr, :invalid)
|
|
96
|
+
end
|
|
80
97
|
end
|
data/lib/dorsale/version.rb
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require "rails_helper"
|
|
2
|
+
|
|
3
|
+
describe Dorsale::Email do
|
|
4
|
+
describe "validations" do
|
|
5
|
+
it "should validate :to format" do
|
|
6
|
+
email = described_class.new
|
|
7
|
+
|
|
8
|
+
expect(email).to allow_value("user@example.org").for(:to)
|
|
9
|
+
expect(email).to allow_value("user1@example.org,user2@example.org").for(:to)
|
|
10
|
+
expect(email).to allow_value("user1@example.org;user2@example.org").for(:to)
|
|
11
|
+
expect(email).to allow_value("User <user@example.com>").for(:to)
|
|
12
|
+
expect(email).to allow_value("<user@example.com>").for(:to)
|
|
13
|
+
expect(email).to allow_value("User <user@example.com>;user2@example.org").for(:to)
|
|
14
|
+
|
|
15
|
+
expect(email).to_not allow_value("user").for(:to)
|
|
16
|
+
expect(email).to_not allow_value("user@example.com>").for(:to)
|
|
17
|
+
expect(email).to_not allow_value("<user@example.com").for(:to)
|
|
18
|
+
expect(email).to_not allow_value("valid@example.com;invalid").for(:to)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should validate :cc format" do
|
|
22
|
+
email = described_class.new
|
|
23
|
+
|
|
24
|
+
expect(email).to allow_value("").for(:cc)
|
|
25
|
+
|
|
26
|
+
expect(email).to allow_value("user@example.org").for(:cc)
|
|
27
|
+
expect(email).to allow_value("user1@example.org,user2@example.org").for(:cc)
|
|
28
|
+
expect(email).to allow_value("user1@example.org;user2@example.org").for(:cc)
|
|
29
|
+
expect(email).to allow_value("User <user@example.com>").for(:cc)
|
|
30
|
+
expect(email).to allow_value("<user@example.com>").for(:cc)
|
|
31
|
+
expect(email).to allow_value("User <user@example.com>;user2@example.org").for(:cc)
|
|
32
|
+
|
|
33
|
+
expect(email).to_not allow_value("user").for(:cc)
|
|
34
|
+
expect(email).to_not allow_value("user@example.com>").for(:cc)
|
|
35
|
+
expect(email).to_not allow_value("<user@example.com").for(:cc)
|
|
36
|
+
expect(email).to_not allow_value("valid@example.com;invalid").for(:to)
|
|
37
|
+
end
|
|
38
|
+
end # describe "validations" do
|
|
39
|
+
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.10.
|
|
4
|
+
version: 3.10.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: 2018-
|
|
11
|
+
date: 2018-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -971,6 +971,7 @@ files:
|
|
|
971
971
|
- spec/models/dorsale/customer_vault/link_spec.rb
|
|
972
972
|
- spec/models/dorsale/customer_vault/origin_spec.rb
|
|
973
973
|
- spec/models/dorsale/customer_vault/person_spec.rb
|
|
974
|
+
- spec/models/dorsale/email_spec.rb
|
|
974
975
|
- spec/models/dorsale/expense_gun/category_spec.rb
|
|
975
976
|
- spec/models/dorsale/expense_gun/expense_line_spec.rb
|
|
976
977
|
- spec/models/dorsale/expense_gun/expense_spec.rb
|
|
@@ -1037,6 +1038,7 @@ test_files:
|
|
|
1037
1038
|
- spec/models/dorsale/expense_gun/expense_spec.rb
|
|
1038
1039
|
- spec/models/dorsale/expense_gun/expense_line_spec.rb
|
|
1039
1040
|
- spec/models/dorsale/expense_gun/category_spec.rb
|
|
1041
|
+
- spec/models/dorsale/email_spec.rb
|
|
1040
1042
|
- spec/models/dorsale/customer_vault/person_spec.rb
|
|
1041
1043
|
- spec/models/dorsale/customer_vault/individual_spec.rb
|
|
1042
1044
|
- spec/models/dorsale/customer_vault/activity_type_spec.rb
|