Commit 3549de8

mo khan <mo.khan@gmail.com>
2020-11-14 03:28:33
Extract Equals method
1 parent 9ad0a26
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())
 			})
 		})