Commit 8b7475adc83779f0a44318ea37c34ae6b16cd033
1 parent
a2bdbbc6
Exists in
staging
and in
4 other branches
considering timezone in api time filters
Showing
3 changed files
with
34 additions
and
1 deletions
Show diff stats
app/api/helpers.rb
| @@ -248,7 +248,7 @@ module Api | @@ -248,7 +248,7 @@ module Api | ||
| 248 | def make_timestamp_with_parameters_and_method(object, method_or_relation, params) | 248 | def make_timestamp_with_parameters_and_method(object, method_or_relation, params) |
| 249 | timestamp = nil | 249 | timestamp = nil |
| 250 | if params[:timestamp] | 250 | if params[:timestamp] |
| 251 | - datetime = DateTime.parse(params[:timestamp]) | 251 | + datetime = DateTime.parse(params[:timestamp]).utc |
| 252 | table_name = extract_associated_tablename(object, method_or_relation) | 252 | table_name = extract_associated_tablename(object, method_or_relation) |
| 253 | assoc_class = extract_associated_classname(object, method_or_relation) | 253 | assoc_class = extract_associated_classname(object, method_or_relation) |
| 254 | date_atrr = assoc_class.attribute_names.include?('updated_at') ? 'updated_at' : 'created_at' | 254 | date_atrr = assoc_class.attribute_names.include?('updated_at') ? 'updated_at' : 'created_at' |
test/api/activities_test.rb
| @@ -182,7 +182,24 @@ class ActivitiesTest < ActiveSupport::TestCase | @@ -182,7 +182,24 @@ class ActivitiesTest < ActiveSupport::TestCase | ||
| 182 | assert_not_includes json["activities"].map { |a| a["id"] }, a2.id | 182 | assert_not_includes json["activities"].map { |a| a["id"] }, a2.id |
| 183 | end | 183 | end |
| 184 | 184 | ||
| 185 | + should 'list activities with timestamp considering timezone' do | ||
| 186 | + ActionTracker::Record.destroy_all | ||
| 187 | + a1 = create_activity(:target => person) | ||
| 188 | + a2 = create_activity(:target => person) | ||
| 189 | + a2.updated_at = ActiveSupport::TimeZone.new('Brasilia').now | ||
| 190 | + a2.save | ||
| 191 | + | ||
| 192 | + a1.updated_at = ActiveSupport::TimeZone.new('Brasilia').now + 3.hours | ||
| 193 | + a1.save! | ||
| 194 | + | ||
| 185 | 195 | ||
| 196 | + params[:timestamp] = ActiveSupport::TimeZone.new('Brasilia').now + 1.hours | ||
| 197 | + get "/api/v1/profiles/#{person.id}/activities?#{params.to_query}" | ||
| 198 | + json = JSON.parse(last_response.body) | ||
| 199 | + | ||
| 200 | + assert_includes json["activities"].map { |a| a["id"] }, a1.id | ||
| 201 | + assert_not_includes json["activities"].map { |a| a["id"] }, a2.id | ||
| 202 | + end | ||
| 186 | 203 | ||
| 187 | def create_activity(params = {}) | 204 | def create_activity(params = {}) |
| 188 | params[:verb] ||= 'create_article' | 205 | params[:verb] ||= 'create_article' |
test/api/task_test.rb
| @@ -157,6 +157,22 @@ class TasksTest < ActiveSupport::TestCase | @@ -157,6 +157,22 @@ class TasksTest < ActiveSupport::TestCase | ||
| 157 | assert_not_includes json["tasks"].map { |a| a["id"] }, t2.id | 157 | assert_not_includes json["tasks"].map { |a| a["id"] }, t2.id |
| 158 | end | 158 | end |
| 159 | 159 | ||
| 160 | + should 'list tasks with timestamp considering timezone' do | ||
| 161 | + t1 = create(Task, :requestor => person, :target => person) | ||
| 162 | + t2 = create(Task, :requestor => person, :target => person, :created_at => ActiveSupport::TimeZone.new('Brasilia').now) | ||
| 163 | + | ||
| 164 | + t1.created_at = ActiveSupport::TimeZone.new('Brasilia').now + 3.hours | ||
| 165 | + t1.save! | ||
| 166 | + | ||
| 167 | + | ||
| 168 | + params[:timestamp] = ActiveSupport::TimeZone.new('Brasilia').now + 1.hours | ||
| 169 | + get "/api/v1/tasks/?#{params.to_query}" | ||
| 170 | + json = JSON.parse(last_response.body) | ||
| 171 | + | ||
| 172 | + assert_includes json["tasks"].map { |a| a["id"] }, t1.id | ||
| 173 | + assert_not_includes json["tasks"].map { |a| a["id"] }, t2.id | ||
| 174 | + end | ||
| 175 | + | ||
| 160 | task_actions=%w[finish cancel] | 176 | task_actions=%w[finish cancel] |
| 161 | task_actions_state={"finish"=>"FINISHED","cancel"=>"CANCELLED"} | 177 | task_actions_state={"finish"=>"FINISHED","cancel"=>"CANCELLED"} |
| 162 | task_actions.each do |action| | 178 | task_actions.each do |action| |