Skip to content

Commit

Permalink
WIP: Add test
Browse files Browse the repository at this point in the history
  • Loading branch information
ursm committed Jul 18, 2024
1 parent 8785afc commit ae8f792
Show file tree
Hide file tree
Showing 8 changed files with 117 additions and 18 deletions.
19 changes: 19 additions & 0 deletions api/app/models/database/bioproject.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,25 @@ def submit(submission)
submitter_id:
)
end

contact = Dway.submitterdb[:contact].where(submitter_id:, is_pi: true).first
organization = Dway.submitterdb[:organization].where(submitter_id:).first

{
first_name: contact[:first_name],
last_name: contact[:last_name],
email: contact[:email],
organization_name: organization.fetch_values(:unit, :affiliation, :department, :organization).compact_blank.join(', '),
organization_url: organization[:url],
}.each.with_index 1 do |(key, value), i|
Dway.bioproject[:submission_data].insert(
submission_id: ,
data_name: key.to_s,
data_value: value.to_s,
form_name: 'submitter',
t_order: i
)
end
end
end

Expand Down
10 changes: 5 additions & 5 deletions api/app/models/dway.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ class Dway
include Singleton

class << self
delegate :submitterdb, :drmdb, :bioproject, to: :instance
delegate :bioproject, :drmdb, :submitterdb, to: :instance
end

def submitterdb
@submitterdb ||= Sequel.connect(ENV.fetch('SUBMITTERDB_DATABASE_URL'), search_path: 'mass')
def bioproject
@bioproject ||= Sequel.connect(ENV.fetch('BIOPROJECT_DATABASE_URL'), search_path: 'mass')
end

def drmdb
@drmdb ||= Sequel.connect(ENV.fetch('DRMDB_DATABASE_URL'), search_path: 'mass')
end

def bioproject
@bioproject ||= Sequel.connect(ENV.fetch('BIOPROJECT_DATABASE_URL'), search_path: 'mass')
def submitterdb
@submitterdb ||= Sequel.connect(ENV.fetch('SUBMITTERDB_DATABASE_URL'), search_path: 'mass')
end
end
4 changes: 4 additions & 0 deletions api/config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,7 @@
# Raise error when a before_action's only/except options reference missing actions
config.action_controller.raise_on_missing_callback_actions = true
end

ENV['BIOPROJECT_DATABASE_URL'] = 'postgres://localhost/bioproject_test'
ENV['DRMDB_DATABASE_URL'] = 'postgres://localhost/drmdb_test'
ENV['SUBMITTERDB_DATABASE_URL'] = 'postgres://localhost/submitterdb_test'
4 changes: 2 additions & 2 deletions api/lib/tasks/dway.rake
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace :dway do
env_keys = %w(DRMDB_DATABASE_URL SUBMITTERDB_DATABASE_URL BIOPROJECT_DATABASE_URL)

desc 'Create databases'
task :create do
task :create => :environment do
env_keys.each do |key|
uri = URI.parse(ENV.fetch(key))

Expand All @@ -32,7 +32,7 @@ namespace :dway do
task :prepare => %i[create migrate]

desc 'Drop databases'
task :drop do
task :drop => :environment do
env_keys.each do |key|
uri = URI.parse(ENV.fetch(key))

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<PackageSet>
<Package>
<Project>
<Project>
<ProjectID>
<ArchiveID accession="" archive="DDBJ" />
</ProjectID>
<ProjectDescr>
<Title>Title text</Title>
<Description>Description text</Description>
</ProjectDescr>
<ProjectType>
<ProjectTypeSubmission>
<Target sample_scope="eEnvironment" material="ePartialGenome" capture="eTargetedLocusLoci"></Target>
<Method method_type="eSequencing" />
<Objectives>
<Data data_type="eRawSequenceReads" />
</Objectives>
</ProjectTypeSubmission>
</ProjectType>
</Project>
</Project>
</Package>
</PackageSet>
34 changes: 34 additions & 0 deletions api/spec/models/database/bioproject/submitter_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require 'rails_helper'

RSpec.describe Database::BioProject::Submitter do
example 'visibility: private' do
user = create(:user, uid: 'alice')

submission = create(:submission, **{
visibility: :private,

validation: build(:validation, :valid, **{
user:,

objs: [
build(:obj, **{
_id: 'BioProject',
file: file_fixture('bioproject/valid/1_not_well_format_xml_ok.xml'),
validity: :valid
})
]
})
})

Dway.submitterdb[:contact].insert(
submitter_id: 'alice',
is_pi: true
)

Dway.submitterdb[:organization].insert(
submitter_id: 'alice'
)

Database::BioProject::Submitter.new.submit submission
end
end
13 changes: 7 additions & 6 deletions api/spec/support/dway.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
require 'sequel/core'

ENV['DRMDB_DATABASE_URL'] = 'postgres://localhost/drmdb_test'
ENV['SUBMITTERDB_DATABASE_URL'] = 'postgres://localhost/submitterdb_test'

RSpec.configure do |config|
config.before :suite do
Rails.application.load_tasks
Expand All @@ -11,13 +8,17 @@
end

config.around do |example|
Dway.submitterdb.transaction auto_savepoint: true do
Dway.submitterdb.rollback_on_exit
Dway.bioproject.transaction auto_savepoint: true do
Dway.bioproject.rollback_on_exit

Dway.drmdb.transaction auto_savepoint: true do
Dway.drmdb.rollback_on_exit

example.call
Dway.submitterdb.transaction auto_savepoint: true do
Dway.submitterdb.rollback_on_exit

example.call
end
end
end
end
Expand Down
26 changes: 21 additions & 5 deletions web/app/components/validation/submit-form.gts
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ export default class ValidationSubmitFormComponent extends Component<Signature>
const res = await safeFetchWithModal(
`${ENV.apiURL}/submissions`,
{
method: 'POST',
method: 'POST',
headers: this.currentUser.authorizationHeader,
body: formData
body: formData,
},
this.errorModal,
);
Expand All @@ -53,21 +53,37 @@ export default class ValidationSubmitFormComponent extends Component<Signature>
});

<template>
<form {{on 'submit' this.submit.perform}} class="p-3">
<form {{on 'submit' this.submit.perform}} class='p-3'>
<div class='mb-3'>
<label class='form-label'>Visibility</label>

<div>
<div class='form-check form-check-inline'>
{{#let (uniqueId) as |id|}}
<input class='form-check-input' type='radio' name='submission[visibility]' value='public' id={{id}} required />
<input
class='form-check-input'
id={{id}}
type='radio'
name='submission[visibility]'
value='public'
required
/>

<label class='form-check-label' for={{id}}>Public</label>
{{/let}}
</div>

<div class='form-check form-check-inline'>
{{#let (uniqueId) as |id|}}
<input class='form-check-input' type='radio' name='submission[visibility]' value='private' id={{id}} required />
<input
class='form-check-input'
id={{id}}
type='radio'
name='submission[visibility]'
value='private'
required
/>

<label class='form-check-label' for={{id}}>Private</label>
{{/let}}
</div>
Expand Down

0 comments on commit ae8f792

Please sign in to comment.