Beispiel #1
0
 def test_should_create_rule_model_in_db(self):
     expected_name = 'django_business_rules.tests.product_business_rule.ProductBusinessRule'
     self.assertFalse(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
     ProductBusinessRule.generate()
     self.assertTrue(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
Beispiel #2
0
 def test_should_create_rule_model_in_db_with_empty_dict_as_rule(self):
     expected_name = 'django_business_rules.tests.product_business_rule.ProductBusinessRule'
     expected_rules = '{}'
     self.assertFalse(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
     ProductBusinessRule.generate()
     self.assertEqual(
         BusinessRuleModel.objects.get(name=expected_name).rules,
         expected_rules)
Beispiel #3
0
 def test_should_get_rules_from_db(self):
     # GIVEN
     expected_name = 'django_business_rules.tests.product_business_rule.ProductBusinessRule'
     expected_rules = {'key1': 'value1'}
     self.assertFalse(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
     ProductBusinessRule.generate()
     ProductBusinessRule.save_rules({'key1': 'value1'})
     # WHEN
     actual_rules = ProductBusinessRule.get_rules()
     # THEN
     self.assertEqual(actual_rules, expected_rules)
Beispiel #4
0
 def test_should_save_rules_in_db(self):
     # GIVEN
     expected_name = 'django_business_rules.tests.product_business_rule.ProductBusinessRule'
     expected_rules = '{"key1": "value1"}'
     self.assertFalse(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
     ProductBusinessRule.generate()
     # WHEN
     ProductBusinessRule.save_rules({'key1': 'value1'})
     # THEN
     self.assertEqual(
         BusinessRuleModel.objects.get(name=expected_name).rules,
         expected_rules)
Beispiel #5
0
 def test_should_update_rule_model_in_db(self):
     # GIVEN
     expected_name = 'django_business_rules.tests.product_business_rule.ProductBusinessRule'
     self.assertFalse(
         BusinessRuleModel.objects.filter(name=expected_name).exists())
     ProductBusinessRule.generate()
     self.assertEqual(
         BusinessRuleModel.objects.get(name=expected_name).description, '')
     # WHEN
     ProductBusinessRuleToTestUpdate.generate()
     # THEN
     expected_description = 'updated ProductBusinessRule'
     self.assertEqual(
         BusinessRuleModel.objects.get(name=expected_name).description,
         expected_description)
Beispiel #6
0
 def test_should_execute_run_all_with_correct_parameters(
         self, mock_for_run_all, mock_for_get_actions,
         mock_for_get_variables, mock_for_get_rules):
     # GIVEN
     mock_for_rules = Mock()
     mock_for_get_rules.return_value = mock_for_rules
     mock_for_variables = Mock()
     mock_for_get_variables.return_value = mock_for_variables
     mock_for_actions = Mock()
     mock_for_get_actions.return_value = mock_for_actions
     mock_for_product = Mock()
     # WHEN
     ProductBusinessRule.run_all(mock_for_product)
     # THEN
     mock_for_run_all.assert_called_once_with(
         rule_list=mock_for_rules,
         defined_variables=mock_for_variables,
         defined_actions=mock_for_actions,
         stop_on_first_trigger=True)
Beispiel #7
0
 def test_should_save_rule_in_database(self, mock_for_find):
     # GIVEN
     mock_for_find.return_value = [ProductBusinessRule]
     self.assertEqual(0, BusinessRuleModel.objects.count())
     out = io.StringIO()
     try:
         # WHEN
         call_command(self.COMMAND_NAME, verbosity=2, stdout=out)
         # THEN
         self.assertEqual(
             1,
             BusinessRuleModel.objects.filter(
                 name=ProductBusinessRule.get_name()).count())
     except Exception:
         self._print_output(out)
         raise
 def test_updated_rule_should_be_transfered_to_correct_object(self):
     # GIVEN
     rule = BusinessRuleModel.objects.create(name=ProductBusinessRule.name,
                                             description='test description',
                                             rule_data='test rule data',
                                             rules='["test rules"]')
     update_data = {
         'rules': '{"key1": "value1"}',
     }
     # WHEN
     response = self.client.post(
         reverse('dbr:business-rule-form', kwargs={'pk': rule.pk}),
         data=update_data,
     )
     # THEN
     self.assertEqual(response.status_code, 302, response.content)
     self.assertEqual(ProductBusinessRule.get_rules(), {"key1": "value1"})