Skip to content

Commit

Permalink
[Issue #174] adjusted and added factories. fixed some issues in the e…
Browse files Browse the repository at this point in the history
…xisting test cases and fixed two errors in the sourcecode
  • Loading branch information
scaphilo committed Oct 4, 2018
1 parent 3531ea8 commit 5128f33
Show file tree
Hide file tree
Showing 21 changed files with 112 additions and 137 deletions.
6 changes: 2 additions & 4 deletions koalixcrm/crm/factories/factory_contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
from koalixcrm.crm.models import Contract
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.crm.factories.factory_customer import StandardCustomerFactory
from koalixcrm.crm.factories.factory_supplier import StandardSupplierFactory
from koalixcrm.crm.factories.factory_currency import StandardCurrencyFactory
from koalixcrm.djangoUserExtension.factories import StandardDefaultTemplateSet
from koalixcrm.djangoUserExtension.factories.factory_template_set import StandardTemplateSetFactory


class StandardContractFactory(factory.django.DjangoModelFactory):
Expand All @@ -16,9 +15,8 @@ class Meta:
staff = factory.SubFactory(StaffUserFactory)
description = "This is the description to a test contract"
default_customer = factory.SubFactory(StandardCustomerFactory)
default_supplier = factory.SubFactory(StandardSupplierFactory)
default_currency = factory.SubFactory(StandardCurrencyFactory)
default_template_set = factory.SubFactory(StandardDefaultTemplateSet)
default_template_set = factory.SubFactory(StandardTemplateSetFactory)
date_of_creation = "2018-05-01"
last_modification = "2018-05-03"
last_modified_by = factory.SubFactory(StaffUserFactory)
14 changes: 10 additions & 4 deletions koalixcrm/crm/factories/factory_estimation.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from koalixcrm.crm.models import Estimation
from koalixcrm.crm.factories.factory_resource import StandardResourceFactory
from koalixcrm.crm.factories.factory_human_resource import StandardHumanResourceFactory
from koalixcrm.crm.factories.factory_reporting_period import StandardReportingPeriodFactory
from koalixcrm.crm.factories.factory_estimation_status import StartedEstimationStatusFactory
from koalixcrm.crm.factories.factory_task import StandardTaskFactory
from koalixcrm.test_support_functions import make_date_utc

Expand All @@ -13,19 +15,23 @@ class StandardEstimationToTaskFactory(factory.django.DjangoModelFactory):
class Meta:
model = Estimation

planned_effort = "112.50"
amount = "112.50"
task = factory.SubFactory(StandardTaskFactory)
resource = factory.SubFactory(StandardResourceFactory)
date_from = make_date_utc(datetime.datetime(2018, 5, 2, 00))
date_to = make_date_utc(datetime.datetime(2018, 6, 15, 00))
date_until = make_date_utc(datetime.datetime(2018, 6, 15, 00))
status = factory.SubFactory(StartedEstimationStatusFactory)
reporting_period = factory.SubFactory(StandardReportingPeriodFactory)


class StandardHumanResourceEstimationToTaskFactory(factory.django.DjangoModelFactory):
class Meta:
model = Estimation

planned_effort = "112.50"
amount = "112.50"
task = factory.SubFactory(StandardTaskFactory)
resource = factory.SubFactory(StandardHumanResourceFactory)
date_from = make_date_utc(datetime.datetime(2018, 5, 2, 00))
date_to = make_date_utc(datetime.datetime(2018, 6, 15, 00))
date_until = make_date_utc(datetime.datetime(2018, 6, 15, 00))
status = factory.SubFactory(StartedEstimationStatusFactory)
reporting_period = factory.SubFactory(StandardReportingPeriodFactory)
4 changes: 2 additions & 2 deletions koalixcrm/crm/factories/factory_human_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import factory
from koalixcrm.crm.models import HumanResource
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.djangoUserExtension.factories.factory_user_extension import StandardUserExtensionFactory
from koalixcrm.crm.factories.factory_resource_type import StandardResourceTypeFactory
from koalixcrm.crm.factories.factory_resource_manager import StandardResourceManagerFactory

Expand All @@ -11,6 +11,6 @@ class StandardHumanResourceFactory(factory.django.DjangoModelFactory):
class Meta:
model = HumanResource

user = factory.SubFactory(StaffUserFactory)
user = factory.SubFactory(StandardUserExtensionFactory)
resource_type = factory.SubFactory(StandardResourceTypeFactory)
resource_manager = factory.SubFactory(StandardResourceManagerFactory)
6 changes: 3 additions & 3 deletions koalixcrm/crm/factories/factory_product_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from koalixcrm.crm.models import ProductType
from koalixcrm.crm.factories.factory_unit import StandardUnitFactory
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.accounting.factories.factory_product_category import StandardProductCategoryFactory
from koalixcrm.crm.factories.factory_tax import StandardTaxFactory
from koalixcrm.test_support_functions import make_date_utc


Expand All @@ -15,10 +15,10 @@ class Meta:
django_get_or_create = ('product_type_identifier',)

title = "This is a test Product"
description = "This is a test Product"
product_type_identifier = "123456"
default_unit = factory.SubFactory(StandardUnitFactory)
date_of_creation = make_date_utc(datetime.datetime(2018, 6, 15, 00))
last_modification = make_date_utc(datetime.datetime(2018, 6, 15, 00))
last_modified_by = factory.SubFactory(StaffUserFactory)
tax = factory.SubFactory(StandardUnitFactory)
accounting_product_category = factory.SubFactory(StandardProductCategoryFactory)
tax = factory.SubFactory(StandardTaxFactory)
4 changes: 2 additions & 2 deletions koalixcrm/crm/factories/factory_resource_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import factory
from koalixcrm.crm.models import ResourceManager
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.djangoUserExtension.factories.factory_user_extension import StandardUserExtensionFactory


class StandardResourceManagerFactory(factory.django.DjangoModelFactory):
class Meta:
model = ResourceManager

user = factory.SubFactory(StaffUserFactory)
user = factory.SubFactory(StandardUserExtensionFactory)
4 changes: 2 additions & 2 deletions koalixcrm/crm/factories/factory_sales_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from koalixcrm.crm.factories.factory_contract import StandardContractFactory
from koalixcrm.crm.factories.factory_customer import StandardCustomerFactory
from koalixcrm.crm.factories.factory_currency import StandardCurrencyFactory
from koalixcrm.djangoUserExtension.factories import StandardDefaultTemplateSet
from koalixcrm.djangoUserExtension.factories.factory_document_template import StandardQuoteTemplateFactory


class StandardSalesDocumentFactory(factory.django.DjangoModelFactory):
Expand All @@ -27,7 +27,7 @@ class Meta:
custom_date_field = "2018-05-20"
last_modification = "2018-05-25"
last_modified_by = factory.SubFactory(StaffUserFactory)
template_set = factory.SubFactory(StandardDefaultTemplateSet)
template_set = factory.SubFactory(StandardQuoteTemplateFactory)
derived_from_sales_document = None
last_print_date = "2018-05-26"

21 changes: 21 additions & 0 deletions koalixcrm/crm/factories/factory_sales_document_position.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-

import factory
from koalixcrm.crm.models import SalesDocumentPosition
from koalixcrm.crm.factories.factory_product_type import StandardProductTypeFactory
from koalixcrm.crm.factories.factory_unit import StandardUnitFactory


class StandardSalesDocumentPositionFactory(factory.django.DjangoModelFactory):
class Meta:
model = SalesDocumentPosition

position_number = 5
quantity = 5
description = "This is a test sales document position"
discount = 10
product_type = factory.SubFactory(StandardProductTypeFactory)
unit = factory.SubFactory(StandardUnitFactory)
overwrite_product_price = True
position_price_per_unit = 155

2 changes: 1 addition & 1 deletion koalixcrm/crm/factories/factory_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
class StandardUnitFactory(factory.django.DjangoModelFactory):
class Meta:
model = Unit
django_get_or_create = ('project_name',)
django_get_or_create = ('short_name',)

description = "Kilogram"
short_name = "kg"
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/factories/factory_work.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
import factory
import datetime
from koalixcrm.crm.models import Work
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.crm.factories.factory_task import StandardTaskFactory
from koalixcrm.crm.factories.factory_reporting_period import StandardReportingPeriodFactory
from koalixcrm.crm.factories.factory_human_resource import StandardUserExtensionFactory
from koalixcrm.test_support_functions import make_date_utc


class StandardWorkFactory(factory.django.DjangoModelFactory):
class Meta:
model = Work

employee = factory.SubFactory(StaffUserFactory)
human_resource = factory.SubFactory(StandardUserExtensionFactory)
date = make_date_utc(datetime.datetime(2018, 5, 1, 0, 00))
start_time = None
stop_time = None
Expand Down
2 changes: 1 addition & 1 deletion koalixcrm/crm/product/product_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ProductType(models.Model):
accounting_product_category = models.ForeignKey('accounting.ProductCategory',
verbose_name=_("Accounting Product Category"),
null=True,
blank="True")
blank=True)

def get_price(self, date, unit, customer, currency):
"""The function searches for a valid price and returns the price of the product as a decimal value.
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/reporting/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def effective_end(self):
effective_task_end = None
if self.task_end():
if len(all_task_works) == 0:
effective_task_end = self.last_status_change
effective_task_end = self.last_status_change.date
else:
for work in all_task_works:
if not effective_task_end:
Expand Down Expand Up @@ -252,7 +252,7 @@ def effective_duration(self):
elif not effective_end:
duration_as_string = 0
else:
duration_as_date = self.effective_end()-self.effective_start()
duration_as_date = effective_end-effective_start
duration_as_string = duration_as_date.days.__str__()
return duration_as_string
effective_duration.short_description = _("Effective Duration [dys]")
Expand Down
112 changes: 20 additions & 92 deletions koalixcrm/crm/tests/test_create_task.py
Original file line number Diff line number Diff line change
@@ -1,115 +1,43 @@
import datetime
# -*- coding: utf-8 -*-

import pytest
from django.test import TestCase
from django.contrib.auth.models import User
from koalixcrm.crm.models import Contract
from koalixcrm.crm.models import Customer
from koalixcrm.crm.models import CustomerGroup
from koalixcrm.crm.models import CustomerBillingCycle
from koalixcrm.crm.models import Currency
from koalixcrm.crm.models import ProductType
from koalixcrm.crm.models import Tax
from koalixcrm.crm.models import Unit
from koalixcrm.crm.models import Quote
from koalixcrm.crm.models import Price
from koalixcrm.crm.factories.factory_sales_document_position import StandardSalesDocumentPositionFactory
from koalixcrm.crm.factories.factory_currency import StandardCurrencyFactory
from koalixcrm.crm.factories.factory_quote import StandardQuoteFactory
from koalixcrm.crm.factories.factory_user import StaffUserFactory
from koalixcrm.crm.factories.factory_product_type import StandardProductTypeFactory
from koalixcrm.crm.factories.factory_product_price import StandardPriceFactory
from koalixcrm.crm.models import Task
from koalixcrm.crm.models import SalesDocumentPosition
from koalixcrm.crm.views.create_task import CreateTaskView
from koalixcrm.test_support_functions import make_date_utc


class DocumentCalculationsTest(TestCase):
def setUp(self):
datetime_now = make_date_utc(datetime.datetime(2024, 1, 1, 0, 00))
valid_from = (datetime_now - datetime.timedelta(days=30)).date()
valid_until = (datetime_now + datetime.timedelta(days=30)).date()
date_now = datetime_now.date()
test_billing_cycle = CustomerBillingCycle.objects.create(
name="30 days to pay",
time_to_payment_date=30,
payment_reminder_time_to_payment=10
)
test_user = User.objects.create(
username='Username',
password="User_one")
test_customer_group = CustomerGroup.objects.create(
name="Triple A"
)
test_customer = Customer.objects.create(
name="John Smith",
last_modified_by=test_user,
default_customer_billing_cycle=test_billing_cycle,
)
test_customer.is_member_of = [test_customer_group]
test_customer.save()
test_currency = Currency.objects.create(
description="Swiss Francs",
short_name="CHF",
rounding=0.05,
)
test_contract = Contract.objects.create(
staff=test_user,
description="This is a test contract",
default_customer=test_customer,
default_currency=test_currency,
last_modification=date_now,
last_modified_by=test_user
)
test_unit = Unit.objects.create(
description="Kilogram",
short_name="kg",
)
test_tax = Tax.objects.create(
tax_rate=7.7,
name="MwSt 7.7%")
test_quote = Quote.objects.create(
valid_until=valid_until,
status="C",
contract=test_contract,
external_reference="ThisIsAnExternalReference",
discount="11.23",
description="This is a test offer",
customer=test_customer,
staff=test_user,
currency=test_currency,
date_of_creation=date_now,
last_modified_by=test_user,)
self.test_currency = StandardCurrencyFactory.create()
self.test_quote = StandardQuoteFactory.create()
self.test_user = StaffUserFactory.create()
for i in range(10):
test_product = ProductType.objects.create(
test_product = StandardProductTypeFactory.create(
description="This is a test product " + i.__str__(),
title="This is a test product " + i.__str__(),
product_number=12334235+i,
default_unit=test_unit,
last_modification=date_now,
last_modified_by=test_user,
tax=test_tax,
product_type_identifier=12334235+i,
)
Price.objects.create(
product=test_product,
unit=test_unit,
currency=test_currency,
customer_group=test_customer_group,
price=i*100,
valid_from=valid_from,
valid_until=valid_until,
StandardPriceFactory.create(
product_type=test_product,
)
SalesDocumentPosition.objects.create(
sales_document=test_quote,
StandardSalesDocumentPositionFactory.create(
sales_document=self.test_quote,
position_number=i*10,
quantity=0.333*i,
description="This is a test position " + i.__str__(),
discount=i*5,
product=test_product,
unit=test_unit,
overwrite_product_price=False,
discount=i*5
)

@pytest.mark.back_end_tests
def test_create_task(self):
test_quote = Quote.objects.get(description="This is a test offer")
test_user = User.objects.get(username='Username')
project = CreateTaskView.create_project_from_document(test_user, test_quote)
tasks =Task.objects.filter(project=project.id)
project = CreateTaskView.create_project_from_document(self.test_user, self.test_quote)
tasks = Task.objects.filter(project=project.id)
task_counter = 0
for task_current in tasks:
self.assertEqual(
Expand Down
4 changes: 2 additions & 2 deletions koalixcrm/crm/tests/test_task_effective_duration.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ def setUp(self):
project=self.test_reporting_period.project)
self.estimation_1st_task = StandardHumanResourceEstimationToTaskFactory(task=self.test_1st_task,
date_from=start_date,
date_to=end_date_first_task)
date_until=end_date_first_task)
self.test_2nd_task = StandardTaskFactory.create(title="2nd Test Task",
project=self.test_reporting_period.project)
self.estimation_2nd_task = StandardHumanResourceEstimationToTaskFactory(task=self.test_2nd_task,
date_from=start_date,
date_to=end_date_second_task)
date_until=end_date_second_task)

@pytest.mark.back_end_tests
def test_effective_duration(self):
Expand Down
Loading

0 comments on commit 5128f33

Please sign in to comment.