- build_dep = MetadataKey(key = 'Build-Depends')
- hello_bd = SourceMetadata(source = self.binary['hello_2.2-1_i386'].source,
- key = build_dep, value = 'foobar-dev')
- self.session.add(hello_bd)
+ self.assertEqual('hello', self.hello_bd.source.source)
+ self.assertEqual('Build-Depends', self.hello_bd.key.key)
+ self.assertEqual('foobar-dev', self.hello_bd.value)
+ # DBBinary relation
+ self.assertEqual(self.hello_dep, self.bin_hello.key[self.depends])
+ self.assertEqual('goodbye', self.bin_hello.key[self.recommends].value)
+ # DBSource relation
+ self.assertEqual(self.hello_bd, self.src_hello.key[self.build_dep])
+ self.assertEqual('http://debian.org', self.src_hello.key[self.homepage].value)
+
+ def test_association_proxy(self):
+ '''
+ Test the association proxies 'metadata' in DBBinary and DBSource.
+ '''
+ self.setup_metadata()
+ # DBBinary association proxy
+ essential = MetadataKey('Essential')
+ self.bin_hello.metadata[essential] = 'yes'
+ self.session.flush()
+ self.assertEqual('yes', self.bin_hello.metadata[essential])
+ self.assertEqual('foobar (>= 1.0)', self.bin_hello.metadata[self.depends])
+ self.assertTrue(self.recommends in self.bin_hello.metadata)
+ # DBSource association proxy
+ std_version = MetadataKey('Standards-Version')
+ self.src_hello.metadata[std_version] = '3.9.1'
+ self.session.flush()
+ self.assertEqual('3.9.1', self.src_hello.metadata[std_version])
+ self.assertEqual('http://debian.org', self.src_hello.metadata[self.homepage])
+ self.assertTrue(self.depends not in self.src_hello.metadata)
+
+ def test_delete(self):
+ '''
+ Tests the delete / cascading behaviour.
+ '''
+ self.setup_metadata()
+ self.session.delete(self.bin_hello)
+ # Remove associated binaries because we have no cascading rule for
+ # them.
+ for binary in self.src_hello.binaries:
+ self.session.delete(binary)
+ self.session.delete(self.src_hello)