Commit 7f6cc03b0e984d33b3481332941c1d5de7bed318

Authored by Fabio Teixeira
1 parent eecc8ff3
Exists in master

Add timestamp suport for profiles

Signed-off-by: Arthur Del Esposte <arthurmde@gmail.com>
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
controllers/colab_integration_plugin_controller.rb
1 class ColabIntegrationPluginController < ApplicationController 1 class ColabIntegrationPluginController < ApplicationController
2 def index 2 def index
  3 + timestamp = get_timestamp params[:timestamp]
  4 +
  5 + profiles = if timestamp
  6 + environment.profiles.where("updated_at > ?", timestamp)
  7 + else
  8 + environment.profiles
  9 + end
  10 +
3 data = { 11 data = {
4 - "total" => environment.profiles.count, 12 + "timestamp" => Time.zone.now.to_s,
  13 + "total" => profiles.count,
5 "profiles" => [] 14 "profiles" => []
6 } 15 }
7 16
8 - environment.profiles.each do |profile| 17 + profiles.each do |profile|
9 data["profiles"] << profile.attr_to_hash 18 data["profiles"] << profile.attr_to_hash
10 end 19 end
11 20
@@ -13,4 +22,14 @@ class ColabIntegrationPluginController &lt; ApplicationController @@ -13,4 +22,14 @@ class ColabIntegrationPluginController &lt; ApplicationController
13 22
14 data.to_json 23 data.to_json
15 end 24 end
  25 +
  26 + private
  27 +
  28 + def get_timestamp timestamp
  29 + begin
  30 + Time.parse timestamp
  31 + rescue
  32 + nil
  33 + end
  34 + end
16 end 35 end
test/functional/colab_integration_plugin_controller_test.rb
@@ -43,6 +43,33 @@ class ColabIntegrationPluginControllerTest &lt; ActionController::TestCase @@ -43,6 +43,33 @@ class ColabIntegrationPluginControllerTest &lt; ActionController::TestCase
43 person["articles-count"] > 0 43 person["articles-count"] > 0
44 } 44 }
45 assert_equal persons_with_article.count, 1 45 assert_equal persons_with_article.count, 1
  46 + assert_nothing_raised do
  47 + Time.parse environment_data["timestamp"]
  48 + end
  49 + end
  50 +
  51 + should "return a json with only the last updated profiles" do
  52 + time = Time.at 0
  53 +
  54 + Profile.destroy_all
  55 +
  56 + kingsland = Community.create!(:name => "Kings Land", :identifier => "kings-land")
  57 + winterfell = Community.create!(:name => "Winterfell", :identifier => "winterfell")
  58 +
  59 + get :index, :timestamp => time.to_s
  60 +
  61 + environment_data = JSON.parse(@response.body)
  62 +
  63 + assert_equal environment_data["total"], 2
  64 +
  65 + winterfell.updated_at = time
  66 + winterfell.save!
  67 +
  68 + get :index, :timestamp => time.to_s
  69 +
  70 + environment_data = JSON.parse(@response.body)
  71 +
  72 + assert_equal environment_data["total"], 1
46 end 73 end
47 74
48 should "return a hash with activities of the user" do 75 should "return a hash with activities of the user" do