From 0ab09c7948e694b087fccb7ddcfd83f00feeb747 Mon Sep 17 00:00:00 2001 From: kibigo! Date: Wed, 29 Jun 2022 14:24:01 -0700 Subject: [PATCH] Add specs for `Hyrax::Group` Also fixes an incorrect implementation of `Hyrax::Group.from_key`. The Sipity specs were inspired by the similar specs for `Hyrax::User`. --- app/models/hyrax/group.rb | 2 +- spec/models/hyrax/group_spec.rb | 44 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 spec/models/hyrax/group_spec.rb diff --git a/app/models/hyrax/group.rb b/app/models/hyrax/group.rb index 0b2de788c0..f88e6112a7 100644 --- a/app/models/hyrax/group.rb +++ b/app/models/hyrax/group.rb @@ -10,7 +10,7 @@ def self.name_prefix ## # @return [Hyrax::Group] def self.from_key(key) - new(key.slice!(name_prefix)) + new(key.delete_prefix(name_prefix)) end def initialize(name) diff --git a/spec/models/hyrax/group_spec.rb b/spec/models/hyrax/group_spec.rb new file mode 100644 index 0000000000..c4576591b2 --- /dev/null +++ b/spec/models/hyrax/group_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +RSpec.describe Hyrax::Group, type: :model do + let(:name) { 'etaoin' } + let(:group) { described_class.new(name) } + + describe '.from_key' do + it 'returns an equivalent group' do + expect(Hyrax::Group.from_key(Hyrax::Group.name_prefix + group.name)).to eq group + end + end + + describe '#==' do + let (:other_group) { described_class.new(group.name) } + + it 'correctly determines equality for equivalent groups' do + expect(other_group).to eq group + end + end + + describe '#name' do + it 'returns the name' do + expect(group.name).to eq name + end + end + + describe '#to_sipity_agent' do + subject { group.to_sipity_agent } + + it 'will find or create a Sipity::Agent' do + expect { subject }.to change { Sipity::Agent.count }.by(1) + end + + context "when another process makes the agent" do + before do + group.to_sipity_agent # create the agent ahead of time + end + + it "returns the existing agent" do + expect { subject }.not_to change { Sipity::Agent.count } + end + end + end +end