Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions app/controllers/registers_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def index(status = :validated)
end
when :draft
authenticate_curator! && return
Register.where(validated: false, notified: false, submitted: false)
Register.drafts
when :submitted
authenticate_curator! && return
Register.where(validated: false, notified: false, submitted: true)
Expand Down Expand Up @@ -129,8 +129,7 @@ def tree
# GET /registers/new
def new
@register = Register.new
@registers =
current_user.registers.where(submitted: false, validated: false)
@registers = current_user.registers.drafts.order(created_at: :desc)
@crumbs = ['Lists']
end

Expand All @@ -145,7 +144,7 @@ def create
@register = Register.where(accession: params[:existing_register]).first
end
@register ||= Register.new(user: current_user)
@registers = current_user.registers.where(submitted: false)
@registers = current_user.registers.drafts.order(created_at: :desc)

if @register.can_edit?(current_user) && @register.save &&
(!@name || @name.add_to_register(@register, current_user)) &&
Expand Down
5 changes: 5 additions & 0 deletions app/models/name.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1265,6 +1265,11 @@ def genome
# ============ --- REGISTER LISTS --- ============

def add_to_register(register, user)
unless register&.draft?
errors.add(:register, 'must be a draft')
return false
end

self.register = register
unless created_by
self.created_by = user
Expand Down
2 changes: 2 additions & 0 deletions app/models/register.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ class Register < ApplicationRecord
has_rich_text(:abstract)
has_rich_text(:submitter_authorship_explanation)

scope :drafts, -> { where(validated: false, notified: false, submitted: false) }

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One question is, if we want to go down the route of having these scopes, should we straight away implement the other state scopes (#notified etc) and use them?


before_create(:assign_accession)
before_validation(:propose_and_save_title, if: :submitted?)
before_destroy(:return_names_to_draft)
Expand Down
2 changes: 1 addition & 1 deletion test/controllers/names_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class NamesControllerTest < ActionDispatch::IntegrationTest
setup do
@name = names(:one)
@name = names(:unregistered)
end

end
32 changes: 31 additions & 1 deletion test/controllers/registers_controller_test.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,38 @@
require 'test_helper'

class RegistersControllerTest < ActionDispatch::IntegrationTest
include Devise::Test::IntegrationHelpers

setup do
@register = registers(:one)
@contributor = users(:contributor)
@curator = users(:curator)
@register = registers(:draft)
@submitted_register = registers(:submitted)
@notified_register = registers(:notified)
end

test 'draft index only includes draft registers' do
sign_in(@curator)

get registers_path(status: :draft)

assert_response :success
assert_includes response.body, @register.acc_url
assert_not_includes response.body, @submitted_register.acc_url
assert_not_includes response.body, @notified_register.acc_url
end

test 'new register form only offers draft registers' do
sign_in(@contributor)

get new_register_path

assert_response :success
assert_select 'select[name=existing_register]' do |select|
options = select.css('option').map(&:text).join(' ')
assert_includes options, @register.accession
assert_not_includes options, @submitted_register.accession
assert_not_includes options, @notified_register.accession
end
end
end
4 changes: 2 additions & 2 deletions test/fixtures/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

one:
name: one
user: one
user: curator
kind: MyText
pass: false

two:
name: two
user: two
user: curator
kind: MyText
pass: false
4 changes: 2 additions & 2 deletions test/fixtures/contacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

one:
publication: one
user: one
user: contributor
to: MyString
cc: MyString
subject: MyString
author: one

two:
publication: two
user: two
user: contributor
to: MyString
cc: MyString
subject: MyString
Expand Down
4 changes: 2 additions & 2 deletions test/fixtures/curations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

one:
name: one
user: one
user: curator
kind_int: 1
status_int: 1
notes: MyText

two:
name: two
user: two
user: curator
kind_int: 1
status_int: 1
notes: MyText
4 changes: 2 additions & 2 deletions test/fixtures/name_correspondences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

one:
name: one
user: one
user: contributor

two:
name: two
user: two
user: contributor
5 changes: 1 addition & 4 deletions test/fixtures/names.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
unregistered:
name: MyString

two:
name: MyOtherString
4 changes: 2 additions & 2 deletions test/fixtures/notifications.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
one:
seen: false
notified_email: false
user: one
user: contributor
notifiable: one
notifiable_type: Notifiable
linkeable: one
Expand All @@ -13,7 +13,7 @@ one:
two:
seen: false
notified_email: false
user: two
user: contributor
notifiable: two
notifiable_type: Notifiable
linkeable: two
Expand Down
4 changes: 2 additions & 2 deletions test/fixtures/observe_names.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
user: one
user: contributor
name: one

two:
user: two
user: contributor
name: two
4 changes: 2 additions & 2 deletions test/fixtures/observe_registers.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
user: one
user: contributor
register: one

two:
user: two
user: contributor
register: two
4 changes: 2 additions & 2 deletions test/fixtures/register_coauthors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

one:
register: one
user: one
user: contributor
order: 1

two:
register: two
user: two
user: contributor
order: 1
4 changes: 2 additions & 2 deletions test/fixtures/register_correspondences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

one:
register: one
user: one
user: contributor

two:
register: two
user: two
user: contributor
26 changes: 17 additions & 9 deletions test/fixtures/registers.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
accession: MyString
user: one
validated_by: one
draft:
accession: r:draft01
user: contributor
submitted: false
notified: false
validated: false
publication: one

two:
accession: MyOtherString
user: two
validated_by: two
submitted:
accession: r:sumbit01
user: contributor
submitted: true
notified: false
validated: false
publication: one

notified:
accession: r:notified01
user: contributor
submitted: false
notified: true
validated: false
publication: two
publication: one
4 changes: 2 additions & 2 deletions test/fixtures/tutorials.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

one:
pipeline: MyString
user: one
user: contributor
ongoing: false
step: 1

two:
pipeline: MyString
user: two
user: contributor
ongoing: false
step: 1
18 changes: 12 additions & 6 deletions test/fixtures/users.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
username: user_one
email: user_one@example.com
contributor:
username: contributor
email: contributor@example.com
contributor: true
curator: false
confirmed_at: <%= Time.current %>

two:
username: user_two
email: user_two@example.com
curator:
username: curator
email: curator@example.com
contributor: true
curator: true
confirmed_at: <%= Time.current %>
# column: value
21 changes: 18 additions & 3 deletions test/models/name_test.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
require 'test_helper'

class NameTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
test 'add_to_register adds name to a draft register' do
name = names(:unregistered)
register = registers(:draft)

assert register.draft?
assert name.add_to_register(register, users(:contributor))
assert_equal register, name.reload.register
end

test 'add_to_register refuses non-draft registers' do
name = names(:unregistered)
register = registers(:submitted)

assert_not register.draft?
assert_not name.add_to_register(register, users(:contributor))
assert_includes name.errors[:register], 'must be a draft'
assert_nil name.reload.register
end
end
4 changes: 4 additions & 0 deletions test/system/names_test.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
require 'application_system_test_case'

class NamesTest < ApplicationSystemTestCase
setup do
@user = users(:contributor)
end

# test "visiting the index" do
# visit names_url
#
Expand Down
2 changes: 1 addition & 1 deletion test/system/registers_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

class RegistersTest < ApplicationSystemTestCase
setup do
@register = registers(:one)
@register = registers(:draft)
end

end
Loading