コード例 #1
0
ファイル: test_models.py プロジェクト: yuchunyun/ralph
    def test_assign_hostname_skips_hostname_when_its_already_set(self):
        # hostname must include country-code to be skipped during assigning
        hostname = 'the-same-hostname-across-transitions-{}'.format('USA')
        self.bo_asset = BackOfficeAssetFactory(
            model=self.model,
            hostname=hostname,
            region=self.region_us,
        )
        _, transition, _ = self._create_transition(
            model=self.bo_asset,
            name='assign_hostname_if_empty_or_country_not_match',
            source=[BackOfficeAssetStatus.new.id],
            target=BackOfficeAssetStatus.used.id,
            actions=['assign_hostname_if_empty_or_country_not_match']
        )
        self.assertEquals(self.bo_asset.hostname, hostname)

        run_field_transition(
            [self.bo_asset],
            field='status',
            transition_obj_or_name=transition,
            data={},
            requester=self.request.user
        )

        self.assertEquals(self.bo_asset.hostname, hostname)
コード例 #2
0
 def test_run_non_existent_transition(self):
     transition_name = 'non_existent_transition'
     order = Order.objects.create()
     with self.assertRaises(Transition.DoesNotExist):
         run_field_transition(
             [order], transition_name, requester=self.request.user, field='status'
         )
コード例 #3
0
ファイル: test_models.py プロジェクト: yuchunyun/ralph
    def test_assign_hostname_assigns_hostname_when_its_empty(self):
        hostname = ''
        self.bo_asset = BackOfficeAssetFactory(
            model=self.model,
            hostname=hostname,
            region=self.region_us,
        )
        _, transition, _ = self._create_transition(
            model=self.bo_asset,
            name='assign_hostname_if_empty_or_country_not_match',
            source=[BackOfficeAssetStatus.new.id],
            target=BackOfficeAssetStatus.used.id,
            actions=['assign_hostname_if_empty_or_country_not_match']
        )
        self.assertEquals(self.bo_asset.hostname, hostname)

        run_field_transition(
            [self.bo_asset],
            field='status',
            transition_obj_or_name=transition,
            data={},
            requester=self.request.user
        )

        self.assertNotEquals(self.bo_asset.hostname, hostname)
コード例 #4
0
 def test_run_action_during_transition(self):
     order = Order.objects.create(status=OrderStatus.to_send.id)
     _, transition, actions = self._create_transition(
         model=order, name='send',
         source=[OrderStatus.to_send.id], target=OrderStatus.sended.id,
         actions=['go_to_post_office']
     )
     order.__class__.go_to_post_office = mocked_action
     run_field_transition(
         [order], transition, requester=self.request.user, field='status'
     )
     self.assertTrue(order.go_to_post_office.runned)
コード例 #5
0
 def test_assign_owner(self):
     _, transition, _ = self._create_transition(
         model=self.bo_asset,
         name='test',
         source=[BackOfficeAssetStatus.new.id],
         target=BackOfficeAssetStatus.used.id,
         actions=['assign_owner'])
     run_field_transition([self.bo_asset],
                          field='status',
                          transition_obj_or_name=transition,
                          data={'assign_owner__owner': self.user_pl.id},
                          requester=self.request.user)
コード例 #6
0
    def test_transition_change_status(self):
        order = Order.objects.create()
        _, transition, _ = self._create_transition(
            model=order, name='prepare',
            source=[OrderStatus.new.id], target=OrderStatus.to_send.id,
            actions=['go_to_post_office']
        )

        self.assertEqual(order.status, OrderStatus.new.id)
        run_field_transition(
            [order], transition, requester=self.request.user, field='status'
        )
        self.assertEqual(order.status, OrderStatus.to_send.id)
コード例 #7
0
 def test_change_hostname(self):
     _, transition, _ = self._create_transition(
         model=self.bo_asset,
         name='test',
         source=[BackOfficeAssetStatus.new.id],
         target=BackOfficeAssetStatus.used.id,
         actions=['change_hostname'])
     run_field_transition([self.bo_asset],
                          field='status',
                          transition_obj_or_name=transition,
                          data={'change_hostname__country': Country.pl},
                          requester=self.request.user)
     self.assertEqual(self.bo_asset.hostname, 'POLPC01001')
コード例 #8
0
    def test_transition_runs_action_registered_on_model(self):
        # action is registered in tests/models.py
        order = Order.objects.create()
        _, transition, _ = self._create_transition(
            model=order, name='action_name',
            source=[OrderStatus.new.id], target=OrderStatus.to_send.id,
            actions=['action_registered_on_model']
        )

        self.assertNotEqual(order.remarks, 'done')
        run_field_transition(
            [order], transition, requester=self.request.user, field='status'
        )
        self.assertEqual(order.remarks, 'done')
コード例 #9
0
    def test_forbidden_transition(self):
        order = Order.objects.create()
        transition = Transition.objects.create(
            name='send',
            model=TransitionModel.get_for_field(order, 'status'),
            source=[OrderStatus.to_send.id],
            target=OrderStatus.sended.id,
        )

        self.assertEqual(
            list(order.get_available_transitions_for_status()), []
        )
        with self.assertRaises(TransitionNotAllowedError):
            run_field_transition(
                [order], transition, requester=self.request.user, field='status'
            )
コード例 #10
0
    def test_transition_exception(self):
        order = Order.objects.create()
        _, transition, actions = self._create_transition(
            model=order, name='generate_exception',
            source=[OrderStatus.new.id], target=OrderStatus.sended.id,
            actions=['generate_exception']
        )

        result, _ = run_field_transition(
            [order], transition, requester=self.request.user, field='status'
        )
        self.assertFalse(result)
コード例 #11
0
 def test_run_transition_from_string(self):
     transition_name = 'send'
     order = Order.objects.create(status=OrderStatus.to_send.id)
     Transition.objects.create(
         name=transition_name,
         model=TransitionModel.get_for_field(order, 'status'),
         source=[OrderStatus.to_send.id],
         target=OrderStatus.sended.id,
     )
     self.assertTrue(
         run_field_transition(
             [order], transition_name, requester=self.request.user, field='status'
         )
     )