def setUp(self): super(TagModelTest, self).setUp() tag_model._MODELS_WITH_TAGS = (_ModelWithTags,) self.tag1 = tag_model.Tag( name='TestTag1', hidden=False, protect=True, color='blue', description='Description 1.') self.tag2 = tag_model.Tag( name='TestTag2', hidden=False, protect=False, color='red', description='Description 2.') self.tag1.put() self.tag2.put() self.tag1_data = tag_model.TagData( tag_key=self.tag1.key, more_info='tag1_data info.') self.tag2_data = tag_model.TagData( tag_key=self.tag2.key, more_info='tag2_data info.') self.entity1 = _ModelWithTags( tags=[self.tag1_data, self.tag2_data]).put().get() self.entity2 = _ModelWithTags( tags=[self.tag1_data, self.tag2_data]).put().get() self.entity3 = _ModelWithTags( tags=[self.tag1_data, self.tag2_data]).put().get()
def associate_tag(self, user_email, tag_urlsafekey, more_info=None): """Associates a tag with a device. Args: user_email: str, the email of the user taking the action. tag_urlsafekey: str, the urlsafe representation of the ndb.Key for a tag. more_info: str, an informational field about a particular tag reference. """ tag_data = tag_model.TagData( tag=api_utils.get_ndb_key(tag_urlsafekey).get(), more_info=more_info) if tag_data not in self.tags: for device_tag in self.tags: if tag_urlsafekey == device_tag.tag.key.urlsafe(): # Updates more_info field of an existing associated tag. device_tag.more_info = more_info self.put() self.stream_to_bq( user_email, 'Updated more_info on tag %s to %s on device %s.' % (tag_data.tag.name, more_info, self.identifier)) return self.tags.append(tag_data) self.put() self.stream_to_bq( user_email, 'Associated tag %s with device %s' % (tag_data.tag.name, self.identifier))
def associate_tag(self, user_email, tag_name, more_info=None): """Associates a tag with a device. Args: user_email: str, the email of the user taking the action. tag_name: str, the name of the tag to be associated. more_info: str, an informational field about a particular tag reference. """ tag_data = tag_model.TagData( tag=tag_model.Tag.get(tag_name), more_info=more_info) if tag_data not in self.tags: for device_tag in self.tags: if tag_name == device_tag.tag.name: # Updates more_info field of an existing associated tag. device_tag.more_info = more_info self.put() self.stream_to_bq( user_email, 'Updated more_info on tag %s to %s on device %s.' % (tag_data.tag.name, more_info, self.identifier)) return self.tags.append(tag_data) self.put() self.stream_to_bq( user_email, 'Associated tag %s with device %s' % (tag_data.tag.name, self.identifier))
def testTagDate(self): tag_model_object = tag_model.Tag( name='TestTag1', hidden=False, protect=True, color='blue', description='Description 1.') tag = tag_model.TagData(tag=tag_model_object, more_info='test_data') self.assertEqual('test_data', tag.more_info) self.assertEqual(tag_model_object, tag.tag)
def setUp(self): super(DeviceModelTest, self).setUp() config_model.Config.set( 'device_identifier_mode', config_model.DeviceIdentifierMode.SERIAL_NUMBER) self.shelf = shelf_model.Shelf.enroll( user_email=loanertest.USER_EMAIL, location='MTV', capacity=10, friendly_name='MTV office') self.tag1_key = tag_model.Tag( name='TestTag1', hidden=False, protect=True, color='blue', description='Description 1.').put() self.tag2_key = tag_model.Tag( name='TestTag2', hidden=False, protect=False, color='red', description='Description 2.').put() self.tag1_data = tag_model.TagData( tag=self.tag1_key.get(), more_info='tag1_data info.') self.tag2_data = tag_model.TagData( tag=self.tag2_key.get(), more_info='tag2_data info.') device_model.Device( serial_number='12321', enrolled=True, device_model='HP Chromebook 13 G1', current_ou='/', shelf=self.shelf.key, chrome_device_id='unique_id_1', damaged=False).put() device_model.Device( serial_number='67890', enrolled=True, device_model='Google Pixelbook', current_ou='/', shelf=self.shelf.key, chrome_device_id='unique_id_2', damaged=False, tags=[self.tag1_data]).put() device_model.Device( serial_number='VOID', enrolled=False, device_model='HP Chromebook 13 G1', current_ou='/', shelf=self.shelf.key, chrome_device_id='unique_id_8', damaged=False, tags=[self.tag1_data, self.tag2_data]).put() self.device1 = device_model.Device.get(serial_number='12321') self.device2 = device_model.Device.get(serial_number='67890') self.device3 = device_model.Device.get(serial_number='Void') datastore_user = user_model.User.get_user(loanertest.USER_EMAIL) datastore_user.update(superadmin=True)
def test_update_new_name(self): """Test the renaming of a Tag.""" self.tag1.update(user_email=loanertest.USER_EMAIL, hidden=True, protect=True, color='blue', description='Description 1.', name='TestTag1 Renamed') self.assertIn( tag_model.TagData(tag_key=self.tag1.key, more_info=self.tag1_data.more_info), self.entity1.tags) self.assertEqual(self.tag1.name, 'TestTag1 Renamed')
def test_destroy(self, tag_name, tag_info, mock_put_multi): """Test destroying an existing Tag using deferred tasks.""" tag_entity = tag_model.Tag.query(tag_model.Tag.name == tag_name).get() tag_entity.key.delete() tasks = self.taskqueue_stub.get_filtered_tasks() deferred.run(tasks[0].payload) tag_data = tag_model.TagData(tag=tag_entity, more_info=tag_info) self.assertIsNone(tag_entity.key.get()) self.assertNotIn(tag_data, self.entity1.tags) self.assertNotIn(tag_data, self.entity2.tags) self.assertNotIn(tag_data, self.entity3.tags) mock_put_multi.assert_called_once_with( [self.entity1, self.entity2, self.entity3])