Factories for the ipr app. Coverage of ietf.ipr.views.ajax_search, and a factory-driven test of ietf.ipr.views.edit. Commit ready for merge.
- Legacy-Id: 14970
This commit is contained in:
parent
8187339020
commit
ce8f73fd9c
73
ietf/ipr/factories.py
Normal file
73
ietf/ipr/factories.py
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import datetime
|
||||||
|
import factory
|
||||||
|
|
||||||
|
|
||||||
|
from ietf.ipr.models import (
|
||||||
|
IprDisclosureBase, HolderIprDisclosure, ThirdPartyIprDisclosure, NonDocSpecificIprDisclosure,
|
||||||
|
GenericIprDisclosure, IprDocRel
|
||||||
|
)
|
||||||
|
|
||||||
|
def _fake_patent_info():
|
||||||
|
return "Date: %s\nNotes: %s\nTitle: %s\nNumber: %s\nInventor: %s\n" % (
|
||||||
|
(datetime.datetime.today()-datetime.timedelta(days=365)).strftime("%Y-%m-%d"),
|
||||||
|
factory.Faker('sentence').generate({}),
|
||||||
|
factory.Faker('sentence').generate({}),
|
||||||
|
'US9999999',
|
||||||
|
factory.Faker('name').generate({}),
|
||||||
|
)
|
||||||
|
|
||||||
|
class IprDisclosureBaseFactory(factory.DjangoModelFactory):
|
||||||
|
class Meta:
|
||||||
|
model = IprDisclosureBase
|
||||||
|
|
||||||
|
by = factory.SubFactory('ietf.person.factories.PersonFactory')
|
||||||
|
compliant = True
|
||||||
|
holder_legal_name = factory.Faker('name')
|
||||||
|
state_id='posted'
|
||||||
|
submitter_name = factory.Faker('name')
|
||||||
|
submitter_email = factory.Faker('email')
|
||||||
|
title = factory.Faker('sentence')
|
||||||
|
|
||||||
|
@factory.post_generation
|
||||||
|
def docs(self, create, extracted, **kwargs):
|
||||||
|
if not create:
|
||||||
|
return
|
||||||
|
if extracted:
|
||||||
|
for doc in extracted:
|
||||||
|
IprDocRel.objects.create(disclosure=self,document=doc.docalias_set.first())
|
||||||
|
|
||||||
|
|
||||||
|
class HolderIprDisclosureFactory(IprDisclosureBaseFactory):
|
||||||
|
class Meta:
|
||||||
|
model = HolderIprDisclosure
|
||||||
|
|
||||||
|
holder_contact_email = factory.Faker('email')
|
||||||
|
holder_contact_name = factory.Faker('name')
|
||||||
|
licensing_id = 'reasonable'
|
||||||
|
patent_info = _fake_patent_info()
|
||||||
|
|
||||||
|
|
||||||
|
class ThirdPartyIprDisclosureFactory(IprDisclosureBaseFactory):
|
||||||
|
class Meta:
|
||||||
|
model = ThirdPartyIprDisclosure
|
||||||
|
|
||||||
|
ietfer_name = factory.Faker('name')
|
||||||
|
ietfer_contact_email = factory.Faker('email')
|
||||||
|
patent_info = _fake_patent_info()
|
||||||
|
|
||||||
|
|
||||||
|
class NonDocSpecificIprDisclosureFactory(IprDisclosureBaseFactory):
|
||||||
|
class Meta:
|
||||||
|
model = NonDocSpecificIprDisclosure
|
||||||
|
|
||||||
|
holder_contact_email = factory.Faker('email')
|
||||||
|
holder_contact_name = factory.Faker('name')
|
||||||
|
patent_info = _fake_patent_info()
|
||||||
|
|
||||||
|
class GenericIprDisclosureFactory(IprDisclosureBaseFactory):
|
||||||
|
class Meta:
|
||||||
|
model = GenericIprDisclosure
|
||||||
|
|
||||||
|
holder_contact_email = factory.Faker('email')
|
||||||
|
holder_contact_name = factory.Faker('name')
|
||||||
|
|
|
@ -8,6 +8,8 @@ from django.urls import reverse as urlreverse
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
from ietf.doc.models import DocAlias
|
from ietf.doc.models import DocAlias
|
||||||
|
from ietf.doc.factories import DocumentFactory
|
||||||
|
from ietf.ipr.factories import HolderIprDisclosureFactory
|
||||||
from ietf.ipr.mail import (process_response_email, get_reply_to, get_update_submitter_emails,
|
from ietf.ipr.mail import (process_response_email, get_reply_to, get_update_submitter_emails,
|
||||||
get_pseudo_submitter, get_holders, get_update_cc_addrs)
|
get_pseudo_submitter, get_holders, get_update_cc_addrs)
|
||||||
from ietf.ipr.models import (IprDisclosureBase,GenericIprDisclosure,HolderIprDisclosure,
|
from ietf.ipr.models import (IprDisclosureBase,GenericIprDisclosure,HolderIprDisclosure,
|
||||||
|
@ -668,3 +670,34 @@ Subject: test
|
||||||
result = process_response_email(message_string)
|
result = process_response_email(message_string)
|
||||||
self.assertIsInstance(result,Message)
|
self.assertIsInstance(result,Message)
|
||||||
self.assertFalse(event.response_past_due())
|
self.assertFalse(event.response_past_due())
|
||||||
|
|
||||||
|
def test_ajax_search(self):
|
||||||
|
url = urlreverse('ietf.ipr.views.ajax_search')
|
||||||
|
response=self.client.get(url+'?q=disclosure')
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
self.assertEqual(response.get('Content-Type'),'application/json')
|
||||||
|
|
||||||
|
def test_edit_using_factory(self):
|
||||||
|
disclosure = HolderIprDisclosureFactory(docs=[DocumentFactory(type_id='draft')])
|
||||||
|
patent_dict = text_to_dict(disclosure.patent_info)
|
||||||
|
url = urlreverse('ietf.ipr.views.edit',kwargs={'id':disclosure.pk})
|
||||||
|
login_testing_unauthorized(self, "secretary", url)
|
||||||
|
response = self.client.get(url)
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
post_data = {
|
||||||
|
'iprdocrel_set-TOTAL_FORMS' : 1,
|
||||||
|
'iprdocrel_set-INITIAL_FORMS' : 1,
|
||||||
|
'iprdocrel_set-0-id': disclosure.pk,
|
||||||
|
"iprdocrel_set-0-document": disclosure.docs.first().pk,
|
||||||
|
"iprdocrel_set-0-revisions": disclosure.docs.first().document.rev,
|
||||||
|
'holder_legal_name': disclosure.holder_legal_name,
|
||||||
|
'patent_number': patent_dict['Number'],
|
||||||
|
'patent_title': patent_dict['Title'],
|
||||||
|
'patent_date' : patent_dict['Date'],
|
||||||
|
'patent_inventor' : patent_dict['Inventor'],
|
||||||
|
'licensing' : disclosure.licensing.slug,
|
||||||
|
}
|
||||||
|
response = self.client.post(url,post_data)
|
||||||
|
self.assertEqual(response.status_code,302)
|
||||||
|
disclosure = HolderIprDisclosure.objects.get(pk=disclosure.pk)
|
||||||
|
self.assertEqual(disclosure.compliant,False)
|
||||||
|
|
Loading…
Reference in a new issue