def test_installed(self):
        '''
            Test to install the windows feature
        '''
        ret = {'name': 'salt',
               'changes': {},
               'result': True,
               'comment': ''}
        mock = MagicMock(side_effect=['salt', 'stack', 'stack'])
        mock1 = MagicMock(return_value={'Success': 'True'})
        with patch.dict(win_servermanager.__salt__,
                        {"win_servermanager.list_installed": mock,
                         "win_servermanager.install": mock1}):
            ret.update({'comment': 'The feature salt is already installed'})
            self.assertDictEqual(win_servermanager.installed('salt'), ret)

            with patch.dict(win_servermanager.__opts__, {"test": True}):
                ret.update({'changes': {'feature':
                                        'salt will be installed'
                                        ' recurse=False'}, 'result': None,
                            'comment': ''})
                self.assertDictEqual(win_servermanager.installed('salt'), ret)

                with patch.dict(win_servermanager.__opts__, {"test": False}):
                    ret.update({'changes': {'feature': {'Success': 'True'}},
                                'result': True, 'comment': 'Installed salt'})
                    self.assertDictEqual(win_servermanager.installed('salt'),
                                         ret)
    def test_installed(self):
        '''
            Test to install the windows feature
        '''
        mock_list = MagicMock(
            side_effect=[{'spongebob': 'squarepants'},
                         {'squidward': 'patrick'},
                         {'spongebob': 'squarepants'},
                         {'spongebob': 'squarepants',
                          'squidward': 'patrick'}])
        mock_install = MagicMock(
            return_value={'Success': True,
                          'Restarted': False,
                          'RestartNeeded': False,
                          'ExitCode': 1234,
                          'Features': {
                              'squidward': {
                                  'DisplayName': 'Squidward',
                                  'Message': '',
                                  'RestartNeeded': True,
                                  'SkipReason': 0,
                                  'Success': True
                              }
                          }})
        with patch.dict(win_servermanager.__salt__,
                        {"win_servermanager.list_installed": mock_list,
                         "win_servermanager.install": mock_install}):
            ret = {'name': 'spongebob',
                   'changes': {},
                   'result': True,
                   'comment': 'The following features are already installed:\n'
                              '- spongebob'}
            self.assertDictEqual(win_servermanager.installed('spongebob'), ret)

            with patch.dict(win_servermanager.__opts__, {"test": True}):
                ret = {'name': 'spongebob',
                       'result': None,
                       'comment': '',
                       'changes': {
                           'spongebob': 'Will be installed recurse=False'}}
                self.assertDictEqual(
                    win_servermanager.installed('spongebob'), ret)

            with patch.dict(win_servermanager.__opts__, {"test": False}):
                ret = {'name': 'squidward',
                       'result': True,
                       'comment': 'Installed the following:\n- squidward',
                       'changes': {
                           'squidward': {'new': 'patrick', 'old': ''}}}
                self.assertDictEqual(
                    win_servermanager.installed('squidward'), ret)
    def test_installed(self):
        '''
            Test to install the windows feature
        '''
        mock_list = MagicMock(
            side_effect=[{'spongebob': 'squarepants'},
                         {'squidward': 'patrick'},
                         {'spongebob': 'squarepants'},
                         {'spongebob': 'squarepants',
                          'squidward': 'patrick'}])
        mock_install = MagicMock(
            return_value={'Success': True,
                          'RestartNeeded': False,
                          'ExitCode': 1234})
        with patch.dict(win_servermanager.__salt__,
                        {"win_servermanager.list_installed": mock_list,
                         "win_servermanager.install": mock_install}):
            ret = {'name': 'spongebob',
                   'changes': {},
                   'result': True,
                   'comment': 'The feature spongebob is already installed'}
            self.assertDictEqual(win_servermanager.installed('spongebob'), ret)

            with patch.dict(win_servermanager.__opts__, {"test": True}):
                ret = {'name': 'spongebob',
                       'result': None,
                       'comment': '',
                       'changes': {
                           'feature': 'spongebob will be installed '
                                      'recurse=False'}}
                self.assertDictEqual(
                    win_servermanager.installed('spongebob'), ret)

            with patch.dict(win_servermanager.__opts__, {"test": False}):
                ret = {'name': 'squidward',
                       'result': True,
                       'comment': 'Installed squidward',
                       'changes': {
                           'Success': True,
                           'RestartNeeded': False,
                           'ExitCode': 1234,
                           'feature': {'squidward': {'new': 'patrick',
                                                     'old': ''}}}}
                self.assertDictEqual(
                    win_servermanager.installed('squidward'), ret)
def test_installed():
    """
    Test to install the windows feature
    """
    mock_list = MagicMock(side_effect=[
        {
            "spongebob": "squarepants"
        },
        {
            "squidward": "patrick"
        },
        {
            "spongebob": "squarepants"
        },
        {
            "spongebob": "squarepants",
            "squidward": "patrick"
        },
    ])
    mock_install = MagicMock(
        return_value={
            "Success": True,
            "Restarted": False,
            "RestartNeeded": False,
            "ExitCode": 1234,
            "Features": {
                "squidward": {
                    "DisplayName": "Squidward",
                    "Message": "",
                    "RestartNeeded": True,
                    "SkipReason": 0,
                    "Success": True,
                }
            },
        })
    with patch.dict(
            win_servermanager.__salt__,
        {
            "win_servermanager.list_installed": mock_list,
            "win_servermanager.install": mock_install,
        },
    ):
        ret = {
            "name":
            "spongebob",
            "changes": {},
            "result":
            True,
            "comment":
            "The following features are already installed:\n- spongebob",
        }
        assert win_servermanager.installed("spongebob") == ret

        with patch.dict(win_servermanager.__opts__, {"test": True}):
            ret = {
                "name": "spongebob",
                "result": None,
                "comment": "",
                "changes": {
                    "spongebob": "Will be installed recurse=False"
                },
            }
            assert win_servermanager.installed("spongebob") == ret

        with patch.dict(win_servermanager.__opts__, {"test": False}):
            ret = {
                "name": "squidward",
                "result": True,
                "comment": "Installed the following:\n- squidward",
                "changes": {
                    "squidward": {
                        "new": "patrick",
                        "old": ""
                    }
                },
            }
            assert win_servermanager.installed("squidward") == ret