diff --git a/app/assets/javascripts/darkswarm/filters/distance_within_km.js.coffee b/app/assets/javascripts/darkswarm/filters/distance_within_km.js.coffee new file mode 100644 index 0000000000..c6a37a2b40 --- /dev/null +++ b/app/assets/javascripts/darkswarm/filters/distance_within_km.js.coffee @@ -0,0 +1,5 @@ +Darkswarm.filter 'distanceWithinKm', -> + (enterprises, range) -> + enterprises ||= [] + enterprises.filter (enterprise) -> + enterprise.distance / 1000 <= range diff --git a/spec/javascripts/unit/darkswarm/filters/distance_within_km_spec.js.coffee b/spec/javascripts/unit/darkswarm/filters/distance_within_km_spec.js.coffee new file mode 100644 index 0000000000..afbc31ee84 --- /dev/null +++ b/spec/javascripts/unit/darkswarm/filters/distance_within_km_spec.js.coffee @@ -0,0 +1,17 @@ +describe "filtering enterprises to those within a certain radius", -> + filter = null + enterprises = [ + {distance: 25000} + {distance: 75000} + ] + + beforeEach -> + module 'Darkswarm' + inject ($filter) -> + filter = $filter('distanceWithinKm') + + it "filters to those enterprises within a distance", -> + expect(filter(enterprises, 50)).toEqual [enterprises[0]] + + it "returns empty array when enterprises array is null", -> + expect(filter(null, 50)).toEqual []