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