text: """The tests for the Scene component."""
  import io
  import unittest
  
  from homeassistant.setup import setup_component
  from homeassistant.components import light, scene
  from homeassistant.util.yaml import loader as yaml_loader
  
  from tests.common import get_test_home_assistant
  from tests.components.light import common as common_light
  from tests.components.scene import common
  
  
  class TestScene(unittest.TestCase):
      """Test the scene component."""
  
      def setUp(self):  # pylint: disable=invalid-name
          """Set up things to be run when tests are started."""
          self.hass = get_test_home_assistant()
          test_light = getattr(self.hass.components, 'test.light')
          test_light.init()
  
          assert setup_component(self.hass, light.DOMAIN, {
              light.DOMAIN: {'platform': 'test'}
          })
  
          self.light_1, self.light_2 = test_light.DEVICES[0:2]
  
          common_light.turn_off(
              self.hass, [self.light_1.entity_id, self.light_2.entity_id])
  
          self.hass.block_till_done()
  
          assert not self.light_1.is_on
          assert not self.light_2.is_on
  
      def tearDown(self):  # pylint: disable=invalid-name
          """Stop everything that was started."""
          self.hass.stop()
  
      def test_config_yaml_alias_anchor(self):
          """Test the usage of YAML aliases and anchors.
  
          The following test scene configuration is equivalent to:
  
          scene:
            - name: test
              entities:
                light_1: &light_1_state
                  state: 'on'
                  brightness: 100
                light_2: *light_1_state
  
          When encountering a YAML alias/anchor, the PyYAML parser will use a
          reference to the original dictionary, instead of creating a copy, so
          care needs to be taken to not modify the original.
          """
          entity_state = {
              'state': 'on',
              'brightness': 100,
          }
          assert setup_component(self.hass, scene.DOMAIN, {
              'scene': [{
                  'name': 'test',
                  'entities': {
                      self.light_1.entity_id: entity_state,
                      self.light_2.entity_id: entity_state,
                  }
              }]
          })
  
          common.activate(self.hass, 'scene.test')
          self.hass.block_till_done()
  
          assert self.light_1.is_on
          assert self.light_2.is_on
          assert 100 == self.light_1.last_call('turn_on')[1].get('brightness')
          assert 100 == self.light_2.last_call('turn_on')[1].get('brightness')
  
      def test_config_yaml_bool(self):
          """Test parsing of booleans in yaml config."""
          config = (
              'scene:\n'
              '  - name: test\n'
              '    entities:\n'
              '      {0}: on\n'
              '      {1}:\n'
              '        state: on\n'
              '        brightness: 100\n').format(
                  self.light_1.entity_id, self.light_2.entity_id)
  
          with io.StringIO(config) as file:
              doc = yaml_loader.yaml.load(file)
  
          assert setup_component(self.hass, scene.DOMAIN, doc)
          common.activate(self.hass, 'scene.test')
          self.hass.block_till_done()
  
          assert self.light_1.is_on
          assert self.light_2.is_on
          assert 100 == self.light_2.last_call('turn_on')[1].get('brightness')
  
      def test_activate_scene(self):
          """Test active scene."""
          assert setup_component(self.hass, scene.DOMAIN, {
              'scene': [{
                  'name': 'test',
                  'entities': {
                      self.light_1.entity_id: 'on',
                      self.light_2.entity_id: {
                          'state': 'on',
                          'brightness': 100,
                      }
                  }
              }]
          })
  
          common.activate(self.hass, 'scene.test')
          self.hass.block_till_done()
  
          assert self.light_1.is_on
          assert self.light_2.is_on
          assert 100 == self.light_2.last_call('turn_on')[1].get('brightness')
  