Commit 6dacafc81d15ec96f422ded0ace2791cbd88a5d7

Authored by ABNER SILVA DE OLIVEIRA
1 parent c93899a3

changed to expose all statistics on StatisticsBlock under an array called statistics

plugins/statistics/lib/ext/entities.rb
@@ -4,14 +4,18 @@ module Noosfero @@ -4,14 +4,18 @@ module Noosfero
4 module Entities 4 module Entities
5 class Block < Entity 5 class Block < Entity
6 available_counters = (StatisticsBlock::USER_COUNTERS + StatisticsBlock::COMMUNITY_COUNTERS + StatisticsBlock::ENTERPRISE_COUNTERS).uniq 6 available_counters = (StatisticsBlock::USER_COUNTERS + StatisticsBlock::COMMUNITY_COUNTERS + StatisticsBlock::ENTERPRISE_COUNTERS).uniq
7 -  
8 - available_counters.each do |counter_attr|  
9 - expose counter_attr, :if => lambda{|block,options| block.respond_to?(counter_attr) && block.is_counter_available?(counter_attr)}  
10 -  
11 - counter_method = counter_attr.to_s.gsub('_counter','').pluralize.to_sym  
12 - expose counter_method, :if => lambda { |block,options|  
13 - block.respond_to?(counter_method) && block.is_visible?(counter_attr)  
14 - } 7 + expose :statistics, :if => lambda { |block, options| block.is_a? StatisticsBlock } do |block, options|
  8 + statistics = []
  9 + available_counters.each do |counter_attr|
  10 + counter_method = counter_attr.to_s.gsub('_counter','').pluralize.to_sym
  11 + counter = {
  12 + name: counter_method,
  13 + display: block.is_counter_available?(counter_attr) && block.is_visible?(counter_attr),
  14 + quantity: (block.respond_to?(counter_method) && block.is_visible?(counter_attr)) ? block.send(counter_method) : nil
  15 + }
  16 + statistics << counter
  17 + end
  18 + statistics
15 end 19 end
16 20
17 end 21 end
plugins/statistics/test/unit/api_test.rb
@@ -19,10 +19,12 @@ class ApiTest &lt; ActiveSupport::TestCase @@ -19,10 +19,12 @@ class ApiTest &lt; ActiveSupport::TestCase
19 block = StatisticsBlock.create!(:box_id => box.id) 19 block = StatisticsBlock.create!(:box_id => box.id)
20 block.send("#{counter_attr}=", true) 20 block.send("#{counter_attr}=", true)
21 block.save 21 block.save
  22 + StatisticsBlock.any_instance.stubs(counter_method).returns(20)
22 get "/api/v1/profiles/#{person.id}/boxes?#{params.to_query}" 23 get "/api/v1/profiles/#{person.id}/boxes?#{params.to_query}"
23 -  
24 json = JSON.parse(last_response.body) 24 json = JSON.parse(last_response.body)
25 - assert_not_nil json["boxes"].first['blocks'].first[counter_method.to_s] 25 + statistics = json['boxes'].first['blocks'].first['statistics']
  26 + statistic_for_method = statistics.select {|statistic| statistic if statistic['name'].eql? counter_method.to_s }
  27 + assert_equal statistic_for_method.first['quantity'], 20
26 end 28 end
27 29
28 define_method "test_should_not_return_#{counter_method}_attribute_in_statistics_block_if_#{counter_attr} is false" do 30 define_method "test_should_not_return_#{counter_method}_attribute_in_statistics_block_if_#{counter_attr} is false" do
@@ -31,10 +33,12 @@ class ApiTest &lt; ActiveSupport::TestCase @@ -31,10 +33,12 @@ class ApiTest &lt; ActiveSupport::TestCase
31 block = StatisticsBlock.create!(:box_id => box.id) 33 block = StatisticsBlock.create!(:box_id => box.id)
32 block.send("#{counter_attr}=", false) 34 block.send("#{counter_attr}=", false)
33 block.save 35 block.save
  36 + StatisticsBlock.any_instance.stubs(counter_method).returns(20)
34 get "/api/v1/profiles/#{person.id}/boxes?#{params.to_query}" 37 get "/api/v1/profiles/#{person.id}/boxes?#{params.to_query}"
35 -  
36 json = JSON.parse(last_response.body) 38 json = JSON.parse(last_response.body)
37 - assert_nil json["boxes"].first['blocks'].first[counter_method] 39 + statistics = json['boxes'].first['blocks'].first['statistics']
  40 + statistic_for_method = statistics.select {|statistic| statistic if statistic['name'].eql? counter_method.to_s }
  41 + assert_nil statistic_for_method.first["quantity"]
38 end 42 end
39 end 43 end
40 44