Commit 509c4830 authored by James Lopez's avatar James Lopez

getting rid of pagination util and more refactoring of specs

parent 922e6cf0
module Gitlab
module PaginationUtil
delegate :total_count,
:total_pages,
:current_page,
:limit_value,
:first_page?,
:prev_page,
:last_page?,
:next_page, to: :pagination_delegate
# requires a Gitlab::PaginationDelegate instance with the default configuration.
# Example:
# @pagination_delegate ||= Gitlab::PaginationDelegate.new(page: 1,
# per_page: 10,
# count: 20)
def pagination_delegate
raise NotImplementedError.new("Expected #{self.class.name} to implement #{__method__}")
end
end
end
module Gitlab module Gitlab
module UserActivities module UserActivities
class ActivitySet class ActivitySet
include Gitlab::PaginationUtil delegate :total_count,
:total_pages,
:current_page,
:limit_value,
:first_page?,
:prev_page,
:last_page?,
:next_page, to: :pagination_delegate
KEY = 'user/activities' KEY = 'user/activities'
......
require 'spec_helper'
describe Gitlab::PaginationUtil, lib: true do
context 'class with no pagination delegate defined' do
let(:pagination_class) { Class.new { extend Gitlab::PaginationUtil } }
it 'throws an error calling the method' do
expect { pagination_class.pagination_delegate }.to raise_error(NotImplementedError)
end
end
context 'class with no pagination delegate defined' do
let(:pagination_class) { Class.new { extend Gitlab::PaginationUtil } }
let(:pagination_delegate) do
Gitlab::PaginationDelegate.new(page: 1,
per_page: 10,
count: 20)
end
let(:delegated_methods) { %i[total_count total_pages current_page limit_value first_page? prev_page last_page? next_page] }
before do
allow(pagination_class).to receive(:pagination_delegate).and_return(pagination_delegate)
end
it 'does not throw an error' do
expect { pagination_class.pagination_delegate }.not_to raise_error
end
it 'includes the delegated methods' do
expect(pagination_class.public_methods).to include(*delegated_methods)
end
end
end
...@@ -11,6 +11,24 @@ describe Gitlab::UserActivities::ActivitySet, :redis, lib: true do ...@@ -11,6 +11,24 @@ describe Gitlab::UserActivities::ActivitySet, :redis, lib: true do
end end
end end
context 'pagination delegation' do
let(:pagination_delegate) do
Gitlab::PaginationDelegate.new(page: 1,
per_page: 10,
count: 20)
end
let(:delegated_methods) { %i[total_count total_pages current_page limit_value first_page? prev_page last_page? next_page] }
before do
allow(described_class.new).to receive(:pagination_delegate).and_return(pagination_delegate)
end
it 'includes the delegated methods' do
expect(described_class.new.public_methods).to include(*delegated_methods)
end
end
context 'paginated activities' do context 'paginated activities' do
before do before do
Timecop.scale(3600) Timecop.scale(3600)
...@@ -44,13 +62,13 @@ describe Gitlab::UserActivities::ActivitySet, :redis, lib: true do ...@@ -44,13 +62,13 @@ describe Gitlab::UserActivities::ActivitySet, :redis, lib: true do
create(:user).record_activity create(:user).record_activity
end end
it 'shows activities from yesterday' do it 'shows activities from today' do
today = Date.today.to_s("%Y-%m-%d") today = Date.today.to_s("%Y-%m-%d")
expect(described_class.new(from: today).activities.count).to eq(1) expect(described_class.new(from: today).activities.count).to eq(1)
end end
it 'filter activities from today' do it 'filter activities from tomorrow' do
tomorrow = Date.tomorrow.to_s("%Y-%m-%d") tomorrow = Date.tomorrow.to_s("%Y-%m-%d")
expect(described_class.new(from: tomorrow).activities.count).to eq(0) expect(described_class.new(from: tomorrow).activities.count).to eq(0)
......
...@@ -1118,6 +1118,8 @@ describe API::Users, api: true do ...@@ -1118,6 +1118,8 @@ describe API::Users, api: true do
context 'last activity as admin' do context 'last activity as admin' do
it 'returns the last activity' do it 'returns the last activity' do
allow(Time).to receive(:now).and_return(Time.new(2000, 1, 1))
user.record_activity user.record_activity
get api("/user/activities", admin) get api("/user/activities", admin)
...@@ -1125,7 +1127,7 @@ describe API::Users, api: true do ...@@ -1125,7 +1127,7 @@ describe API::Users, api: true do
activity = json_response.last activity = json_response.last
expect(activity['username']).to eq(user.username) expect(activity['username']).to eq(user.username)
expect(activity['last_activity_at']).to start_with(Date.today.year.to_s) expect(activity['last_activity_at']).to eq('2000-01-01 00:00:00')
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment