pupilfirst/pupilfirst

View on GitHub
app/queries/update_topic_category_mutator.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
93%
class UpdateTopicCategoryMutator < ApplicationQuery
  include AuthorizeSchoolAdmin
  property :id, validates: { presence: true }
  property :name, validates: { presence: true, length: { maximum: 50 } }

  validate :name_is_unique

  def update_topic_category
    topic_category.update!(name: name)
  end

  private

  def resource_school
    topic_category&.community&.school
  end

  def topic_category
    @topic_category ||= TopicCategory.find_by(id: id)
  end

  def name_is_unique
    if TopicCategory.where(
         name: name,
         community_id: topic_category.community_id
       ).blank?
      return
    end

    errors.add(:base, "Category already exists in community with name: #{name}")
  end
end