from django.test import TestCase from common.RequestBuilder import RequestBuilder from common.models import * from django.contrib.auth.models import User from django.utils import timezone class RequestBuilderTests(TestCase): fixtures = ['tests/common_test.json'] def setUp(self): ''' Creates the base for the tests : user, scientific program, etc ''' country = Country.objects.create(name="France") usr_lvl = UserLevel.objects.create(name="default") usr = User.objects.create(username="toto") self.pyusr = PyrosUser.objects.create(country=country, user=usr, user_level=usr_lvl, quota=1111) self.sp = ScientificProgram.objects.create(name="default") def test_full_creation(self): ''' Goal : Create a full request with sequences, albums & plans, and check if they are in the DB ''' request_builder = RequestBuilder() request_builder.start_new_request(self.pyusr, self.sp, False) seq1 = request_builder.add_sequence(1, 0, 10, name="seq1") alb11 = request_builder.add_album(seq1, Device.NIR, name="alb11") request_builder.add_plan( alb11, Device.NIR_FILTER_1, 120, 5, name="plan111") alb12 = request_builder.add_album(seq1, Device.VIS, name="alb12") request_builder.add_plan( alb12, Device.VIS_FILTER_1, 180, 1, name="plan121") seq2 = request_builder.add_sequence(1, 0, 10, name="seq2") alb21 = request_builder.add_album(seq2, Device.NIR, name="alb21") request_builder.add_plan( alb21, Device.NIR_FILTER_2, 60, 3, name="plan211") request_builder.validate_request() req = Request.objects.get() seq1 = Sequence.objects.get(name="seq1") seq2 = Sequence.objects.get(name="seq2") albums = Album.objects.all() self.assertEqual(len(req.sequences.all()), 2, "There should be 2 sequences") self.assertEqual(seq1.albums.count(), 2, "There should be 2 albums in seq1") self.assertEqual(seq2.albums.count(), 1, "There should be 1 album in seq2") self.assertEqual(Plan.objects.count(), 3, "There should be 3 plans") self.assertEqual(len(albums), 3, "There should be 3 albums") for album in albums: self.assertEqual(album.plans.count(), 1, "There should be 1 plan in each album") class CountryTests(TestCase): def test_creation(self): Country.objects.create(name="France", desc="Test", quota=1) france = Country.objects.get(name="France") self.assertEqual(france.name, "France") self.assertEqual(france.desc, "Test") self.assertEqual(france.quota, 1) france.quota = -1 france.delete() france.save() Country.objects.create(name="Mexique") countries = Country.objects.all() self.assertEqual(countries.count(), 2) countries[0].name = "Toto" countries[0].save() class DeviceTests(TestCase): def test_creation(self): device = Device.objects.create() countries = Country.objects.all() self.assertEqual(countries.count(), 0, "perdu !") class RequestTests(TestCase): def setUp(self): strat1 = StrategyObs.objects.create(name="strat1") france = Country.objects.create(name="France") admin = UserLevel.objects.create(name="Admin") usr1 = User.objects.create(username="Haribo") haribo = PyrosUser.objects.create( user=usr1, country=france, user_level=admin) sp1 = ScientificProgram.objects.create(name="sp1") req1 = Request.objects.create( name="req1", pyros_user=haribo, scientific_program=sp1) Alert.objects.create(strategyobs=strat1, request=req1) sched = Schedule.objects.create() seq1 = Sequence.objects.create( name="seq1", request=req1) dev_tel = Device.objects.create(name="telescope") dev_det = Device.objects.create(name="detector") tel = Telescope.objects.create(device=dev_tel) det = Detector.objects.create(device=dev_det, telescope=tel) alb1 = Album.objects.create(name="alb1", sequence=seq1, detector=det) dev_fw = Device.objects.create(name="fw") fw = FilterWheel.objects.create(device=dev_fw) dev_fil = Device.objects.create(name="filter") fil = Filter.objects.create(device=dev_fil, filter_wheel=fw) plan1 = Plan.objects.create(name="plan1", album=alb1, filter=fil) img1 = Image.objects.create(name="img1", plan=plan1) img2 = Image.objects.create(name="img2", plan=plan1) def test_request_access(self): alert = Alert.objects.get() self.assertEqual(alert.request.name, "req1") req1 = Request.objects.get(name="req1") req1.name = "reqtiti" req1.save() # j'ai saved req1, pourtant alert1.request.name est toujours le même self.assertEqual(alert.request.name, "req1") alert = Alert.objects.get() # j'ai refait un get de mon alert, donc c'est mis à jour self.assertEqual(alert.request.name, "reqtiti") alert.request.name = "reqtoto" alert.save() self.assertEqual(req1.name, "reqtiti") self.assertEqual(alert.request.name, "reqtoto") req1 = Request.objects.get() self.assertEqual(req1.name, "reqtiti") alert.request.save() req1 = Request.objects.get() self.assertEqual(req1.name, "reqtoto") def test_reinit_base(self): req1 = Request.objects.get() self.assertEqual(req1.name, "req1") def test_full_request(self): req1 = Request.objects.get() self.assertEqual(req1.sequences.count(), 1) albums = req1.sequences.all()[0].albums self.assertEqual(albums.count(), 1) images = albums.all()[0].plans.all()[0].images self.assertEqual(images.count(), 2) img1 = images.get(name="img1") img1.name = "img1.1" img11 = req1.sequences.get().albums.get().plans.get().images.get( name="img1") # j'ai toujours pas sauvegardé mon image img1.save() img11 = req1.sequences.get().albums.get().plans.get().images.get( name="img1.1") # j'ai sauvegardé mon image req1 = Request.objects.get() img1 = req1.sequences.get().albums.get().plans.get().images.get( name="img1.1") img11 = Image.objects.get(name="img1.1") img11.name = "img1.2" img11.save() self.assertEqual(img1.name, "img1.1") # img1 et img11 sont différents img1 = req1.sequences.get().albums.get().plans.get().images.get( name="img1.2")