50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
from django.test import TestCase
|
|
|
|
from django.contrib.auth.models import User
|
|
from interface.models import Ensemble, Project
|
|
from . import models
|
|
|
|
class IntegrationTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
self.homer = User.objects.create(username='homer')
|
|
self.ned = User.objects.create(username="ned")
|
|
self.lisa = User.objects.create(username="lisa")
|
|
self.dewey = User.objects.create(username="dewey")
|
|
|
|
self.be_sharps = self.homer.ensembles.create(name='Be Sharps', code="barbershop")
|
|
self.sesd = self.dewey.ensembles.create(name="Springfield Elementary School Band", code="sax")
|
|
|
|
self.sel = self.lisa.collections.create(name="Springfield Elementary Library")
|
|
self.flanders = self.ned.collections.create(name="Neds Shed")
|
|
|
|
def test_integration(self):
|
|
pass
|
|
|
|
def test_movement_from_large_work(self):
|
|
'''
|
|
Will be common to store a work which has several movements, but the project is only going to play one.
|
|
This also should give us the ability to store an anthology as one Work have Project reference 'no:23'
|
|
'''
|
|
|
|
work = self.sel.works.create(name="Some Quartet", composer="Beethoven")
|
|
for g in ('vl1', 'vl2', 'vla', 'vc'):
|
|
doc = work.docs.create(upload=f'sel/beethoven/some_quartet/some_quartet_{g}.pdf')
|
|
doc.sections.create(tag='mvmt:1', start=1, end=3)
|
|
doc.sections.create(tag='mvmt:2', start=4, end=8)
|
|
doc.sections.create(tag='mvmt:3', start=9, end=12)
|
|
doc.sections.create(tag=f'inst:{g}')
|
|
|
|
# no tags - get nothing (should it be everything?)
|
|
self.assertEqual(work.extract(), [])
|
|
|
|
# single tag - should get just that range
|
|
self.assertEqual(work.extract('inst:vl1'), [('sel/beethoven/some_quartet/some_quartet_vl1.pdf', None, None)])
|
|
|
|
# single tag - returns all documents with that range
|
|
result = work.extract('mvmt:2')
|
|
self.assertEqual(len(result), 4)
|
|
|
|
# multiple tags - returns the overlapping portion of all documents that have all tags
|
|
self.assertEqual(work.extract('inst:vl1', 'mvmt:2'), [('sel/beethoven/some_quartet/some_quartet_vl1.pdf', 4, 8)])
|
|
self.assertEqual(work.extract('inst:vl1', 'inst:vl2'), []) |