Commit 7f6cc03b0e984d33b3481332941c1d5de7bed318
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>
Showing
2 changed files
with
48 additions
and
2 deletions
Show diff stats
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 < ApplicationController | @@ -13,4 +22,14 @@ class ColabIntegrationPluginController < 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 < ActionController::TestCase | @@ -43,6 +43,33 @@ class ColabIntegrationPluginControllerTest < 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 |