diff --git a/app/models/user.rb b/app/models/user.rb index 692788b4e70157f5217145429effa8b494acf371..42aa5ebb3ff2ab3eb192bfdf0ac3f74fb41311d3 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -948,7 +948,7 @@ class User < ActiveRecord::Base end def record_activity - Gitlab::User::ActivitySet.record(self) + Gitlab::UserActivities::ActivitySet.record(self) end private diff --git a/lib/api/users.rb b/lib/api/users.rb index 87d27e1d15f003a1b3ba6a1986c43ccdd150e888..8d85c8730fbb2d8cf66e7da25c70e701a9119b38 100644 --- a/lib/api/users.rb +++ b/lib/api/users.rb @@ -467,9 +467,9 @@ module API get ":activities" do authenticated_as_admin! - activity_set = Gitlab::User::ActivitySet.new(from: params[:from], - page: params[:page], - per_page: params[:per_page]) + activity_set = Gitlab::UserActivities::ActivitySet.new(from: params[:from], + page: params[:page], + per_page: params[:per_page]) add_pagination_headers(activity_set) diff --git a/lib/gitlab/user/activity.rb b/lib/gitlab/user_activities/activity.rb similarity index 91% rename from lib/gitlab/user/activity.rb rename to lib/gitlab/user_activities/activity.rb index 8ebdc030e77b9cc2f78a295409b00679f7617672..0909c441538b2b174d2145f3ed2838a73b45117d 100644 --- a/lib/gitlab/user/activity.rb +++ b/lib/gitlab/user_activities/activity.rb @@ -1,5 +1,5 @@ module Gitlab - module User + module UserActivities class Activity attr_reader :username diff --git a/lib/gitlab/user/activity_set.rb b/lib/gitlab/user_activities/activity_set.rb similarity index 94% rename from lib/gitlab/user/activity_set.rb rename to lib/gitlab/user_activities/activity_set.rb index 6020ba20686d92615e161bc09e820e6037220c5e..ba9d51f6861c2146359e6b4a8811c4d61b2da30d 100644 --- a/lib/gitlab/user/activity_set.rb +++ b/lib/gitlab/user_activities/activity_set.rb @@ -1,5 +1,5 @@ module Gitlab - module User + module UserActivities class ActivitySet include Gitlab::PaginationUtil @@ -12,7 +12,7 @@ module Gitlab end end - def initialize(from:, page:, per_page:) + def initialize(from: nil, page: nil, per_page: nil) @from = sanitize_date(from) @to = Time.now.to_i @page = page diff --git a/spec/lib/gitlab/user/activity_set_spec.rb b/spec/lib/gitlab/user/activity_set_spec.rb deleted file mode 100644 index 22d42a8035031122f569976f7e858a422ced3566..0000000000000000000000000000000000000000 --- a/spec/lib/gitlab/user/activity_set_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'spec_helper' - -describe Gitlab::User::ActivitySet, :redis, lib: true do - let(:user) { create(:user) } - - it 'shows the last user activities' do - Timecop.freeze do - user.record_activity - - expect(described_class.query).to eq({ username: user.username, - last_activity: DateTime.now }) - end - end - - context 'paginated activities' do - before do - Timecop.scale(3600) - - 7.times do - create(:user).record_activity - end - end - - after do - Timecop.return - end - - it 'shows the 5 oldest user activities paginated' do - expect(described_class.query(per_page: 5).count).to eq(5) - end - - it 'shows the 2 reamining user activities paginated' do - expect(described_class.query(per_page: 5, page: 1).count).to eq(2) - end - - it 'shows the oldest first' do - # FIXME - expect(described_class.query.first.second).to be < described_class.query.last.second - end - end - - context 'filter by date' do - before do - Timecop.freeze(Date.yesterday) - end - - after do - Timecop.return - end - - it 'shows activities from yesterday' do - expect(described_class.query(from: Date.yesterday).count).to eq(1) - end - - it 'filter activities from today' do - expect(described_class.query(from: Date.today).count).to eq(0) - end - end -end diff --git a/spec/lib/gitlab/user_activities/activity_set_spec.rb b/spec/lib/gitlab/user_activities/activity_set_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..7b3e3248b946d3b09e6139d9e42196e7af6a4f2e --- /dev/null +++ b/spec/lib/gitlab/user_activities/activity_set_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe Gitlab::UserActivities::ActivitySet, :redis, lib: true do + let(:user) { create(:user) } + + it 'shows the last user activity' do + Timecop.freeze do + user.record_activity + + expect(described_class.new.activities.first).to be_an_instance_of(Gitlab::UserActivities::Activity) + end + end + + context 'paginated activities' do + before do + Timecop.scale(3600) + + 7.times do + create(:user).record_activity + end + end + + after do + Timecop.return + end + + it 'shows the 5 oldest user activities paginated' do + expect(described_class.new(per_page: 5).activities.count).to eq(5) + end + + it 'shows the 2 reamining user activities paginated' do + expect(described_class.new(per_page: 5, page: 2).activities.count).to eq(2) + end + + it 'shows the oldest first' do + activities = described_class.new.activities + + expect(activities.first.last_activity_at).to be < activities.last.last_activity_at + end + end + + context 'filter by date' do + before do + create(:user).record_activity + end + + it 'shows activities from yesterday' do + today = Date.today.to_s("%Y-%m-%d") + + expect(described_class.new(from: today).activities.count).to eq(1) + end + + it 'filter activities from today' do + tomorrow = Date.tomorrow.to_s("%Y-%m-%d") + + expect(described_class.new(from: tomorrow).activities.count).to eq(0) + end + end +end diff --git a/spec/lib/gitlab/user/activity_spec.rb b/spec/lib/gitlab/user_activities/activity_spec.rb similarity index 83% rename from spec/lib/gitlab/user/activity_spec.rb rename to spec/lib/gitlab/user_activities/activity_spec.rb index ed91c5ad279dbc09649df02666638a0e41934c09..6a1150f50c1b2744340f5e074779160fc28fe8b1 100644 --- a/spec/lib/gitlab/user/activity_spec.rb +++ b/spec/lib/gitlab/user_activities/activity_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Gitlab::User::Activity, :redis, lib: true do +describe Gitlab::UserActivities::Activity, :redis, lib: true do let(:username) { 'user' } let(:activity) { described_class.new('user', Time.new(2016, 12, 12).to_i) }