Exemple #1
0
    def _execute_action(self, action):
        tokens = action.split(_(u' in '))
        action_name = tokens[0].strip()
        verbose_name = tokens[1].strip()
        model = find_model_by_verbose_name(verbose_name)
        action_dict = find_action(model, action_name)
        func = action_dict['function']

        func_signature = u'%s_em_%s(self)' % (func.__name__.lower(),
                                              model.__name__.lower())
        self._test_flow_code.append(u'\t\t\t# %s' % action)
        self._test_flow_code.append(
            u'\t\t\tself.%s_em_%s()' %
            (func.__name__.lower(), model.__name__.lower()))

        self._test_function_code.append(u'\tdef %s:' % func_signature)
        self._view(model, True)
        if hasattr(func, '_action'):
            button_label = func._action['title']
            params = func.func_code.co_varnames[1:func.func_code.co_argcount]
            if params:
                interaction = _(u'The user clicks the button')
                self._interactions.append(u'%s "%s"' %
                                          (interaction, button_label))
                self._interactions.append(
                    _(u'The system displays a popup window'))

                self._test_function_code.append(
                    u"\t\tself.click_button(u'%s')" % button_label)
                self._test_function_code.append(
                    u"\t\tself.look_at_popup_window()")
                form = factory.get_action_form(self._mocked_request(), model(),
                                               func._action)
                self._fill_out(form)

            interaction = _(u'The user clicks the button')
            self._interactions.append(u'%s "%s"' % (interaction, button_label))
            self._test_function_code.append(u"\t\tself.click_button(u'%s')" %
                                            button_label)
            self._test_function_code.append(u"\t\tself.click_icon(u'%s')" %
                                            u'Principal')

            description = func.__doc__ and func.__doc__.decode(
                'utf-8').strip() or ''
            business_rules = utils.extract_exception_messages(func)
            post_condition = _(u'Action successfully performed')
            self.name = action_dict['title']
            self.description = description
            self.business_rules = business_rules
            self.post_condition = post_condition
            for can_execute in action_dict['can_execute']:
                self.actors.append(can_execute)
            if not self.actors:
                self.actors.append(_(u'Superuser'))
Exemple #2
0
    def _execute_action(self, action):
        tokens = action.split(_(' in '))
        action_name = tokens[0].strip()
        verbose_name = tokens[1].strip()
        model = find_model_by_verbose_name(verbose_name)
        action_dict = find_action(model, action_name)
        func = action_dict['function']
        username_attr = ''
        if CACHE['LAST_AUTHENTICATED_USERNAME']:
            username_attr = ", '{}'".format(
                CACHE['LAST_AUTHENTICATED_USERNAME'])
        func_decorator = '@testcase(\'{}\'{})'.format(self.name, username_attr)
        self._func_signature = '{}_em_{}(self)'.format(func.__name__.lower(),
                                                       model.__name__.lower())

        self._test_function_code.append('    {}'.format(func_decorator))
        self._test_function_code.append('    def {}:'.format(
            self._func_signature))
        self._view(model, True)
        if hasattr(func, '_action'):
            button_label = func._action['verbose_name']
            params = get_parameters_names(func)
            if params:
                interaction = _('The user clicks the button')
                self._interactions.append('{} "{}"'.format(
                    interaction, button_label))
                self._interactions.append(
                    _('The system displays a popup window'))

                self._test_function_code.append(
                    "        self.click_button('{}')".format(button_label))
                self._test_function_code.append(
                    "        self.look_at_popup_window()")
                obj = model()
                obj.pk = 0
                form = factory.get_action_form(self._mocked_request(), obj,
                                               func._action)
                self._fill_out(form)

            interaction = _('The user clicks the button')
            self._interactions.append('{} "{}"'.format(interaction,
                                                       button_label))
            self._test_function_code.append(
                "        self.click_button('{}')".format(button_label))
            self._test_function_code.append(
                "        self.click_icon('{}')".format('Principal'))

            description = func.__doc__ and func.__doc__.strip() or ''
            business_rules = utils.extract_exception_messages(func)
            post_condition = _('Action successfully performed')
            self.name = action_dict['verbose_name']
            self.description = description
            self.business_rules = business_rules
            self.post_condition = post_condition
            for can_execute in action_dict['can_execute']:
                self.actors.append(can_execute)
            if not self.actors:
                self.actors.append(_('Superuser'))
        elif hasattr(func, '_view_action'):
            button_label = func._view_action['verbose_name']
            interaction = _('The user clicks the button')
            self._interactions.append('{} "{}"'.format(interaction,
                                                       button_label))
            self._test_function_code.append(
                "        self.click_button('{}')".format(button_label))
Exemple #3
0
    def _register(self, action):
        model = find_model_by_add_label(action)
        if model:
            verbose_name = get_metadata(model, 'verbose_name')
            button_label = get_metadata(model, 'add_label')
            save_button_label = get_metadata(model, 'add_label', _('Save'))
            func_name = slugify(button_label).replace('-', '_')
        else:
            verbose_name = action.replace(_('Register'), '').strip()
            model = find_model_by_verbose_name(verbose_name)
            button_label = _('Register')
            save_button_label = _('Save')
            func_name = 'cadastrar_{}'.format(model.__name__.lower())

        # set the attributes of the usecase
        self.name = action
        self.description = '{} {} {}'.format(_('Add new records of'),
                                             verbose_name.lower(),
                                             _('in the system'))
        self.business_rules = utils.extract_exception_messages(model.save)
        self.post_condition = _(
            'The record will be successfully registered in the system')
        required_data = []
        for field in get_metadata(model, 'get_fields'):
            if isinstance(field, model_fields.ForeignKey):
                if not isinstance(field, model_fields.OneToOneField):
                    if not isinstance(field, model_fields.OneToManyField):
                        required_data.append(field.verbose_name.lower())
        if required_data:
            pre_condition = _(
                'The following information must have been previouly registered in the system: '
            )
            self.pre_conditions.append('{} {}'.format(
                pre_condition, ', '.join(required_data)))

        for meta_data in ('can_admin', 'can_admin_by_role',
                          'can_admin_by_unit', 'can_admin_by_organization',
                          'can_add', 'can_add_by_role', 'can_add_by_unit',
                          'can_add_by_organization'):
            for actor in get_metadata(model, meta_data, iterable=True):
                if actor:
                    self.actors.append(actor)
        if not self.actors:
            self.actors.append(_('Superuser'))

        # register the interactions and testing code'
        username_attr = ''
        if CACHE['LAST_AUTHENTICATED_USERNAME']:
            username_attr = ", '{}'".format(
                CACHE['LAST_AUTHENTICATED_USERNAME'])
        func_decorator = '@testcase(\'{}\'{})'.format(self.name, username_attr)
        self._func_signature = '{}(self)'.format(func_name)

        self._test_function_code.append('    {}'.format(func_decorator))
        self._test_function_code.append('    def {}:'.format(
            self._func_signature))
        self._find(model, registering=True)
        self._test_function_code.append(
            "        self.click_button('{}')".format(button_label))

        a = _('The user clicks the button')
        b = _('on the right-side of the action bar')
        self._interactions.append('{} "{}" {}'.format(a, button_label, b))

        form = factory.get_register_form(self._mocked_request(), model())
        self._fill_out(form)

        interaction = _('The user clicks the button')
        self._interactions.append('{} "{}"'.format(interaction,
                                                   save_button_label))
        self._test_function_code.append(
            "        self.click_button('{}')".format(save_button_label))
        self._test_function_code.append(
            "        self.click_icon('{}')".format('Principal'))
Exemple #4
0
    def _register(self, action):

        model = find_model_by_add_label(action)
        if model:
            verbose_name = get_metadata(model, 'verbose_name')
            button_label = get_metadata(model, 'add_label')
            func_name = slugify(button_label).replace('-', '_')
        else:
            verbose_name = action.replace(_(u'Register'), u'').strip()
            model = find_model_by_verbose_name(verbose_name)
            button_label = _(u'Register')
            func_name = u'cadastrar_%s' % model.__name__.lower()

        # set the attributes of the usecase
        self.name = action
        self.description = '%s %s %s' % (_(u'Add new records of'),
                                         verbose_name.lower(),
                                         _(u'in the system'))
        self.business_rules = utils.extract_exception_messages(model.save)
        self.post_condition = _(
            u'The record will be successfully registered in the system')
        required_data = []
        for field in get_metadata(model, 'get_fields'):
            if isinstance(field, model_fields.ForeignKey):
                if not isinstance(field, model_fields.OneToOneField):
                    if not isinstance(field, model_fields.OneToManyField):
                        required_data.append(field.verbose_name.lower())
        if required_data:
            pre_condition = _(
                u'The following information must have been previouly registered in the system: '
            )
            self.pre_conditions.append(
                '%s %s' % (pre_condition, u', '.join(required_data)))

        for meta_data in ('can_admin', 'can_admin_by_role',
                          'can_admin_by_unit', 'can_admin_by_organization',
                          'can_add', 'can_add_by_role', 'can_add_by_unit',
                          'can_add_by_organization'):
            for actor in get_metadata(model, meta_data, iterable=True):
                if actor:
                    self.actors.append(actor)
        if not self.actors:
            self.actors.append(_(u'Superuser'))

        # register the interactions and testing code
        func_signature = u'%s(self)' % func_name
        self._test_flow_code.append(u'\t\t\t# %s' % action)
        self._test_flow_code.append(u'\t\t\tself.%s()' % func_name)

        self._test_function_code.append('\tdef %s:' % func_signature)
        self._find(model)
        self._test_function_code.append(u"\t\tself.click_button(u'%s')" %
                                        button_label)

        a = _(u'The user clicks the button')
        b = _(u'on the right-side of the action bar')
        self._interactions.append(u'%s "%s" %s' % (a, button_label, b))

        form = factory.get_register_form(self._mocked_request(), model())
        self._fill_out(form)

        interaction = _(u'The user clicks the button')
        self._interactions.append(u'%s "%s"' % (interaction, button_label))
        self._test_function_code.append(u"\t\tself.click_button(u'%s')" %
                                        button_label)
        self._test_function_code.append(u"\t\tself.click_icon(u'%s')" %
                                        u'Principal')