-
Notifications
You must be signed in to change notification settings - Fork 3
/
movie_validator.rb
62 lines (48 loc) · 1.03 KB
/
movie_validator.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class MovieValidator
def self.validate(movie)
new(movie).validate
end
def initialize(movie)
@movie = movie
end
def validate
result = Result.new
result << validate_title
result << validate_has_release_date
result << validate_release_date
result
end
private
attr_reader :movie
def validate_title
"Title can't be empty." if title_empty?
end
def validate_has_release_date
"Release date can't be empty." if release_date_empty?
end
def validate_release_date
return if release_date_empty?
"Release date is before the world's first motion picture." if release_date_before_1895?
end
def title_empty?
movie.title.blank?
end
def release_date_empty?
movie.release_date.nil?
end
def release_date_before_1895?
movie.release_date.year < 1895
end
class Result
attr_reader :messages
def initialize
@messages = []
end
def okay?
messages.empty?
end
def <<(message)
@messages << message if message
end
end
end