Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortiagonbotelho <tiagonbotelho@hotmail.com>2016-08-31 14:35:23 +0300
committertiagonbotelho <tiagonbotelho@hotmail.com>2016-08-31 21:16:47 +0300
commit97b69862ad50936ad0700b23c485a38b637469a7 (patch)
tree5a5ecf4da4105b7c7b2f1da96d65594ab7704ac6 /spec/finders
parent6c9c33f43e489d9e225bc64342c7d7d0a558b1e7 (diff)
add specs for tags finder
Diffstat (limited to 'spec/finders')
-rw-r--r--spec/finders/tags_finder_spec.rb79
1 files changed, 79 insertions, 0 deletions
diff --git a/spec/finders/tags_finder_spec.rb b/spec/finders/tags_finder_spec.rb
new file mode 100644
index 00000000000..2ac810e478a
--- /dev/null
+++ b/spec/finders/tags_finder_spec.rb
@@ -0,0 +1,79 @@
+require 'spec_helper'
+
+describe TagsFinder do
+ let(:user) { create(:user) }
+ let(:project) { create(:project) }
+ let(:repository) { project.repository }
+
+ describe '#execute' do
+ context 'sort only' do
+ it 'sorts by name' do
+ tags_finder = described_class.new(repository, {})
+
+ result = tags_finder.execute
+
+ expect(result.first.name).to eq("v1.0.0")
+ end
+
+ it 'sorts by recently_updated' do
+ tags_finder = described_class.new(repository, { sort: 'updated_desc' })
+
+ result = tags_finder.execute
+ recently_updated_tag = repository.tags.max do |a, b|
+ repository.commit(a.target).committed_date <=> repository.commit(b.target).committed_date
+ end
+
+ expect(result.first.name).to eq(recently_updated_tag.name)
+ end
+
+ it 'sorts by last_updated' do
+ tags_finder = described_class.new(repository, { sort: 'updated_asc' })
+
+ result = tags_finder.execute
+
+ expect(result.first.name).to eq('v1.0.0')
+ end
+ end
+
+ context 'filter only' do
+ it 'filters tags by name' do
+ tags_finder = described_class.new(repository, { search: '1.0.0' })
+
+ result = tags_finder.execute
+
+ expect(result.first.name).to eq('v1.0.0')
+ expect(result.count).to eq(1)
+ end
+
+ it 'does not find any tags with that name' do
+ tags_finder = described_class.new(repository, { search: 'hey' })
+
+ result = tags_finder.execute
+
+ expect(result.count).to eq(0)
+ end
+ end
+
+ context 'filter and sort' do
+ it 'filters tags by name and sorts by recently_updated' do
+ params = { sort: 'updated_desc', search: 'v1' }
+ tags_finder = described_class.new(repository, params)
+
+ result = tags_finder.execute
+
+ expect(result.first.name).to eq('v1.1.0')
+ expect(result.count).to eq(2)
+ end
+
+ it 'filters tags by name and sorts by last_updated' do
+ params = { sort: 'updated_asc', search: 'v1' }
+ tags_finder = described_class.new(repository, params)
+
+ result = tags_finder.execute
+
+ expect(result.first.name).to eq('v1.0.0')
+ expect(result.count).to eq(2)
+ end
+ end
+ end
+end