def test_similar_classifications_ratio(self): """Tests similar classification ratios are computed correctly.""" # Test equal standard odlcs. l = GpsPosition(latitude=38, longitude=-76) l.save() t1 = Odlc(mission=self.mission, user=self.user, odlc_type=interop_api_pb2.Odlc.STANDARD, location=l, orientation=interop_api_pb2.Odlc.S, shape=interop_api_pb2.Odlc.SQUARE, shape_color=interop_api_pb2.Odlc.WHITE, alphanumeric='ABC', alphanumeric_color=interop_api_pb2.Odlc.BLACK, description='Test odlc', description_approved=True, autonomous=True) t1.save() t2 = Odlc(mission=self.mission, user=self.user, odlc_type=interop_api_pb2.Odlc.STANDARD, location=l, orientation=interop_api_pb2.Odlc.S, shape=interop_api_pb2.Odlc.SQUARE, shape_color=interop_api_pb2.Odlc.WHITE, alphanumeric='ABC', alphanumeric_color=interop_api_pb2.Odlc.BLACK, description='Test other odlc', description_approved=False, autonomous=True) t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications_ratio(t2)) # Test unequal standard odlcs. t1.alphanumeric = 'DEF' t1.alphanumeric_color = interop_api_pb2.Odlc.BLUE t1.save() self.assertAlmostEqual(3.0 / 5.0, t1.similar_classifications_ratio(t2)) t1.shape = interop_api_pb2.Odlc.CIRCLE t1.shape_color = interop_api_pb2.Odlc.ORANGE t1.save() self.assertAlmostEqual(1.0 / 5.0, t1.similar_classifications_ratio(t2)) # Test emergent type based on description approval. t1.odlc_type = interop_api_pb2.Odlc.EMERGENT t1.save() t2.odlc_type = interop_api_pb2.Odlc.EMERGENT t2.save() self.assertAlmostEqual(0.0, t1.similar_classifications_ratio(t2)) t2.description_approved = True t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications_ratio(t2))
def test_put_invalidates_description_review(self): """Test that update invalidates description field.""" t = Odlc( user=self.user, odlc_type=OdlcType.emergent, description='Hello') t.description_approved = True t.save() data = {'description': 'World'} response = self.client.put( odlcs_id_url(args=[t.pk]), data=json.dumps(data)) self.assertEqual(200, response.status_code) t.refresh_from_db() self.assertEqual('World', t.description) self.assertIsNone(t.description_approved)
def test_json(self): """Test odlc JSON.""" l = GpsPosition(latitude=38, longitude=-76) l.save() t = Odlc( user=self.user, odlc_type=OdlcType.standard, location=l, orientation=Orientation.s, shape=Shape.square, background_color=Color.white, alphanumeric='ABC', alphanumeric_color=Color.black, description='Test odlc', autonomous=True) t.save() d = t.json() self.assertIn('id', d) self.assertEqual(self.user.pk, d['user']) self.assertEqual('standard', d['type']) self.assertEqual(38, d['latitude']) self.assertEqual(-76, d['longitude']) self.assertEqual('s', d['orientation']) self.assertEqual('square', d['shape']) self.assertEqual('white', d['background_color']) self.assertEqual('ABC', d['alphanumeric']) self.assertEqual('black', d['alphanumeric_color']) self.assertEqual('Test odlc', d['description']) self.assertEqual(True, d['autonomous']) self.assertNotIn('thumbnail_approved', d) d = t.json(is_superuser=True) self.assertIn('description_approved', d) self.assertIn('thumbnail_approved', d) t.description_approved = True t.thumbnail_approved = True t.actionable_override = True t.save() d = t.json(is_superuser=True) self.assertEqual(True, d['description_approved']) self.assertEqual(None, d['thumbnail']) self.assertEqual(True, d['thumbnail_approved']) self.assertEqual(True, d['actionable_override'])
def test_similar_classifications_ratio(self): """Tests similar classification ratios are computed correctly.""" # Test equal standard odlcs. l = GpsPosition(latitude=38, longitude=-76) l.save() t1 = Odlc( user=self.user, odlc_type=OdlcType.standard, location=l, orientation=Orientation.s, shape=Shape.square, background_color=Color.white, alphanumeric='ABC', alphanumeric_color=Color.black, description='Test odlc', description_approved=True, autonomous=True) t1.save() t2 = Odlc( user=self.user, odlc_type=OdlcType.standard, location=l, orientation=Orientation.s, shape=Shape.square, background_color=Color.white, alphanumeric='ABC', alphanumeric_color=Color.black, description='Test other odlc', description_approved=False, autonomous=True) t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications_ratio(t2)) # Test unequal standard odlcs. t1.alphanumeric = 'DEF' t1.alphanumeric_color = Color.blue t1.save() self.assertAlmostEqual(3.0 / 5.0, t1.similar_classifications_ratio(t2)) t1.shape = Shape.circle t1.background_color = Color.orange t1.save() self.assertAlmostEqual(1.0 / 5.0, t1.similar_classifications_ratio(t2)) # Test different types. t1.odlc_type = OdlcType.off_axis t1.save() self.assertAlmostEqual(0, t1.similar_classifications_ratio(t2)) # Test off_axis is same as standard. t2.odlc_type = OdlcType.off_axis t2.alphanumeric = 'DEF' t2.save() self.assertAlmostEqual(2.0 / 5.0, t1.similar_classifications_ratio(t2)) # Test emergent type based on description approval. t1.odlc_type = OdlcType.emergent t1.save() t2.odlc_type = OdlcType.emergent t2.save() self.assertAlmostEqual(0.0, t1.similar_classifications_ratio(t2)) t2.description_approved = True t2.save() self.assertAlmostEqual(1.0, t1.similar_classifications_ratio(t2))