def test_unique(self):
        job = Job()
        softwareA = Software()
        softwareB = Software()
        softwareA.jobs = [job]
        softwareA.software = "foo"
        softwareB.jobs = [job]
        softwareB.software = "foo"
        db.session.add_all([job, softwareA, softwareB])

        with self.assertRaises(DatabaseError):
            db.session.commit()
    def test_insert(self):
        # A job can not be created without a jobtype, create one first
        jobtype = JobType()
        jobtype.name = "foo"
        jobtype.description = "this is a job type"
        jobtype.classname = "Foobar"
        jobtype.code = dedent("""
        class Foobar(JobType):
            pass""").encode("utf-8")
        jobtype.mode = JobTypeLoadMode.OPEN
        db.session.add(jobtype)

        job = Job()
        job.job_type = jobtype
        software = Software()
        software.jobs = [job]
        software.software = "foo"
        db.session.add_all([job, software])
        db.session.commit()
        job_id = job.id
        software_id = software.id
        db.session.remove()
        software = Software.query.filter_by(id=software_id).first()
        self.assertEqual(software.jobs[0].id, job_id)
        self.assertEqual(software.software, "foo")
        self.assertEqual(software.version, "any")