Skip to content

Commit

Permalink
Factories for the ipr app. Coverage of ietf.ipr.views.ajax_search, an…
Browse files Browse the repository at this point in the history
…d a factory-driven test of ietf.ipr.views.edit. Commit ready for merge.

 - Legacy-Id: 14970
  • Loading branch information
rjsparks committed Mar 29, 2018
1 parent 8187339 commit ce8f73f
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 0 deletions.
73 changes: 73 additions & 0 deletions ietf/ipr/factories.py
@@ -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')

33 changes: 33 additions & 0 deletions ietf/ipr/tests.py
Expand Up @@ -8,6 +8,8 @@
import debug # pyflakes:ignore

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,
get_pseudo_submitter, get_holders, get_update_cc_addrs)
from ietf.ipr.models import (IprDisclosureBase,GenericIprDisclosure,HolderIprDisclosure,
Expand Down Expand Up @@ -668,3 +670,34 @@ def test_process_response_email(self):
result = process_response_email(message_string)
self.assertIsInstance(result,Message)
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)

0 comments on commit ce8f73f

Please sign in to comment.