old_contents: """
  Unit tests of the Dashboard application
  """
  
  from django.contrib.contenttypes import generic
  from django.db import IntegrityError
  from django.test import TestCase
  
  from launch_control.utils.call_helper import ObjectFactoryMixIn
  from launch_control.dashboard_app.models import (
          HardwareDevice,
          SoftwarePackage,
          )
  
  
  class SoftwarePackageTestCase(TestCase, ObjectFactoryMixIn):
  
      class Dummy:
          class SoftwarePackage:
              name = 'libfoo'
              version = '1.2.0'
  
      def test_creation_1(self):
          dummy, sw_package = self.make_and_get_dummy(SoftwarePackage)
          self.assertEqual(sw_package.name, dummy.name)
          self.assertEqual(sw_package.version, dummy.version)
  
      def test_uniqueness(self):
          pkg1 = self.make(SoftwarePackage)
          pkg1.save()
          pkg2 = self.make(SoftwarePackage)
          self.assertRaises(IntegrityError, pkg2.save)
  
  
  class HardwarePackageTestCase(TestCase, ObjectFactoryMixIn):
  
      class Dummy:
          class HardwareDevice:
              device_type = 'device.cpu'
              description = 'some cpu'
      
      def test_creation_1(self):
          dummy, hw_device = self.make_and_get_dummy(HardwareDevice)
          self.assertEqual(hw_device.device_type, dummy.device_type)
          self.assertEqual(hw_device.description, dummy.description)
  
      def test_attributes(self):
          hw_device = self.make(HardwareDevice)
          hw_device.save()
          hw_device.attributes.create(name="connection-bus", value="usb")
          self.assertEqual(hw_device.attributes.count(), 1)
          attr = hw_device.attributes.get()
          self.assertEqual(attr.name, "connection-bus")
          self.assertEqual(attr.value, "usb")
  
  
new_contents: """
  Unit tests of the Dashboard application
  """
  
  from django.contrib.contenttypes import generic
  from django.db import IntegrityError
  from django.test import TestCase
  
  from launch_control.utils.call_helper import ObjectFactoryMixIn
  from launch_control.dashboard_app.models import (
          HardwareDevice,
          SoftwarePackage,
          )
  
  
  class SoftwarePackageTestCase(TestCase, ObjectFactoryMixIn):
  
      class Dummy:
          class SoftwarePackage:
              name = 'libfoo'
              version = '1.2.0'
  
      def test_creation_1(self):
          dummy, sw_package = self.make_and_get_dummy(SoftwarePackage)
          sw_package.save()
          self.assertEqual(sw_package.name, dummy.name)
          self.assertEqual(sw_package.version, dummy.version)
  
      def test_uniqueness(self):
          pkg1 = self.make(SoftwarePackage)
          pkg1.save()
          pkg2 = self.make(SoftwarePackage)
          self.assertRaises(IntegrityError, pkg2.save)
  
  
  class HardwarePackageTestCase(TestCase, ObjectFactoryMixIn):
  
      class Dummy:
          class HardwareDevice:
              device_type = 'device.cpu'
              description = 'some cpu'
      
      def test_creation_1(self):
          dummy, hw_device = self.make_and_get_dummy(HardwareDevice)
          hw_device.save()
          self.assertEqual(hw_device.device_type, dummy.device_type)
          self.assertEqual(hw_device.description, dummy.description)
  
      def test_attributes(self):
          hw_device = self.make(HardwareDevice)
          hw_device.save()
          hw_device.attributes.create(name="connection-bus", value="usb")
          self.assertEqual(hw_device.attributes.count(), 1)
          attr = hw_device.attributes.get()
          self.assertEqual(attr.name, "connection-bus")
          self.assertEqual(attr.value, "usb")
  
  
subject: Call .save() on database model tests to trigger any DB-level constraints