atdis 0.3.13 → 0.4.0
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/.rubocop.yml +46 -0
- data/.ruby-version +1 -1
- data/Gemfile +9 -7
- data/Guardfile +4 -3
- data/Rakefile +4 -2
- data/atdis.gemspec +10 -5
- data/lib/atdis.rb +2 -0
- data/lib/atdis/feed.rb +31 -24
- data/lib/atdis/model.rb +101 -99
- data/lib/atdis/models/address.rb +10 -4
- data/lib/atdis/models/application.rb +12 -9
- data/lib/atdis/models/authority.rb +11 -6
- data/lib/atdis/models/document.rb +8 -6
- data/lib/atdis/models/event.rb +10 -8
- data/lib/atdis/models/info.rb +73 -49
- data/lib/atdis/models/land_title_ref.rb +15 -7
- data/lib/atdis/models/location.rb +9 -7
- data/lib/atdis/models/page.rb +34 -19
- data/lib/atdis/models/pagination.rb +91 -32
- data/lib/atdis/models/person.rb +7 -5
- data/lib/atdis/models/reference.rb +7 -5
- data/lib/atdis/models/response.rb +5 -3
- data/lib/atdis/models/torrens_title.rb +9 -7
- data/lib/atdis/separated_url.rb +17 -15
- data/lib/atdis/validators.rb +46 -39
- data/lib/atdis/version.rb +3 -1
- data/spec/atdis/feed_spec.rb +126 -34
- data/spec/atdis/model_spec.rb +124 -51
- data/spec/atdis/models/address_spec.rb +18 -9
- data/spec/atdis/models/application_spec.rb +222 -155
- data/spec/atdis/models/authority_spec.rb +45 -15
- data/spec/atdis/models/document_spec.rb +10 -4
- data/spec/atdis/models/event_spec.rb +23 -11
- data/spec/atdis/models/info_spec.rb +191 -116
- data/spec/atdis/models/land_title_ref_spec.rb +32 -16
- data/spec/atdis/models/location_spec.rb +75 -60
- data/spec/atdis/models/page_spec.rb +241 -135
- data/spec/atdis/models/pagination_spec.rb +177 -77
- data/spec/atdis/models/person_spec.rb +8 -4
- data/spec/atdis/models/reference_spec.rb +29 -16
- data/spec/atdis/models/response_spec.rb +2 -1
- data/spec/atdis/models/torrens_title_spec.rb +24 -18
- data/spec/atdis/separated_url_spec.rb +14 -15
- data/spec/spec_helper.rb +14 -10
- metadata +56 -27
@@ -1,33 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe ATDIS::Models::Authority do
|
4
6
|
describe "validations" do
|
5
7
|
context "a valid ref" do
|
6
|
-
let(:a)
|
7
|
-
|
8
|
+
let(:a) do
|
9
|
+
ATDIS::Models::Authority.new(
|
10
|
+
{
|
11
|
+
ref: "http://www.council.nsw.gov.au/atdis/1.0",
|
12
|
+
name: "Council"
|
13
|
+
},
|
14
|
+
"UTC"
|
15
|
+
)
|
16
|
+
end
|
17
|
+
it { expect(a).to be_valid }
|
8
18
|
end
|
9
19
|
|
10
20
|
context "a valid ref with https" do
|
11
|
-
let(:a)
|
12
|
-
|
21
|
+
let(:a) do
|
22
|
+
ATDIS::Models::Authority.new(
|
23
|
+
{
|
24
|
+
ref: "https://www.council.nsw.gov.au/atdis/1.0",
|
25
|
+
name: "Council"
|
26
|
+
},
|
27
|
+
"UTC"
|
28
|
+
)
|
29
|
+
end
|
30
|
+
it { expect(a).to be_valid }
|
13
31
|
end
|
14
32
|
|
15
33
|
context "an invalid ref that isn't a url" do
|
16
|
-
let(:a) { ATDIS::Models::Authority.new(ref: "foobar", name: "Council")}
|
17
|
-
it
|
18
|
-
a.
|
19
|
-
a.errors.messages.
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
34
|
+
let(:a) { ATDIS::Models::Authority.new({ ref: "foobar", name: "Council" }, "UTC") }
|
35
|
+
it do
|
36
|
+
expect(a).to_not be_valid
|
37
|
+
expect(a.errors.messages).to eq(
|
38
|
+
ref: [
|
39
|
+
ATDIS::ErrorMessage.new("is not a valid URL", "4.3.1"),
|
40
|
+
ATDIS::ErrorMessage.new("is not a valid Unique Authority Identifier", "4.3.1")
|
41
|
+
]
|
42
|
+
)
|
43
|
+
end
|
24
44
|
end
|
25
45
|
|
26
46
|
context "an invalid ref because it doesn't end in atdis/1.0" do
|
27
|
-
let(:a)
|
47
|
+
let(:a) do
|
48
|
+
ATDIS::Models::Authority.new(
|
49
|
+
{
|
50
|
+
ref: "http://www.council.nsw.gov.au/foobar",
|
51
|
+
name: "Council"
|
52
|
+
},
|
53
|
+
"UTC"
|
54
|
+
)
|
55
|
+
end
|
28
56
|
it {
|
29
|
-
a.
|
30
|
-
a.errors.messages.
|
57
|
+
expect(a).to_not be_valid
|
58
|
+
expect(a.errors.messages).to eq(
|
59
|
+
ref: [ATDIS::ErrorMessage.new("is not a valid Unique Authority Identifier", "4.3.1")]
|
60
|
+
)
|
31
61
|
}
|
32
62
|
end
|
33
63
|
end
|
@@ -1,19 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe ATDIS::Models::Document do
|
4
6
|
it ".attribute_names" do
|
5
|
-
ATDIS::Models::Document.attribute_names.
|
7
|
+
expect(ATDIS::Models::Document.attribute_names).to eq %w[ref title document_url]
|
6
8
|
end
|
7
9
|
|
8
10
|
it ".ref" do
|
9
|
-
ATDIS::Models::Document.interpret(ref: "27B/6").ref.
|
11
|
+
expect(ATDIS::Models::Document.interpret({ ref: "27B/6" }, "UTC").ref).to eq "27B/6"
|
10
12
|
end
|
11
13
|
|
12
14
|
it ".title" do
|
13
|
-
|
15
|
+
expect(
|
16
|
+
ATDIS::Models::Document.interpret({ title: "Authorisation for Repairs" }, "UTC").title
|
17
|
+
).to eq "Authorisation for Repairs"
|
14
18
|
end
|
15
19
|
|
16
20
|
it ".document_url" do
|
17
|
-
|
21
|
+
expect(
|
22
|
+
ATDIS::Models::Document.interpret({ document_url: "http://foo.com/bar" }, "UTC").document_url
|
23
|
+
).to eq URI.parse("http://foo.com/bar")
|
18
24
|
end
|
19
25
|
end
|
@@ -1,38 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe ATDIS::Models::Event do
|
4
6
|
it ".attribute_names" do
|
5
|
-
ATDIS::Models::Event.attribute_names.
|
7
|
+
expect(ATDIS::Models::Event.attribute_names).to eq(
|
8
|
+
%w[id timestamp description event_type status]
|
9
|
+
)
|
6
10
|
end
|
7
11
|
|
8
12
|
it ".id" do
|
9
|
-
ATDIS::Models::Event.interpret(id: "27B/6").id.
|
13
|
+
expect(ATDIS::Models::Event.interpret({ id: "27B/6" }, "UTC").id).to eq "27B/6"
|
10
14
|
end
|
11
15
|
|
12
16
|
describe ".date" do
|
13
17
|
it do
|
14
|
-
ATDIS::Models::Event.interpret(timestamp: "2013-06-18").timestamp.
|
18
|
+
expect(ATDIS::Models::Event.interpret({ timestamp: "2013-06-18" }, "UTC").timestamp).to eq(
|
19
|
+
DateTime.new(2013, 6, 18)
|
20
|
+
)
|
15
21
|
end
|
16
22
|
|
17
23
|
it do
|
18
|
-
e = ATDIS::Models::Event.new(description: "Something", id: "27B/6")
|
24
|
+
e = ATDIS::Models::Event.new({ description: "Something", id: "27B/6" }, "UTC")
|
19
25
|
e.timestamp = "18 January 2013"
|
20
|
-
e.
|
21
|
-
e.errors.messages.
|
26
|
+
expect(e).to_not be_valid
|
27
|
+
expect(e.errors.messages).to eq(
|
28
|
+
timestamp: [ATDIS::ErrorMessage["is not a valid date", "4.3.8"]]
|
29
|
+
)
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
25
33
|
it ".description" do
|
26
|
-
|
34
|
+
expect(
|
35
|
+
ATDIS::Models::Event.interpret({ description: "A very fine event" }, "UTC").description
|
36
|
+
).to eq "A very fine event"
|
27
37
|
end
|
28
38
|
|
29
39
|
it ".event_type" do
|
30
|
-
# TODO Is event_type always a string? ATDIS-1.0.3 doesn't say
|
31
|
-
|
40
|
+
# TODO: Is event_type always a string? ATDIS-1.0.3 doesn't say
|
41
|
+
expect(
|
42
|
+
ATDIS::Models::Event.interpret({ event_type: "approval" }, "UTC").event_type
|
43
|
+
).to eq "approval"
|
32
44
|
end
|
33
45
|
|
34
46
|
it ".status" do
|
35
|
-
# TODO Is status always a string? ATDIS-1.0.3 doesn't say
|
36
|
-
ATDIS::Models::Event.interpret(status: "approved").status.
|
47
|
+
# TODO: Is status always a string? ATDIS-1.0.3 doesn't say
|
48
|
+
expect(ATDIS::Models::Event.interpret({ status: "approved" }, "UTC").status).to eq "approved"
|
37
49
|
end
|
38
50
|
end
|
@@ -1,232 +1,291 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe ATDIS::Models::Info do
|
4
|
-
let(:a)
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
let(:a) do
|
7
|
+
ATDIS::Models::Info.new(
|
8
|
+
{
|
9
|
+
dat_id: "DA2013-0381",
|
10
|
+
development_type: "residential",
|
11
|
+
application_type: "DA",
|
12
|
+
last_modified_date: DateTime.new(2013, 4, 20, 2, 1, 7),
|
13
|
+
description: "New pool plus deck",
|
14
|
+
authority: {
|
15
|
+
ref: "http://www.council.nsw.gov.au/atdis/1.0",
|
16
|
+
name: "Example Council Shire Council"
|
17
|
+
},
|
18
|
+
lodgement_date: DateTime.new(2013, 4, 20, 2, 1, 7),
|
19
|
+
determination_date: DateTime.new(2013, 6, 20),
|
20
|
+
determination_type: "Pending",
|
21
|
+
status: "OPEN"
|
22
|
+
},
|
23
|
+
"UTC"
|
24
|
+
)
|
25
|
+
end
|
19
26
|
|
20
27
|
describe "determination_type" do
|
21
28
|
context "is missing" do
|
22
|
-
before(:each) { a.determination_type = nil}
|
29
|
+
before(:each) { a.determination_type = nil }
|
23
30
|
it {
|
24
|
-
a.
|
25
|
-
a.errors.messages.
|
31
|
+
expect(a).to_not be_valid
|
32
|
+
expect(a.errors.messages).to eq(
|
33
|
+
determination_type: [
|
34
|
+
ATDIS::ErrorMessage.new("does not have one of the allowed types", "4.3.1")
|
35
|
+
]
|
36
|
+
)
|
26
37
|
}
|
27
38
|
end
|
28
39
|
|
29
40
|
context "is valid and Pending" do
|
30
41
|
before(:each) { a.determination_type = "Pending" }
|
31
|
-
it { a.
|
42
|
+
it { expect(a).to be_valid }
|
32
43
|
end
|
33
44
|
|
34
45
|
context "is not valid because it's not one of the set of allowed ones" do
|
35
46
|
before(:each) { a.determination_type = "Something random" }
|
36
47
|
it {
|
37
|
-
a.
|
38
|
-
a.errors.messages.
|
48
|
+
expect(a).to_not be_valid
|
49
|
+
expect(a.errors.messages).to eq(
|
50
|
+
determination_type: [
|
51
|
+
ATDIS::ErrorMessage.new("does not have one of the allowed types", "4.3.1")
|
52
|
+
]
|
53
|
+
)
|
39
54
|
}
|
40
55
|
end
|
41
56
|
end
|
42
57
|
|
43
58
|
describe "notification_date" do
|
44
59
|
it "both valid start and end dates" do
|
45
|
-
a.notification_start_date = DateTime.new(2013,4,20,2,1,7)
|
46
|
-
a.notification_end_date = DateTime.new(2013,5,20,0,0,0)
|
47
|
-
a.
|
60
|
+
a.notification_start_date = DateTime.new(2013, 4, 20, 2, 1, 7)
|
61
|
+
a.notification_end_date = DateTime.new(2013, 5, 20, 0, 0, 0)
|
62
|
+
expect(a).to be_valid
|
48
63
|
end
|
49
64
|
|
50
65
|
it "invalid start date" do
|
51
66
|
a.notification_start_date = "18 January 2013"
|
52
|
-
a.notification_end_date = DateTime.new(2013,2,1,0,0,0)
|
53
|
-
a.
|
54
|
-
a.errors.messages.
|
67
|
+
a.notification_end_date = DateTime.new(2013, 2, 1, 0, 0, 0)
|
68
|
+
expect(a).to_not be_valid
|
69
|
+
expect(a.errors.messages).to eq(
|
70
|
+
notification_start_date: [
|
71
|
+
ATDIS::ErrorMessage["is not a valid date", "4.3.1"]
|
72
|
+
]
|
73
|
+
)
|
55
74
|
end
|
56
75
|
|
57
76
|
it "invalid end date" do
|
58
|
-
a.notification_start_date = DateTime.new(2013,1,10,0,0,0)
|
77
|
+
a.notification_start_date = DateTime.new(2013, 1, 10, 0, 0, 0)
|
59
78
|
a.notification_end_date = "18 January 2013"
|
60
|
-
a.
|
61
|
-
a.errors.messages.
|
79
|
+
expect(a).to_not be_valid
|
80
|
+
expect(a.errors.messages).to eq(
|
81
|
+
notification_end_date: [
|
82
|
+
ATDIS::ErrorMessage["is not a valid date", "4.3.1"]
|
83
|
+
]
|
84
|
+
)
|
62
85
|
end
|
63
86
|
|
64
87
|
it "only start date set" do
|
65
|
-
a.notification_start_date = DateTime.new(2013,4,20,2,1,7)
|
66
|
-
a.
|
67
|
-
a.errors.messages.
|
88
|
+
a.notification_start_date = DateTime.new(2013, 4, 20, 2, 1, 7)
|
89
|
+
expect(a).to_not be_valid
|
90
|
+
expect(a.errors.messages).to eq(
|
91
|
+
notification_end_date: [
|
92
|
+
ATDIS::ErrorMessage["can not be blank if notification_start_date is set", "4.3.1"]
|
93
|
+
]
|
94
|
+
)
|
68
95
|
end
|
69
96
|
|
70
97
|
it "only end date set" do
|
71
|
-
a.notification_end_date = DateTime.new(2013,4,20,2,1,7)
|
72
|
-
a.
|
73
|
-
a.errors.messages.
|
98
|
+
a.notification_end_date = DateTime.new(2013, 4, 20, 2, 1, 7)
|
99
|
+
expect(a).to_not be_valid
|
100
|
+
expect(a.errors.messages).to eq(
|
101
|
+
notification_start_date: [
|
102
|
+
ATDIS::ErrorMessage["can not be blank if notification_end_date is set", "4.3.1"]
|
103
|
+
]
|
104
|
+
)
|
74
105
|
end
|
75
106
|
|
76
107
|
it "end date is before start date" do
|
77
|
-
a.notification_start_date = DateTime.new(2013,5,20,0,0,0)
|
78
|
-
a.notification_end_date = DateTime.new(2013,4,20,2,1,7)
|
79
|
-
a.
|
80
|
-
a.errors.messages.
|
108
|
+
a.notification_start_date = DateTime.new(2013, 5, 20, 0, 0, 0)
|
109
|
+
a.notification_end_date = DateTime.new(2013, 4, 20, 2, 1, 7)
|
110
|
+
expect(a).to_not be_valid
|
111
|
+
expect(a.errors.messages).to eq(
|
112
|
+
notification_end_date: [
|
113
|
+
ATDIS::ErrorMessage["can not be earlier than notification_start_date", "4.3.1"]
|
114
|
+
]
|
115
|
+
)
|
81
116
|
end
|
82
117
|
|
83
118
|
it "both dates set to null" do
|
84
119
|
a.notification_start_date = nil
|
85
120
|
a.notification_end_date = nil
|
86
|
-
a.notification_start_date.
|
87
|
-
a.notification_end_date.
|
88
|
-
a.
|
121
|
+
expect(a.notification_start_date).to be_nil
|
122
|
+
expect(a.notification_end_date).to be_nil
|
123
|
+
expect(a).to be_valid
|
89
124
|
end
|
90
125
|
|
91
126
|
it "only start date set to null" do
|
92
127
|
a.notification_start_date = nil
|
93
|
-
a.notification_end_date = DateTime.new(2013,2,1,0,0,0)
|
94
|
-
a.
|
95
|
-
a.errors.messages.
|
128
|
+
a.notification_end_date = DateTime.new(2013, 2, 1, 0, 0, 0)
|
129
|
+
expect(a).to_not be_valid
|
130
|
+
expect(a.errors.messages).to eq(
|
131
|
+
notification_start_date: [
|
132
|
+
ATDIS::ErrorMessage["can not be blank if notification_end_date is set", "4.3.1"]
|
133
|
+
]
|
134
|
+
)
|
96
135
|
end
|
97
136
|
|
98
137
|
it "only end date set to null" do
|
99
|
-
a.notification_start_date = DateTime.new(2013,2,1,0,0,0)
|
138
|
+
a.notification_start_date = DateTime.new(2013, 2, 1, 0, 0, 0)
|
100
139
|
a.notification_end_date = nil
|
101
|
-
a.
|
102
|
-
a.errors.messages.
|
140
|
+
expect(a).to_not be_valid
|
141
|
+
expect(a.errors.messages).to eq(
|
142
|
+
notification_end_date: [
|
143
|
+
ATDIS::ErrorMessage["can not be blank if notification_start_date is set", "4.3.1"]
|
144
|
+
]
|
145
|
+
)
|
103
146
|
end
|
104
147
|
end
|
105
148
|
|
106
149
|
describe ".status" do
|
107
150
|
it do
|
108
151
|
a.status = nil
|
109
|
-
a.
|
110
|
-
a.errors.messages.
|
152
|
+
expect(a).to_not be_valid
|
153
|
+
expect(a.errors.messages).to eq(status: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]])
|
111
154
|
end
|
112
155
|
end
|
113
156
|
|
114
157
|
describe ".determination_date" do
|
115
158
|
it do
|
116
159
|
a.determination_date = nil
|
117
|
-
a.
|
160
|
+
expect(a).to be_valid
|
118
161
|
end
|
119
162
|
it do
|
120
163
|
a.determination_date = "2013-01-18"
|
121
|
-
a.
|
164
|
+
expect(a).to be_valid
|
122
165
|
end
|
123
166
|
it do
|
124
167
|
a.determination_date = "2013-18-01"
|
125
|
-
a.
|
126
|
-
a.errors.messages.
|
168
|
+
expect(a).to_not be_valid
|
169
|
+
expect(a.errors.messages).to eq(
|
170
|
+
determination_date: [ATDIS::ErrorMessage["is not a valid date", "4.3.1"]]
|
171
|
+
)
|
127
172
|
end
|
128
173
|
it do
|
129
174
|
a.determination_date = "18 January 2013"
|
130
|
-
a.
|
131
|
-
a.errors.messages.
|
175
|
+
expect(a).to_not be_valid
|
176
|
+
expect(a.errors.messages).to eq(
|
177
|
+
determination_date: [ATDIS::ErrorMessage["is not a valid date", "4.3.1"]]
|
178
|
+
)
|
132
179
|
end
|
133
180
|
it "nil should be allowed if the application is not yet determined" do
|
134
181
|
a.determination_date = nil
|
135
|
-
a.determination_date.
|
136
|
-
a.
|
182
|
+
expect(a.determination_date).to be_nil
|
183
|
+
expect(a).to be_valid
|
137
184
|
end
|
138
185
|
end
|
139
186
|
|
140
187
|
describe ".lodgement_date" do
|
141
188
|
it do
|
142
189
|
a.lodgement_date = nil
|
143
|
-
a.
|
144
|
-
a.errors.messages.
|
190
|
+
expect(a).to_not be_valid
|
191
|
+
expect(a.errors.messages).to eq(
|
192
|
+
lodgement_date: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]]
|
193
|
+
)
|
145
194
|
end
|
146
195
|
it do
|
147
196
|
a.lodgement_date = "18 January 2013"
|
148
|
-
a.
|
149
|
-
a.errors.messages.
|
197
|
+
expect(a).to_not be_valid
|
198
|
+
expect(a.errors.messages).to eq(
|
199
|
+
lodgement_date: [ATDIS::ErrorMessage["is not a valid date", "4.3.1"]]
|
200
|
+
)
|
150
201
|
end
|
151
202
|
end
|
152
203
|
|
153
204
|
describe ".authority" do
|
154
205
|
it do
|
155
206
|
a.authority = nil
|
156
|
-
a.
|
157
|
-
a.errors.messages.
|
207
|
+
expect(a).to_not be_valid
|
208
|
+
expect(a.errors.messages).to eq(authority: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]])
|
158
209
|
end
|
159
210
|
end
|
160
211
|
|
161
212
|
describe ".description" do
|
162
213
|
it do
|
163
214
|
a.description = ""
|
164
|
-
a.
|
165
|
-
a.errors.messages.
|
215
|
+
expect(a).to_not be_valid
|
216
|
+
expect(a.errors.messages).to eq(description: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]])
|
166
217
|
end
|
167
218
|
end
|
168
219
|
|
169
220
|
describe ".last_modified_date" do
|
170
221
|
it do
|
171
222
|
a.last_modified_date = nil
|
172
|
-
a.
|
173
|
-
a.errors.messages.
|
223
|
+
expect(a).to_not be_valid
|
224
|
+
expect(a.errors.messages).to eq(
|
225
|
+
last_modified_date: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]]
|
226
|
+
)
|
174
227
|
end
|
175
228
|
it do
|
176
229
|
a.last_modified_date = "18 January 2013"
|
177
|
-
a.
|
178
|
-
a.errors.messages.
|
230
|
+
expect(a).to_not be_valid
|
231
|
+
expect(a.errors.messages).to eq(
|
232
|
+
last_modified_date: [ATDIS::ErrorMessage["is not a valid date", "4.3.1"]]
|
233
|
+
)
|
179
234
|
end
|
180
235
|
end
|
181
236
|
|
182
237
|
describe ".dat_id" do
|
183
238
|
it ".dat_id" do
|
184
239
|
a.dat_id = nil
|
185
|
-
a.
|
186
|
-
a.errors.messages.
|
240
|
+
expect(a).to_not be_valid
|
241
|
+
expect(a.errors.messages).to eq(
|
242
|
+
dat_id: [ATDIS::ErrorMessage["can't be blank", "4.3.1"]]
|
243
|
+
)
|
187
244
|
end
|
188
245
|
|
189
246
|
it "should be url encoded" do
|
190
247
|
a.dat_id = "foo bar"
|
191
|
-
a.
|
192
|
-
a.errors.messages.
|
248
|
+
expect(a).to_not be_valid
|
249
|
+
expect(a.errors.messages).to eq(
|
250
|
+
dat_id: [ATDIS::ErrorMessage["should be url encoded", "4.3.1"]]
|
251
|
+
)
|
193
252
|
end
|
194
253
|
|
195
254
|
it "should be valid if url encoded" do
|
196
255
|
a.dat_id = "010%2F2014%2F00000031%2F001"
|
197
|
-
a.
|
256
|
+
expect(a).to be_valid
|
198
257
|
end
|
199
258
|
end
|
200
259
|
|
201
260
|
describe "#description=" do
|
202
|
-
let(:a) { ATDIS::Models::Info.new }
|
261
|
+
let(:a) { ATDIS::Models::Info.new({}, "UTC") }
|
203
262
|
it "should do not type casting when it's already a String" do
|
204
263
|
a.description = "foo"
|
205
|
-
a.description.
|
264
|
+
expect(a.description).to eq "foo"
|
206
265
|
end
|
207
266
|
context "not a string" do
|
208
267
|
before :each do
|
209
268
|
a.description = 123
|
210
269
|
end
|
211
270
|
it "should cast to a string when it's not a string" do
|
212
|
-
a.description.
|
271
|
+
expect(a.description).to eq "123"
|
213
272
|
end
|
214
273
|
it "should keep the original value" do
|
215
|
-
a.description_before_type_cast.
|
274
|
+
expect(a.description_before_type_cast).to eq 123
|
216
275
|
end
|
217
276
|
end
|
218
277
|
end
|
219
278
|
|
220
279
|
describe "#lodgement_date=" do
|
221
|
-
let(:a) { ATDIS::Models::Info.new }
|
280
|
+
let(:a) { ATDIS::Models::Info.new({}, "UTC") }
|
222
281
|
it "should do no type casting when it's already a date" do
|
223
|
-
a.lodgement_date = DateTime.new(2013,1,1)
|
224
|
-
a.lodgement_date.
|
282
|
+
a.lodgement_date = DateTime.new(2013, 1, 1)
|
283
|
+
expect(a.lodgement_date).to eq DateTime.new(2013, 1, 1)
|
225
284
|
end
|
226
285
|
|
227
286
|
it "should cast a string to a date when it's a valid date" do
|
228
287
|
a.lodgement_date = "2013-01-01"
|
229
|
-
a.lodgement_date.
|
288
|
+
expect(a.lodgement_date).to eq DateTime.new(2013, 1, 1)
|
230
289
|
end
|
231
290
|
|
232
291
|
context "not a valid date" do
|
@@ -234,24 +293,24 @@ describe ATDIS::Models::Info do
|
|
234
293
|
a.lodgement_date = "2013/01/01"
|
235
294
|
end
|
236
295
|
it "should be nil" do
|
237
|
-
a.lodgement_date.
|
296
|
+
expect(a.lodgement_date).to be_nil
|
238
297
|
end
|
239
298
|
it "should keep the original string" do
|
240
|
-
a.lodgement_date_before_type_cast.
|
299
|
+
expect(a.lodgement_date_before_type_cast).to eq "2013/01/01"
|
241
300
|
end
|
242
301
|
end
|
243
302
|
end
|
244
303
|
|
245
304
|
describe "#last_modified_date=" do
|
246
|
-
let(:a) { ATDIS::Models::Info.new }
|
305
|
+
let(:a) { ATDIS::Models::Info.new({}, "UTC") }
|
247
306
|
it "should do no type casting when it's already a date" do
|
248
|
-
a.last_modified_date = DateTime.new(2013,1,1)
|
249
|
-
a.last_modified_date.
|
307
|
+
a.last_modified_date = DateTime.new(2013, 1, 1)
|
308
|
+
expect(a.last_modified_date).to eq DateTime.new(2013, 1, 1)
|
250
309
|
end
|
251
310
|
|
252
311
|
it "should cast a string to a date when it's a valid date" do
|
253
312
|
a.last_modified_date = "2013-01-01"
|
254
|
-
a.last_modified_date.
|
313
|
+
expect(a.last_modified_date).to eq DateTime.new(2013, 1, 1)
|
255
314
|
end
|
256
315
|
|
257
316
|
context "not a valid date" do
|
@@ -259,10 +318,10 @@ describe ATDIS::Models::Info do
|
|
259
318
|
a.last_modified_date = "2013/01/01"
|
260
319
|
end
|
261
320
|
it "should be nil" do
|
262
|
-
a.last_modified_date.
|
321
|
+
expect(a.last_modified_date).to be_nil
|
263
322
|
end
|
264
323
|
it "should keep the original string" do
|
265
|
-
a.last_modified_date_before_type_cast.
|
324
|
+
expect(a.last_modified_date_before_type_cast).to eq "2013/01/01"
|
266
325
|
end
|
267
326
|
end
|
268
327
|
end
|
@@ -270,47 +329,63 @@ describe ATDIS::Models::Info do
|
|
270
329
|
describe "related_apps" do
|
271
330
|
context "is missing" do
|
272
331
|
before(:each) { a.related_apps = nil }
|
273
|
-
it { a.
|
332
|
+
it { expect(a).to be_valid }
|
274
333
|
end
|
275
334
|
|
276
335
|
context "is not an array" do
|
277
|
-
before(:each)
|
336
|
+
before(:each) do
|
337
|
+
a.related_apps = "http://www.council.nsw.gov.au/atdis/1.0/2014_20-022DA.json"
|
338
|
+
end
|
278
339
|
it {
|
279
|
-
a.
|
280
|
-
a.errors.messages.
|
340
|
+
expect(a).to_not be_valid
|
341
|
+
expect(a.errors.messages).to eq(
|
342
|
+
related_apps: [ATDIS::ErrorMessage.new("should be an array", "4.3.1")]
|
343
|
+
)
|
281
344
|
}
|
282
345
|
end
|
283
346
|
|
284
347
|
context "are all valid URLs that uniquely identifies a DA" do
|
285
|
-
before(:each)
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
348
|
+
before(:each) do
|
349
|
+
a.related_apps = [
|
350
|
+
"http://www.council.nsw.gov.au/atdis/1.0/2014_20-022DA.json",
|
351
|
+
"http://www.council.nsw.gov.au/foo/bar/atdis/1.0/sdjfsd.json"
|
352
|
+
]
|
353
|
+
end
|
354
|
+
it { expect(a).to be_valid }
|
290
355
|
end
|
291
356
|
|
292
357
|
context "are all valid URLs but one does not end in json" do
|
293
|
-
before(:each)
|
294
|
-
|
295
|
-
|
296
|
-
|
358
|
+
before(:each) do
|
359
|
+
a.related_apps = [
|
360
|
+
"http://www.council.nsw.gov.au/atdis/1.0/2014_20-022DA.json",
|
361
|
+
"http://www.council.nsw.gov.au/foo/bar/atdis/1.0/sdjfsd"
|
362
|
+
]
|
363
|
+
end
|
297
364
|
it {
|
298
|
-
a.
|
299
|
-
a.errors.messages.
|
365
|
+
expect(a).to_not be_valid
|
366
|
+
expect(a.errors.messages).to eq(
|
367
|
+
related_apps: [
|
368
|
+
ATDIS::ErrorMessage.new("contains url(s) not in the expected format", "4.3.1")
|
369
|
+
]
|
370
|
+
)
|
300
371
|
}
|
301
372
|
end
|
302
373
|
|
303
374
|
context "contains an invalid URL" do
|
304
|
-
before(:each)
|
305
|
-
|
306
|
-
|
307
|
-
|
375
|
+
before(:each) do
|
376
|
+
a.related_apps = [
|
377
|
+
"http://www.council.nsw.gov.au/atdis/1.0/2014_20-022DA.json",
|
378
|
+
"foobar"
|
379
|
+
]
|
380
|
+
end
|
308
381
|
it {
|
309
|
-
a.
|
310
|
-
a.errors.messages.
|
311
|
-
|
312
|
-
|
313
|
-
|
382
|
+
expect(a).to_not be_valid
|
383
|
+
expect(a.errors.messages).to eq(
|
384
|
+
related_apps: [
|
385
|
+
ATDIS::ErrorMessage.new("contains an invalid URL", "4.3.1"),
|
386
|
+
ATDIS::ErrorMessage.new("contains url(s) not in the expected format", "4.3.1")
|
387
|
+
]
|
388
|
+
)
|
314
389
|
}
|
315
390
|
end
|
316
391
|
end
|