def test_shouldInjectTheField(self):  # pylint: disable=no-self-use
        assert_that(BasicTestModel, has_property('river', is_(instance_of(RiverObject))))
        assert_that(BasicTestModel.river, has_property('my_field', is_(instance_of(ClassWorkflowObject))))

        content_type = ContentType.objects.get_for_model(BasicTestModel)

        state1 = StateObjectFactory.create(label="state1")
        state2 = StateObjectFactory.create(label="state2")

        workflow = WorkflowFactory(content_type=content_type, field_name="my_field", initial_state=state1)

        TransitionApprovalMetaFactory.create(
            workflow=workflow,
            source_state=state1,
            destination_state=state2,
            priority=0
        )
        test_model = BasicTestModel.objects.create()
        assert_that(test_model, has_property('river', is_(instance_of(RiverObject))))
        assert_that(test_model.river, has_property('my_field', is_(instance_of(InstanceWorkflowObject))))
        assert_that(BasicTestModel.river.my_field, has_property('initial_state', is_(instance_of(State))))
        assert_that(BasicTestModel.river.my_field, has_property('final_states', is_(instance_of(QuerySet))))

        assert_that(test_model.river.my_field, has_property('approve', has_property("__call__")))
        assert_that(test_model.river.my_field, has_property('on_initial_state', is_(instance_of(bool))))
        assert_that(test_model.river.my_field, has_property('on_final_state', is_(instance_of(bool))))
예제 #2
0
    def test_injections(self):
        self.assertTrue(hasattr(TestModel, 'river'))
        self.assertIsInstance(TestModel.river, RiverObject)
        self.assertTrue(hasattr(TestModel.river, "my_field"))
        self.assertIsInstance(TestModel.river.my_field, ClassWorkflowObject)

        content_type = ContentType.objects.get_for_model(TestModel)

        state1 = StateObjectFactory.create(label="state1")
        state2 = StateObjectFactory.create(label="state2")

        TransitionApprovalMetaFactory.create(
            content_type=content_type,
            field_name="my_field",
            source_state=state1,
            destination_state=state2,
            priority=0
        )
        test_model = TestModel.objects.create()
        self.assertTrue(hasattr(test_model, "river"))
        self.assertIsInstance(test_model.river, RiverObject)
        self.assertTrue(hasattr(test_model.river, "my_field"))
        self.assertIsInstance(test_model.river.my_field, InstanceWorkflowObject)

        self.assertTrue(hasattr(test_model.river.my_field, "approve"))
        self.assertTrue(callable(test_model.river.my_field.approve))

        self.assertTrue(test_model.river.my_field.on_initial_state)
        self.assertFalse(test_model.river.my_field.on_final_state)

        self.assertEqual(state1, TestModel.river.my_field.initial_state)
        self.assertEqual(1, TestModel.river.my_field.final_states.count())
        self.assertEqual(state2, TestModel.river.my_field.final_states[0])