Commit 86ad7b7

mo khan <mo@mokhan.ca>
2013-11-09 15:36:15
refactor to Where Specification to match by target object attributes.
1 parent eac28ff
src/movie.coffee
@@ -7,13 +7,15 @@ module.exports = class Movie
   equals: (other) ->
     @title == other["title"]
 
-  @by: (studio) ->
-    console.log(studio)
-    new StudioSpecification(studio)
+  @where: (condition) ->
+    new WhereSpecification(condition)
+
+class WhereSpecification
+  constructor: (condition) ->
+    @condition = condition
+
+  matches: (item) ->
+    for key in Object.keys(@condition)
+      item[key] == @condition[key]
 
-class StudioSpecification
-  constructor: (studio) ->
-    @studio = studio
 
-  matches: (movie) ->
-    @studio == movie.studio
test/movie_library_spec.coffee
@@ -49,7 +49,7 @@ describe "MovieLibrary", ->
         @sut.add(movie)
 
     it "can find all pixar movies", ->
-      results = @sut.all(Movie.by(Studio.Pixar))
+      results = @sut.all(Movie.where(studio: Studio.Pixar))
       results.should.include(@toy_story)
       results.should.include(@up)
       results.should.include(@cars)