Skip to content

Commit

Permalink
tags: added a way to update tags
Browse files Browse the repository at this point in the history
It's useful to just rename tags which have quite some references that
you don't want to nuke.

Signed-off-by: Miquel Sabaté Solà <msabate@suse.com>
  • Loading branch information
mssola committed Mar 20, 2024
1 parent 37d4967 commit ccf5888
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 8 deletions.
6 changes: 3 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ gem 'image_processing', '~> 1.2'
group :development, :test do
gem 'debug', platforms: %i[mri windows]

# Convenient & prettier printer.
gem 'awesome_print'

# Security
gem 'brakeman', require: false
gem 'bundle-audit', require: false
Expand All @@ -47,9 +50,6 @@ group :development do
# Use console on exceptions pages.
gem 'web-console'

# Convenient & prettier printer.
gem 'awesome_print'

# Style
gem 'rubocop', require: false
gem 'rubocop-minitest', require: false
Expand Down
2 changes: 1 addition & 1 deletion app/assets/stylesheets/tags.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
vertical-align: middle;
}

#tag-new h3 span {
#tag-page h3 span {
font-size: 1rem;
vertical-align: middle;
}
Expand Down
12 changes: 11 additions & 1 deletion app/controllers/tags_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

class TagsController < ApplicationController
before_action :set_tag, only: %i[destroy]
before_action :set_tag, only: %i[edit update destroy]

def index
@tags = Tag.order(:name)
Expand All @@ -11,6 +11,8 @@ def new
@tag = Tag.new
end

def edit; end

def create
@tag = Tag.new(tag_params)

Expand All @@ -21,6 +23,14 @@ def create
end
end

def update
if @tag.update(tag_params)
redirect_to tags_url, notice: t('tags.update-success')
else
render :edit, status: :unprocessable_entity
end
end

def destroy
@tag.destroy!

Expand Down
1 change: 1 addition & 0 deletions app/views/tags/_tag.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<%= tag.name %>
</div>
<div class="action">
<%= link_to I18n.t('general.edit'), edit_tag_path(tag) %> |
<%= link_to I18n.t('general.delete'), tag_path(tag), data: { "turbo-method": :delete } %>
</div>
</div>
9 changes: 9 additions & 0 deletions app/views/tags/edit.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<div class="center-contents">
<div></div>
<div id="tag-page">
<h3><%= I18n.t('tags.update') %> <span>&#8212; <%= link_to I18n.t('general.back-to-list'), tags_path %></span></h3>

<%= render "form", tag: @tag %>
</div>
<div></div>
</div>
2 changes: 1 addition & 1 deletion app/views/tags/new.html.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="center-contents">
<div></div>
<div id="tag-new">
<div id="tag-page">
<h3><%= I18n.t('tags.new') %> <span>&#8212; <%= link_to I18n.t('general.back-to-list'), tags_path %></span></h3>

<%= render "form", tag: @tag %>
Expand Down
2 changes: 2 additions & 0 deletions config/locales/ca.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,11 @@ ca:
title: Etiquetes
new: Etiqueta nova
new-action: nova
update: Reanomena l'etiqueta
none: Encara no hi ha cap etiqueta. Pots crear-ne una fent click

create-success: Etiqueta creada correctament
update-success: S'ha canviat el nom de l'etiqueta correctament
destroy-success: Etiqueta esborrada correctament

things:
Expand Down
2 changes: 2 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,12 @@ en:
tags:
title: Tags
new: New tag
update: Rename tag
new-action: new
none: You have not created any tags. You can do so by clicking

create-success: Tag was successfully created
update-success: Tag was successfully updated
destroy-success: Tag was successfully deleted

things:
Expand Down
2 changes: 1 addition & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
resource :exports, only: %i[new show]
end

resources :tags, only: %i[index new create destroy]
resources :tags
resources :things, except: %i[index] do
resources :comments, only: %i[create update destroy]
end
Expand Down
29 changes: 28 additions & 1 deletion test/system/tags_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class SharedSearchesTest < ApplicationSystemTestCase
end
end

test 'gives feedback on errors' do
test 'gives feedback on create errors' do
visit new_tag_url

fill_in I18n.t('activerecord.attributes.tag.name'), with: tags(:tag1).name
Expand All @@ -31,6 +31,33 @@ class SharedSearchesTest < ApplicationSystemTestCase
assert_text "#{I18n.t('activerecord.attributes.tag.name')} #{I18n.t('errors.messages.taken')}"
end

test 'can visit the edit_tag path from #index' do
visit tags_url

click_link(I18n.t('general.edit'), match: :first)

assert_text I18n.t('tags.update')
end

test 'can update a tag' do
visit edit_tag_url(tags(:tag1))

fill_in I18n.t('activerecord.attributes.tag.name'), with: "#{tags(:tag1).name}-updated"
click_on I18n.t('helpers.submit.update')

assert_text I18n.t('tags.update-success')
assert_text "#{tags(:tag1).name}-updated"
end

test 'gives feedback on update errors' do
visit edit_tag_url(tags(:tag1))

fill_in I18n.t('activerecord.attributes.tag.name'), with: tags(:tag2).name
click_on I18n.t('helpers.submit.update')

assert_text "#{I18n.t('activerecord.attributes.tag.name')} #{I18n.t('errors.messages.taken')}"
end

test 'can delete an existing tag' do
visit tags_url

Expand Down

0 comments on commit ccf5888

Please sign in to comment.