Commit eac28ff
Changed files (3)
src/movie.coffee
@@ -6,3 +6,14 @@ module.exports = class Movie
equals: (other) ->
@title == other["title"]
+
+ @by: (studio) ->
+ console.log(studio)
+ new StudioSpecification(studio)
+
+class StudioSpecification
+ constructor: (studio) ->
+ @studio = studio
+
+ matches: (movie) ->
+ @studio == movie.studio
src/movie_library.coffee
@@ -20,6 +20,10 @@ Enumerable =
results.push(item) if predicate(item)
results
+ all: (specification) ->
+ @find_all (movie) ->
+ specification.matches(movie)
+
moduleKeywords = ['extended', 'included']
class Module
@@ -46,10 +50,6 @@ module.exports = class MovieLibrary extends Module
for movie in @movies
visitor(movie)
- find_all_movies_by_pixar: ->
- @find_all (movie) =>
- movie.studio == Studio.Pixar
-
find_movies_by_pixar_or_disney: ->
@find_all (movie) =>
movie.studio == Studio.Pixar || movie.studio == Studio.Disney
test/movie_library_spec.coffee
@@ -49,7 +49,7 @@ describe "MovieLibrary", ->
@sut.add(movie)
it "can find all pixar movies", ->
- results = @sut.find_all_movies_by_pixar()
+ results = @sut.all(Movie.by(Studio.Pixar))
results.should.include(@toy_story)
results.should.include(@up)
results.should.include(@cars)