Commit 3549de8
Changed files (4)
domain
test
domain/movie.go
@@ -5,3 +5,7 @@ type Movie struct {
Year int
Studio Studio
}
+
+func (self *Movie) Equals(movie Movie) bool {
+ return self.Title == movie.Title && self.Year == movie.Year && self.Studio.Equals(movie.Studio)
+}
domain/movie_library.go
@@ -16,7 +16,9 @@ func (self *MovieLibrary) Find(fn Predicate) *Movie {
}
func (self *MovieLibrary) Add(movie Movie) {
- found := self.Find(func(x Movie) bool { return x.Title == movie.Title })
+ found := self.Find(func(x Movie) bool {
+ return x.Equals(movie)
+ })
if found != nil {
return
domain/studio.go
@@ -3,3 +3,7 @@ package domain
type Studio struct {
Name string
}
+
+func (self *Studio) Equals(studio Studio) bool {
+ return self.Name == studio.Name
+}
test/unit/movie_library_test.go
@@ -43,6 +43,7 @@ func TestMovieLibrary(t *testing.T) {
t.Run("does not allow duplicates", func(t *testing.T) {
subject.Add(man_on_fire)
+
assert.Equal(t, 10, subject.Count())
})
})