Skip to content
This repository has been archived by the owner on Aug 24, 2022. It is now read-only.

Commit

Permalink
add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
anatskiy committed Jan 23, 2017
1 parent 9a6939b commit bba60f4
Show file tree
Hide file tree
Showing 3 changed files with 213 additions and 148 deletions.
6 changes: 6 additions & 0 deletions library/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ def test_get_all(self):
self.assertEqual(response.status_code, 200)
self.assertNotEqual(response.content, b'[]')

def test_wrong_http_method(self):
self.client.login(email='foo@bar.io', password='foo-foo')
response = self.client.post(reverse('library.get_all'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'[]')


class GetAllLibrariesUserTest(GetAllLibrariesAdminTest):
_is_staff = False
Expand Down
296 changes: 149 additions & 147 deletions library/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,156 +15,158 @@
@login_required
def get_all(request):
""" Get the list of all libraries and samples."""
quality_check = request.GET.get('quality_check')
data = []

if request.user.is_staff:
requests = Request.objects.prefetch_related('libraries', 'samples')
else:
requests = Request.objects.filter(
user_id=request.user.id
).prefetch_related('libraries', 'samples')

for req in requests:
libraries = req.libraries.all()
samples = req.samples.all()

if quality_check:
libraries = [l for l in libraries if l.status == 1]
samples = [s for s in samples if s.status == 1]

libraries_data = [
{
'status': library.status,
'requestName': req.name,
'requestId': req.id,
'libraryId': library.id,
'name': library.name,
'recordType': 'L',
'date': library.date.strftime('%d.%m.%Y'),
'libraryProtocol': library.library_protocol.name,
'libraryProtocolId': library.library_protocol.id,
'libraryType': library.library_type.name,
'libraryTypeId': library.library_type.id,
'enrichmentCycles': library.enrichment_cycles,
'organism': library.organism.name,
'organismId': library.organism.id,
'indexType': library.index_type.name,
'indexTypeId': library.index_type.id,
'indexReads': library.index_reads,
'indexI7': library.index_i7,
'indexI5': library.index_i5,
'equalRepresentation':
str(library.equal_representation_nucleotides),
'DNADissolvedIn': library.dna_dissolved_in,
'concentration': library.concentration,
'concentrationMethod':
library.concentration_method.name,
'concentrationMethodId':
library.concentration_method.id,
'sampleVolume': library.sample_volume,
'meanFragmentSize': library.mean_fragment_size,
'qPCRResult': library.qpcr_result,
'readLength':
library.read_length.name,
'readLengthId':
library.read_length.id,
'sequencingDepth': library.sequencing_depth,
'comments': library.comments,
'barcode': library.barcode,
'files': [file.id for file in library.files.all()],
'dilutionFactor': library.dilution_factor,
'concentrationFacility': library.concentration_facility,
'concentrationMethodFacility':
library.concentration_method_facility.name
if library.concentration_method_facility is
not None else '',
'concentrationMethodFacilityId':
library.concentration_method_facility.id
if library.concentration_method_facility is
not None else '',
'dateFacility': library.date_facility.strftime('%d.%m.%Y')
if library.date_facility is not None else '',
'sampleVolumeFacility': library.sample_volume_facility,
'amountFacility': library.amount_facility,
'sizeDistributionFacility':
library.size_distribution_facility,
'commentsFacility': library.comments_facility,
'qPCRResultFacility': library.qpcr_result_facility,
}
for library in libraries
]
if request.method == 'GET':
quality_check = request.GET.get('quality_check')

samples_data = [
{
'status': sample.status,
'requestName': req.name,
'requestId': req.id,
'sampleId': sample.id,
'name': sample.name,
'recordType': 'S',
'date': sample.date.strftime('%d.%m.%Y'),
'nucleicAcidType': sample.nucleic_acid_type.name,
'nucleicAcidTypeId': sample.nucleic_acid_type_id,
'libraryProtocol': sample.sample_protocol.name,
'libraryProtocolId': sample.sample_protocol_id,
'amplifiedCycles': sample.amplified_cycles,
'organism': sample.organism.name,
'organismId': sample.organism.id,
'equalRepresentation':
str(sample.equal_representation_nucleotides),
'DNADissolvedIn': sample.dna_dissolved_in,
'concentration': sample.concentration,
'concentrationMethod':
sample.concentration_method.name,
'concentrationMethodId':
sample.concentration_method.id,
'sampleVolume': sample.sample_volume,
'readLength':
sample.read_length.name,
'readLengthId':
sample.read_length.id,
'sequencingDepth': sample.sequencing_depth,
'DNaseTreatment': str(sample.dnase_treatment),
'rnaQuality': sample.rna_quality
if sample.rna_quality else '',
'rnaSpikeIn': str(sample.rna_spike_in),
'samplePreparationProtocol':
sample.sample_preparation_protocol,
'requestedSampleTreatment':
sample.requested_sample_treatment,
'comments': sample.comments,
'barcode': sample.barcode,
'files': [file.id for file in sample.files.all()],
'dilutionFactor': sample.dilution_factor,
'concentrationFacility': sample.concentration_facility,
'concentrationMethodFacility':
sample.concentration_method_facility.name
if sample.concentration_method_facility is
not None else '',
'concentrationMethodFacilityId':
sample.concentration_method_facility.id
if sample.concentration_method_facility is
not None else '',
'dateFacility': sample.date_facility.strftime('%d.%m.%Y')
if sample.date_facility is not None else '',
'sampleVolumeFacility': sample.sample_volume_facility,
'amountFacility': sample.amount_facility,
'sizeDistributionFacility':
sample.size_distribution_facility,
'commentsFacility': sample.comments_facility,
'rnaQualityFacility': sample.rna_quality_facility,
}
for sample in samples
]

data += libraries_data + samples_data

data = sorted(
data,
key=lambda x: (x['date'], x['recordType'], x['name']),
reverse=True,
)
if request.user.is_staff:
requests = Request.objects.prefetch_related('libraries', 'samples')
else:
requests = Request.objects.filter(
user_id=request.user.id
).prefetch_related('libraries', 'samples')

for req in requests:
libraries = req.libraries.all()
samples = req.samples.all()

if quality_check:
libraries = [l for l in libraries if l.status == 1]
samples = [s for s in samples if s.status == 1]

libraries_data = [
{
'status': library.status,
'requestName': req.name,
'requestId': req.id,
'libraryId': library.id,
'name': library.name,
'recordType': 'L',
'date': library.date.strftime('%d.%m.%Y'),
'libraryProtocol': library.library_protocol.name,
'libraryProtocolId': library.library_protocol.id,
'libraryType': library.library_type.name,
'libraryTypeId': library.library_type.id,
'enrichmentCycles': library.enrichment_cycles,
'organism': library.organism.name,
'organismId': library.organism.id,
'indexType': library.index_type.name,
'indexTypeId': library.index_type.id,
'indexReads': library.index_reads,
'indexI7': library.index_i7,
'indexI5': library.index_i5,
'equalRepresentation':
str(library.equal_representation_nucleotides),
'DNADissolvedIn': library.dna_dissolved_in,
'concentration': library.concentration,
'concentrationMethod':
library.concentration_method.name,
'concentrationMethodId':
library.concentration_method.id,
'sampleVolume': library.sample_volume,
'meanFragmentSize': library.mean_fragment_size,
'qPCRResult': library.qpcr_result,
'readLength':
library.read_length.name,
'readLengthId':
library.read_length.id,
'sequencingDepth': library.sequencing_depth,
'comments': library.comments,
'barcode': library.barcode,
'files': [file.id for file in library.files.all()],
'dilutionFactor': library.dilution_factor,
'concentrationFacility': library.concentration_facility,
'concentrationMethodFacility':
library.concentration_method_facility.name
if library.concentration_method_facility is
not None else '',
'concentrationMethodFacilityId':
library.concentration_method_facility.id
if library.concentration_method_facility is
not None else '',
'dateFacility': library.date_facility.strftime('%d.%m.%Y')
if library.date_facility is not None else '',
'sampleVolumeFacility': library.sample_volume_facility,
'amountFacility': library.amount_facility,
'sizeDistributionFacility':
library.size_distribution_facility,
'commentsFacility': library.comments_facility,
'qPCRResultFacility': library.qpcr_result_facility,
}
for library in libraries
]

samples_data = [
{
'status': sample.status,
'requestName': req.name,
'requestId': req.id,
'sampleId': sample.id,
'name': sample.name,
'recordType': 'S',
'date': sample.date.strftime('%d.%m.%Y'),
'nucleicAcidType': sample.nucleic_acid_type.name,
'nucleicAcidTypeId': sample.nucleic_acid_type_id,
'libraryProtocol': sample.sample_protocol.name,
'libraryProtocolId': sample.sample_protocol_id,
'amplifiedCycles': sample.amplified_cycles,
'organism': sample.organism.name,
'organismId': sample.organism.id,
'equalRepresentation':
str(sample.equal_representation_nucleotides),
'DNADissolvedIn': sample.dna_dissolved_in,
'concentration': sample.concentration,
'concentrationMethod':
sample.concentration_method.name,
'concentrationMethodId':
sample.concentration_method.id,
'sampleVolume': sample.sample_volume,
'readLength':
sample.read_length.name,
'readLengthId':
sample.read_length.id,
'sequencingDepth': sample.sequencing_depth,
'DNaseTreatment': str(sample.dnase_treatment),
'rnaQuality': sample.rna_quality
if sample.rna_quality else '',
'rnaSpikeIn': str(sample.rna_spike_in),
'samplePreparationProtocol':
sample.sample_preparation_protocol,
'requestedSampleTreatment':
sample.requested_sample_treatment,
'comments': sample.comments,
'barcode': sample.barcode,
'files': [file.id for file in sample.files.all()],
'dilutionFactor': sample.dilution_factor,
'concentrationFacility': sample.concentration_facility,
'concentrationMethodFacility':
sample.concentration_method_facility.name
if sample.concentration_method_facility is
not None else '',
'concentrationMethodFacilityId':
sample.concentration_method_facility.id
if sample.concentration_method_facility is
not None else '',
'dateFacility': sample.date_facility.strftime('%d.%m.%Y')
if sample.date_facility is not None else '',
'sampleVolumeFacility': sample.sample_volume_facility,
'amountFacility': sample.amount_facility,
'sizeDistributionFacility':
sample.size_distribution_facility,
'commentsFacility': sample.comments_facility,
'rnaQualityFacility': sample.rna_quality_facility,
}
for sample in samples
]

data += libraries_data + samples_data

data = sorted(
data,
key=lambda x: (x['date'], x['recordType'], x['name']),
reverse=True,
)

return JsonResponse(data, safe=False)

Expand Down
59 changes: 58 additions & 1 deletion quality_check/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,60 @@
from django.test import TestCase
from django.core.urlresolvers import reverse
from django.contrib.auth import get_user_model

# Create your tests here.
from request.models import Request
from library.models import Library
from sample.models import Sample

User = get_user_model()


# Views

class GetAllLibraries(TestCase):
def setUp(self):
user = User.objects.create_user(
email='foo@bar.io', password='foo-foo', is_staff=True,
)
user.save()

self.request = Request(user=user)
self.request.save()

def test_get_all(self):
self.client.login(email='foo@bar.io', password='foo-foo')

library = Library.get_test_library('Library1')
library.status = 1
library.save()

sample = Sample.get_test_sample('Sample1')
sample.status = 1
sample.save()

self.request.libraries.add(library)
self.request.samples.add(sample)

response = self.client.get(reverse('library.get_all'), {
'quality_check': 'true'
})
self.assertEqual(response.status_code, 200)
self.assertNotEqual(response.content, b'[]')

def test_get_all_empty(self):
self.client.login(email='foo@bar.io', password='foo-foo')

library = Library.get_test_library('Library2')
library.save()

sample = Sample.get_test_sample('Sample2')
sample.save()

self.request.libraries.add(library)
self.request.samples.add(sample)

response = self.client.get(reverse('library.get_all'), {
'quality_check': 'true'
})
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'[]')

0 comments on commit bba60f4

Please sign in to comment.