Skip to content
This repository has been archived by the owner on Apr 17, 2023. It is now read-only.

Commit

Permalink
Group tags by digest
Browse files Browse the repository at this point in the history
This should come in handy whenever we want to implement removing tags.

Fixes #674

Signed-off-by: Miquel Sabaté <msabate@suse.com>
  • Loading branch information
mssola committed Apr 11, 2016
1 parent a4ce4f4 commit 28dae7f
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 6 deletions.
1 change: 1 addition & 0 deletions app/assets/stylesheets/application.scss
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@
@import 'forms';
@import 'types';
@import 'comments';
@import 'repositories';
@import 'responsive-utilities';
3 changes: 3 additions & 0 deletions app/assets/stylesheets/repositories.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.tags .label.label-success {
margin: 0px 2px;
}
2 changes: 1 addition & 1 deletion app/controllers/repositories_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def index
# GET /repositories/1.json
def show
authorize @repository
@tags = @repository.tags.order("created_at DESC")
@tags = @repository.groupped_tags
@repository_comments = @repository.comments.all
respond_with(@repository)
end
Expand Down
8 changes: 8 additions & 0 deletions app/models/repository.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ def starred_by?(user)
stars.exists? user: user
end

# Returns an array of all the tags from this repository grouped by the
# digest.
def groupped_tags
tags.group_by(&:digest).values.sort do |x, y|
y.first.created_at <=> x.first.created_at
end
end

# Handle a push event from the registry.
def self.handle_push_event(event)
registry = Registry.find_from_event(event)
Expand Down
11 changes: 6 additions & 5 deletions app/views/repositories/show.html.slim
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
= @repository.stars.count

.panel-body
.table-responsive
.table-responsive.tags
table.table.table-stripped.table-hover
col.col-40
col.col-40
Expand All @@ -30,10 +30,11 @@
- @tags.each do |tag|
tr
td
.label.label-success
= tag.name
td= tag.author.username
td= tag.created_at
- tag.each do |t|
.label.label-success
= t.name
td= tag.first.author.username
td= tag.first.created_at

#write_comment_form.collapse
= form_for [@repository, @repository.comments.build], remote: true, html: {id: 'new-comment-form', class: 'form-horizontal', role: 'form'} do |f|
Expand Down
19 changes: 19 additions & 0 deletions spec/models/repository_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -421,4 +421,23 @@ def get_url(repo, tag)
expect(repo2.tags.pluck(:name)).not_to include("latest")
end
end

describe "Groupped tags" do
let!(:registry) { create(:registry) }
let!(:owner) { create(:user) }
let!(:portus) { create(:user, username: "portus") }
let!(:team) { create(:team, owners: [owner]) }
let!(:namespace) { create(:namespace, team: team) }
let!(:repo) { create(:repository, namespace: namespace) }
let!(:tag1) { create(:tag, repository: repo, digest: "1234") }
let!(:tag2) { create(:tag, repository: repo, digest: tag1.digest) }
let!(:tag3) { create(:tag, repository: repo, digest: "5678", created_at: 2.hours.ago) }

it "groups tags as expected" do
tags = repo.groupped_tags
expect(tags.size).to eq 2
expect(tags.flatten.map(&:name).uniq).to eq [tag1.name, tag2.name, tag3.name]
expect(tags.flatten.map(&:digest).uniq).to eq ["1234", "5678"]
end
end
end

0 comments on commit 28dae7f

Please sign in to comment.