[FIX][TEST] membership: fixed tests. It is now clear that
tests crash and that there is a mismatch between the tests and the module. However as the tests were badly written the asserts did not fire. Now the tests crash as they should be doing since a long time. [CLEAN] membership: dead code / tests cleaning Removed dead code, unnecessary comments in membership.py. Also added the use of server datetime format instead of custom one. Also slightly cleaned the tests. No change, but use data created for the tests instead of relying on existing demo data, probably modified by the user and difficult to track.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
import time
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import fields, osv
|
||||
import openerp.addons.decimal_precision as dp
|
||||
from openerp.tools.translate import _
|
||||
@@ -18,18 +19,10 @@ STATE = [
|
||||
('paid', 'Paid Member'),
|
||||
]
|
||||
|
||||
STATE_PRIOR = {
|
||||
'none': 0,
|
||||
'canceled': 1,
|
||||
'old': 2,
|
||||
'waiting': 3,
|
||||
'invoiced': 4,
|
||||
'free': 6,
|
||||
'paid': 7
|
||||
}
|
||||
|
||||
class membership_line(osv.osv):
|
||||
'''Member line'''
|
||||
_name = 'membership.membership_line'
|
||||
_description = __doc__
|
||||
|
||||
def _get_partners(self, cr, uid, ids, context=None):
|
||||
list_membership_line = []
|
||||
@@ -48,13 +41,7 @@ class membership_line(osv.osv):
|
||||
return list_membership_line
|
||||
|
||||
def _check_membership_date(self, cr, uid, ids, context=None):
|
||||
"""Check if membership product is not in the past
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Membership Line IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
"""Check if membership product is not in the past """
|
||||
|
||||
cr.execute('''
|
||||
SELECT MIN(ml.date_to - ai.date_invoice)
|
||||
@@ -72,15 +59,7 @@ class membership_line(osv.osv):
|
||||
return True
|
||||
|
||||
def _state(self, cr, uid, ids, name, args, context=None):
|
||||
"""Compute the state lines
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Membership Line IDs
|
||||
@param name: Field Name
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param return: Dictionary of state Value
|
||||
"""
|
||||
"""Compute the state lines """
|
||||
res = {}
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
for line in self.browse(cr, uid, ids, context=context):
|
||||
@@ -119,9 +98,6 @@ class membership_line(osv.osv):
|
||||
res[line.id] = state
|
||||
return res
|
||||
|
||||
|
||||
_description = __doc__
|
||||
_name = 'membership.membership_line'
|
||||
_columns = {
|
||||
'partner': fields.many2one('res.partner', 'Partner', ondelete='cascade', select=1),
|
||||
'membership_id': fields.many2one('product.product', string="Membership", required=True),
|
||||
@@ -153,14 +129,12 @@ class membership_line(osv.osv):
|
||||
]
|
||||
|
||||
|
||||
|
||||
class Partner(osv.osv):
|
||||
'''Partner'''
|
||||
_inherit = 'res.partner'
|
||||
|
||||
def _get_partner_id(self, cr, uid, ids, context=None):
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
data_inv = member_line_obj.browse(cr, uid, ids, context=context)
|
||||
list_partner = []
|
||||
for data in data_inv:
|
||||
@@ -190,19 +164,11 @@ class Partner(osv.osv):
|
||||
self._store_set_values(cr, uid, partner_ids, ['membership_state'], context=context)
|
||||
|
||||
def _membership_state(self, cr, uid, ids, name, args, context=None):
|
||||
"""This Function return Membership State For Given Partner.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Partner IDs
|
||||
@param name: Field Name
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param return: Dictionary of Membership state Value
|
||||
"""
|
||||
"""This Function return Membership State For Given Partner. """
|
||||
res = {}
|
||||
for id in ids:
|
||||
res[id] = 'none'
|
||||
today = time.strftime('%Y-%m-%d')
|
||||
today = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT)
|
||||
for id in ids:
|
||||
partner_data = self.browse(cr, uid, id, context=context)
|
||||
if partner_data.membership_cancel and today > partner_data.membership_cancel:
|
||||
@@ -262,13 +228,13 @@ class Partner(osv.osv):
|
||||
member_line_obj = self.pool.get('membership.membership_line')
|
||||
for partner in self.browse(cr, uid, ids, context=context):
|
||||
if partner.associate_member:
|
||||
partner_id = partner.associate_member.id
|
||||
partner_id = partner.associate_member.id
|
||||
else:
|
||||
partner_id = partner.id
|
||||
partner_id = partner.id
|
||||
res[partner.id] = {
|
||||
'membership_start': False,
|
||||
'membership_stop': False,
|
||||
'membership_cancel': False
|
||||
'membership_start': False,
|
||||
'membership_stop': False,
|
||||
'membership_cancel': False
|
||||
}
|
||||
if name == 'membership_start':
|
||||
line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
|
||||
@@ -348,10 +314,6 @@ class Partner(osv.osv):
|
||||
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
|
||||
}, help="Date on which membership has been cancelled"),
|
||||
}
|
||||
_defaults = {
|
||||
'free_member': False,
|
||||
'membership_cancel': False,
|
||||
}
|
||||
|
||||
def _check_recursion(self, cr, uid, ids, context=None):
|
||||
"""Check Recursive for Associated Members.
|
||||
@@ -376,7 +338,6 @@ class Partner(osv.osv):
|
||||
"""
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
invoice_tax_obj = self.pool.get('account.invoice.tax')
|
||||
product_id = product_id or datas.get('membership_product_id', False)
|
||||
amount = datas.get('amount', 0.0)
|
||||
invoice_list = []
|
||||
@@ -390,7 +351,6 @@ class Partner(osv.osv):
|
||||
raise UserError(_("Partner is a free Member."))
|
||||
if not addr.get('invoice', False):
|
||||
raise UserError(_("Partner doesn't have an address to make the invoice."))
|
||||
quantity = 1
|
||||
invoice_id = invoice_obj.create(cr, uid, {
|
||||
'partner_id': partner.id,
|
||||
'account_id': account_id,
|
||||
@@ -414,6 +374,7 @@ class Partner(osv.osv):
|
||||
|
||||
|
||||
class Product(osv.osv):
|
||||
_inherit = 'product.template'
|
||||
|
||||
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
model_obj = self.pool.get('ir.model.data')
|
||||
@@ -432,8 +393,6 @@ class Product(osv.osv):
|
||||
view_id = dict_model['membership_products_tree']
|
||||
return super(Product,self).fields_view_get(cr, user, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
|
||||
|
||||
'''Product'''
|
||||
_inherit = 'product.template'
|
||||
_columns = {
|
||||
'membership': fields.boolean('Membership', help='Check if the product is eligible for membership.'),
|
||||
'membership_date_from': fields.date('Membership Start Date', help='Date from which membership becomes active.'),
|
||||
@@ -441,14 +400,10 @@ class Product(osv.osv):
|
||||
}
|
||||
|
||||
_sql_constraints = [('membership_date_greater','check(membership_date_to >= membership_date_from)','Error ! Ending Date cannot be set before Beginning Date.')]
|
||||
_defaults = {
|
||||
'membership': False,
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Invoice(osv.osv):
|
||||
'''Invoice'''
|
||||
_inherit = 'account.invoice'
|
||||
|
||||
def action_cancel(self, cr, uid, ids, context=None):
|
||||
@@ -464,7 +419,7 @@ class Invoice(osv.osv):
|
||||
|
||||
|
||||
class account_invoice_line(osv.osv):
|
||||
_inherit='account.invoice.line'
|
||||
_inherit = 'account.invoice.line'
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
"""Overrides orm write method
|
||||
|
||||
@@ -1,9 +1,27 @@
|
||||
- |
|
||||
Test Datas
|
||||
-
|
||||
!record {model: res.partner, id: test_partner_0}:
|
||||
name: Seagate
|
||||
free_member: False
|
||||
- |
|
||||
Test Datas
|
||||
-
|
||||
!record {model: res.partner, id: test_partner_1}:
|
||||
name: Ms. Jonhson
|
||||
free_member: True
|
||||
- |
|
||||
Test Datas
|
||||
-
|
||||
!record {model: res.partner, id: test_partner_2}:
|
||||
name: Ms. Smith
|
||||
free_member: False
|
||||
- |
|
||||
In Order to test the Membership in OpenERP, which allows us to manage all operations for managing memberships.
|
||||
- |
|
||||
I'm creating "Gold Membership" which has Membership fee 80 EURO and It's started from 1st June to 31st Dec.
|
||||
-
|
||||
!record {model: product.product, id: product_product_membershipproduct0}:
|
||||
!record {model: product.product, id: test_membership_0}:
|
||||
categ_id: product.product_category_1
|
||||
membership: 1
|
||||
membership_date_from: !eval datetime.today().strftime("%Y-%m-%d")
|
||||
@@ -15,18 +33,18 @@
|
||||
- |
|
||||
"Seagate" want to join "Gold Membership", so I'm checking "Current Membership State" of "Seagate". It is an "Non Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: base.res_partner_19}:
|
||||
- membership_state == 'none', 'Member should be has "Current Membership State" in "Non Member".'
|
||||
!assert {model: res.partner, id: test_partner_0, string: Member should be has Current Membership State in Non Member}:
|
||||
- membership_state == 'none'
|
||||
- |
|
||||
I'm doing to make membership invoice for "Seagate" on joining "Gold Membership".
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
self.create_membership_invoice(cr, uid, [ref("base.res_partner_19")], product_id=ref("product_product_membershipproduct0"), datas={"amount":80.00})
|
||||
self.create_membership_invoice(cr, uid, [ref("test_partner_0")], product_id=ref("test_membership_0"), datas={"amount":80.00})
|
||||
- |
|
||||
I'm checking "Current Membership State" of "Seagate". It is an "Waiting Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: base.res_partner_19}:
|
||||
- membership_state == 'waiting', 'Member should be has "Current Membership State" in "Waiting Member".'
|
||||
!assert {model: res.partner, id: test_partner_0, string: Member should be has Current Membership State in Waiting Member}:
|
||||
- membership_state == 'waiting'
|
||||
- |
|
||||
I'm Opening that Invoice which is created for "Seagate".
|
||||
-
|
||||
@@ -36,7 +54,7 @@
|
||||
membership_line_pool = self.pool.get('membership.membership_line')
|
||||
membership_pool = self.pool.get('product.product')
|
||||
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('product_product_membershipproduct0')),('partner','=',ref('base.res_partner_19'))])
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('test_membership_0')),('partner','=',ref('test_partner_0'))])
|
||||
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
|
||||
assert membership_lines, 'Membership is not registrated.'
|
||||
membership_line = membership_lines[0]
|
||||
@@ -45,39 +63,25 @@
|
||||
- |
|
||||
I'm checking "Current membership state" of "Seagate". It is an "Invoiced Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: base.res_partner_19}:
|
||||
- membership_state == 'invoiced', 'Member should be has "Current Membership State" in "Invoiced Member".'
|
||||
|
||||
- |
|
||||
I'm creating free member "Ms. Johnson" of "Gold Membership".
|
||||
-
|
||||
!record {model: res.partner, id: res_partner_msjohnson0}:
|
||||
name: Ms. Johnson
|
||||
city: paris
|
||||
country_id: base.fr
|
||||
name: Ms. Johnson
|
||||
street: 1 rue Rockfeller
|
||||
type: invoice
|
||||
zip: '75016'
|
||||
free_member: True
|
||||
|
||||
!assert {model: res.partner, id: test_partner_0, string: Member should be has Current Membership State in Invoiced Member}:
|
||||
- membership_state == 'invoiced'
|
||||
- |
|
||||
I'm checking "Current membership state" of "Ms. Johnson". It is an "Free Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_msjohnson0}:
|
||||
- membership_state == 'free', 'Member should be has "Current Membership State" in "Free Member".'
|
||||
!assert {model: res.partner, id: test_partner_1, string: Member should be has Current Membership State in Free Member}:
|
||||
- membership_state == 'free'
|
||||
|
||||
- |
|
||||
I'm set "Seagate" as a associated member of "Ms. Johnson" and also set Non free member.
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
self.write(cr, uid, [ref("res_partner_msjohnson0")], {'free_member': False, 'associate_member': ref("base.res_partner_19")})
|
||||
self.write(cr, uid, [ref("test_partner_1")], {'free_member': False, 'associate_member': ref("test_partner_0")})
|
||||
|
||||
- |
|
||||
I'm checking "Current membership state" of "Ms. Johnson". It is an "Paid Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_msjohnson0}:
|
||||
- membership_state == 'paid', 'Member should be has "Current Membership State" in "Paid Member".'
|
||||
!assert {model: res.partner, id: test_partner_1, string: Member should be has Current Membership State in Invoiced Member}:
|
||||
- membership_state == 'invoiced'
|
||||
|
||||
- |
|
||||
I'm creating new "Regular Membership" which has Membership fee 50 EURO and It's started from 1st June to 31st Dec.
|
||||
@@ -85,21 +89,21 @@
|
||||
!record {model: product.product, id: product_product_membershipproduct1}:
|
||||
categ_id: product.product_category_1
|
||||
membership: 1
|
||||
membership_date_from: !eval datetime.today().strftime("%Y-%m-%d")
|
||||
membership_date_to: !eval "(datetime.now() + timedelta(6*31)).strftime('%Y-%m-%d')"
|
||||
membership_date_from: '2013-01-01'
|
||||
membership_date_to: '2013-12-31'
|
||||
name: Regular Membership
|
||||
type: service
|
||||
list_price: 50.00
|
||||
- |
|
||||
I'm making invoice of "Seagate" member on joining new membership "Regular Membership".
|
||||
I'm making invoice of "Smith" member on joining new membership "Regular Membership".
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
self.create_membership_invoice(cr, uid, [ref("base.res_partner_19")], product_id=ref("product_product_membershipproduct1"), datas={"amount":50.00})
|
||||
self.create_membership_invoice(cr, uid, [ref("test_partner_2")], product_id=ref("product_product_membershipproduct1"), datas={"amount":50.00})
|
||||
- |
|
||||
I'm checking "Current membership state" of "Seagate". It is an "Old Member" or not.
|
||||
I'm checking "Current membership state" of "Smith". It is an "Old Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: base.res_partner_19}:
|
||||
- membership_state == 'old', 'Member should be has "Current Membership State" in "Old Member".'
|
||||
!assert {model: res.partner, id: test_partner_2, string: Member should be has Current Membership State in Old Member}:
|
||||
- membership_state == 'old'
|
||||
- |
|
||||
I'm doing to make credit note of invoice which is paid by "Seagate" to cancel membership.
|
||||
-
|
||||
@@ -110,7 +114,7 @@
|
||||
membership_pool = self.pool.get('product.product')
|
||||
invoice_refund_pool = self.pool.get('account.invoice.refund')
|
||||
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('product_product_membershipproduct0')),('partner','=',ref('base.res_partner_19'))])
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('test_membership_0')),('partner','=',ref('test_partner_0'))])
|
||||
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
|
||||
assert membership_lines, 'Membership is not registrated.'
|
||||
membership_line = membership_lines[0]
|
||||
@@ -119,6 +123,6 @@
|
||||
- |
|
||||
I'm checking "Current membership state" of "Seagate". It is an "Cancelled Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: base.res_partner_19}:
|
||||
- membership_state == 'canceled', 'Member should be has "Current Membership State" in "Cancelled Member".'
|
||||
!assert {model: res.partner, id: test_partner_0, string: Member should be has Current Membership State in Cancelled Member}:
|
||||
- membership_state == 'canceled'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user