Example #1
0
    def test_article_category(self):
        self._log_as_editor()

        article_class = get_article_class()
        site1 = Site.objects.get(id=settings.SITE_ID)
        site2 = mommy.make(Site)

        cat = mommy.make(ArticleCategory)
        self.assertEqual(list(cat.sites.all()), [site1])

        cat2 = mommy.make(ArticleCategory)
        cat2.sites.remove(site1)
        cat2.sites.add(site2)
        cat2.save()
        self.assertEqual(list(cat2.sites.all()), [site2])

        cat3 = mommy.make(ArticleCategory)
        cat3.sites.remove(site1)
        cat3.save()
        self.assertEqual(list(cat3.sites.all()), [])

        art1 = mommy.make(article_class, slug="test", category=cat, publication=BaseArticle.PUBLISHED)

        url = reverse('coop_cms_article_settings', args=[art1.id])
        response = self.client.get(url)
        self.assertEqual(200, response.status_code)

        soup = BeautifulSoup(response.content)
        cat_choices = soup.select("select#id_category option")
        self.assertEqual(2, len(cat_choices))
        self.assertEqual("", cat_choices[0]["value"])
        self.assertEqual(str(cat.id), cat_choices[1]["value"])
        self.assertEqual(cat.name, cat_choices[1].text)
Example #2
0
    def test_show_carousel_several_images(self):
        """display an album"""

        media_filer = mommy.make(MediaFilter, name='Album Homepage')
        image1 = mommy.make(Image, _create_files=True)
        image1.filters.add(media_filer)
        image1.save()
        image2 = mommy.make(Image, _create_files=True)
        image2.filters.add(media_filer)
        image2.save()
        image3 = mommy.make(Image, _create_files=True)

        template_content = '''
        {% load coop_utils %}
        {% coop_image_list 'Album Homepage' as homepage_album %}
        {% include "test/carousel.html" with image_list=homepage_album %}')
        '''
        tpl = Template(template_content)
        html = tpl.render(Context({}))

        soup = BeautifulSoup(html)
        tags = soup.select('img')
        self.assertEqual(2, len(tags))
        self.assertEqual(
            sorted([img.get_absolute_url() for img in (image1, image2)]),
            sorted([tag['src'] for tag in tags]),
        )
Example #3
0
    def test_article_settings_no_sites(self):
        other_site = mommy.make(Site)

        initial_data = {'title': "test", 'content': "this is my article content"}
        article_class = get_article_class()

        art1 = article_class.objects.create(publication=BaseArticle.PUBLISHED, **initial_data)

        self._log_as_editor()
        data = {
            'template': get_article_templates(None, self.user)[0][0],
            'category': '',
            'publication': BaseArticle.PUBLISHED,
            'publication_date': "2013-01-01 12:00:00",
            'headline': True,
            'in_newsletter': True,
            'summary': 'short summary',
            'navigation_parent': None,
            'sites': []
        }

        response = self.client.post(reverse('coop_cms_article_settings', args=[art1.id]), data=data, follow=True)
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("ul.errorlist")), 1)

        self.assertEqual(article_class.objects.exclude(id=art1.id).count(), 0)
        art1 = article_class.objects.get(id=art1.id)

        self.assertNotEqual(art1.summary, data['summary'])
        self.assertEqual(sorted([a.id for a in art1.sites.all()]), [settings.SITE_ID])
Example #4
0
    def test_new_article_invalid_category_site(self):
        article_class = get_article_class()

        category1 = mommy.make(ArticleCategory)
        category1.sites.clear()
        category1.sites.add(Site.objects.get_current())
        category1.save()

        category2 = mommy.make(ArticleCategory)
        category2.sites.clear()
        category2.save()

        self._log_as_editor()
        data = {
            'title': "Un titre",
            'category': category2.id,
            'publication': BaseArticle.DRAFT,
            'template': get_article_templates(None, self.user)[0][0],
            'navigation_parent': None,
            'sites': [settings.SITE_ID]
        }

        response = self.client.post(reverse('coop_cms_new_article'), data=data, follow=True)
        self.assertEqual(response.status_code, 200)

        self.assertEqual(article_class.objects.count(), 0)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("ul.errorlist")), 1)
Example #5
0
 def test_view_new_article(self):
     self._log_as_editor()
     url = reverse('coop_cms_new_article')
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select("#id_dummy")))
Example #6
0
 def test_view_object_viewer(self):
     self._log_as_viewer()
     obj = mommy.make(TestClass)
     response = self.client.get(obj.get_absolute_url())
     self.assertEqual(200, response.status_code)
     soup = BeautifulSoup(response.content)
     self.assertEqual("ABC", soup.select("#properties")[0].text)
Example #7
0
 def test_view_object_viewer_bool_false(self):
     self._log_as_viewer()
     obj = mommy.make(TestClass, bool_field=False)
     response = self.client.get(obj.get_absolute_url())
     self.assertEqual(200, response.status_code)
     soup = BeautifulSoup(response.content)
     self.assertEqual(0, len(soup.select(".bool_field_is_true")))
     self.assertEqual(1, len(soup.select(".bool_field_is_false")))
Example #8
0
 def test_view_article_settings(self):
     self._log_as_editor()
     article_class = coop_settings.get_article_class()
     article = mommy.make(article_class, slug="test")
     url = reverse('coop_cms_article_settings', args=[article.id])
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select("#id_dummy")))
Example #9
0
    def test_additional_field_on_create(self):
        self._log_as_editor()

        url = reverse("coop_cms_new_newsletter")

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)
        self.assertEqual(1, len(soup.select("#id_dummy")))
Example #10
0
 def test_view_login(self):
     """test the user can view the login page"""
     url = reverse("login")
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     soup = BeautifulSoup(response.content)
     self.assertTrue(len(soup.select("input[name=email]")) > 0)
     self.assertTrue(len(soup.select("input[name=password]")) > 0)
     self.assertEqual(0, len(soup.select("input[name=username]")))
Example #11
0
 def test_edit_formset_no_objects(self):
     self._log_as_editor()
     
     url = reverse('coop_cms_testapp_formset_edit')
     
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select('form')))
Example #12
0
    def test_add_link_no_title(self):
        self._log_as_editor()
        data = {'title': "", 'url': "http://www.google.fr", 'sites': [settings.SITE_ID]}

        response = self.client.post(reverse('coop_cms_new_link'), data=data, follow=True)
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("ul.errorlist")), 1)

        self.assertEqual(Link.objects.count(), 0)
Example #13
0
 def test_view_article_set_homepage(self):
     self._log_as_editor(can_add=True)
     article_class = get_article_class()
     art = mommy.make(article_class, slug="test", publication=BaseArticle.PUBLISHED)
     url = art.get_edit_url()
     response = self.client.get(url)
     self.assertEqual(response.status_code, 200)
     soup = BeautifulSoup(response.content)
     url = reverse('coop_cms_set_homepage', args=[art.id])
     links = soup.select('.coop-bar a[href="{0}"]'.format(url))
     self.assertEqual(1, len(links))
Example #14
0
    def test_show_empty_carousel_missing_filter(self):
        """display an album"""

        template_content = '''
        {% load coop_utils %}
        {% coop_image_list 'Album Homepage' as homepage_album %}
        {% include "test/carousel.html" with image_list=homepage_album %}')
        '''
        tpl = Template(template_content)
        html = tpl.render(Context({}))

        soup = BeautifulSoup(html)
        self.assertEqual(0, len(soup.select('img')))
Example #15
0
 def test_view_reason_unknown(self):
     """Check custom page with unknown"""
     factory = RequestFactory()
     request = factory.get('/')
     request.user = AnonymousUser()
     
     response = csrf_failure(request, "?")
     
     self.assertEqual(403, response.status_code)
     soup = BeautifulSoup(response.content)
     
     self.assertEqual(0, len(soup.select('.cookies-error')))
     self.assertEqual(0, len(soup.select('.referer-error')))
     self.assertEqual(1, len(soup.select('.unknown-error')))
Example #16
0
    def test_no_a_tags(self):
        """Make sure that content is returned properly if no a tag in content"""
        html = '''
        <p>
         <h1>Test</h1>
        </p>
        '''

        soup = BeautifulSoup(html)
        fixed_html = strip_a_tags(soup.prettify())

        expected_html = '<p>\n <h1>\n  Test\n </h1>\n</p>\n'

        self.assertEqual(fixed_html, expected_html)
Example #17
0
    def test_additional_field_on_edit(self):
        self._log_as_editor()
        newsletter = mommy.make(
            Newsletter,
            subject="a little intro for this newsletter",
            template="test/newsletter_blue.html",
        )

        url = reverse("coop_cms_newsletter_settings", args=[newsletter.id])

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)
        self.assertEqual(1, len(soup.select("#id_dummy")))
Example #18
0
    def test_view_newsletter_items(self):
        self._log_as_editor()
        article_class = get_article_class()

        site = Site.objects.get_current()
        other_site = mommy.make(Site)

        article_1 = mommy.make(article_class, slug="test1", in_newsletter=True)
        article_2 = mommy.make(article_class, slug="test2", in_newsletter=True, sites=[other_site])
        article_3 = mommy.make(article_class, slug="test3", in_newsletter=True)
        article_4 = mommy.make(article_class, slug="test4", in_newsletter=False)

        article_2.sites.clear()
        article_2.sites.add(other_site)
        article_2.save()

        ct = ContentType.objects.get_for_model(article_class)
        self.assertEqual(3, NewsletterItem.objects.count())
        item_1 = NewsletterItem.objects.get(content_type=ct, object_id=article_1.id)
        item_2 = NewsletterItem.objects.get(content_type=ct, object_id=article_2.id)
        item_3 = NewsletterItem.objects.get(content_type=ct, object_id=article_3.id)

        newsletter = mommy.make(
            Newsletter,
            subject="a little intro for this newsletter",
            template="test/newsletter_red.html",
            items=[item_1]
        )

        url = reverse("coop_cms_newsletter_settings", args=[newsletter.id])

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.content)

        options = soup.select("#id_items option")
        self.assertEqual(2, len(options))
        self.assertEqual(
            sorted([int(id_["value"]) for id_ in options]),
            sorted([item.id for item in [item_1, item_3]])
        )

        options = soup.select("#id_items option[selected=selected]")
        self.assertEqual(1, len(options))
        self.assertEqual(
            sorted([int(id_["value"]) for id_ in options]),
            sorted([item.id for item in [item_1]])
        )
Example #19
0
    def test_save_newsletter_items_no_newsletter(self):
        self._log_as_editor()
        article_class = get_article_class()

        site = Site.objects.get_current()
        other_site = mommy.make(Site)

        article_1 = mommy.make(article_class, slug="test1", in_newsletter=True)
        article_2 = mommy.make(article_class, slug="test2", in_newsletter=True)
        article_3 = mommy.make(article_class, slug="test3", in_newsletter=True)

        content_type = ContentType.objects.get_for_model(article_class)
        self.assertEqual(3, NewsletterItem.objects.count())
        item_1 = NewsletterItem.objects.get(content_type=content_type, object_id=article_1.id)
        item_2 = NewsletterItem.objects.get(content_type=content_type, object_id=article_2.id)
        item_3 = NewsletterItem.objects.get(content_type=content_type, object_id=article_3.id)

        article_2.in_newsletter = False
        article_2.save()

        self.assertEqual(2, NewsletterItem.objects.count())

        newsletter = mommy.make(
            Newsletter,
            subject="a little intro for this newsletter",
            template="test/newsletter_red.html",
            items=[item_1]
        )

        data = {
            "subject": "test",
            "template": "test/newsletter_blue.html",
            'items': [item_2.id, item_3.id]
        }

        url = reverse("coop_cms_newsletter_settings", args=[newsletter.id])

        response = self.client.post(url, data=data)
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)

        self.assertEqual(len(soup.select(".errorlist")), 1)
        self.assertEqual(len(soup.select("#id_items")[0].parent.select(".errorlist")), 1)

        newsletter = Newsletter.objects.get(id=newsletter.id)
        self.assertNotEqual(newsletter.subject, data["subject"])
        self.assertNotEqual(newsletter.template, data["template"])
        self.assertEqual([item_1.id], [x.id for x in newsletter.items.all()])
Example #20
0
 def test_view_formset_one_object(self):
     self._log_as_viewer()
     
     obj = mommy.make(TestClass)
     
     url = reverse('coop_cms_testapp_formset')
     
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     
     soup = BeautifulSoup(response.content)
     self.assertEqual(0, len(soup.select('form')))
     
     self.assertContains(response, obj.field1)
     self.assertContains(response, obj.field2)
     self.assertContains(response, obj.other_field)
Example #21
0
 def test_create_edit_poc(self):
     tpl = Template('{% load coop_edition %}{% coop_piece_of_html "test" %}')
     html = tpl.render(Context({"inline_html_edit": True}))
     self.assertNotEqual(html, "")
     
     soup = BeautifulSoup(html)
     tags = soup.select("#html_editor_html_editor__coop_cms__PieceOfHtml__div_id__test__content")
     self.assertEqual(len(tags), 1)
     self.assertEqual(tags[0].text, "")
     
     tags_hidden = soup.select("#html_editor_html_editor__coop_cms__PieceOfHtml__div_id__test__content_hidden")
     self.assertEqual(len(tags_hidden), 1)
     self.assertEqual(tags_hidden[0].get("value", ""), "")
     
     self.assertEqual(PieceOfHtml.objects.count(), 1)
     poc = PieceOfHtml.objects.all()[0]
     self.assertEqual(poc.div_id, "test")
Example #22
0
 def test_view_new_link_two_sites(self):
     mommy.make(Site)
     url = reverse('coop_cms_new_link')
     self._log_as_editor()
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     self.assertEqual(Link.objects.count(), 0)
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select("input#id_title")))
     self.assertEqual(1, len(soup.select("input#id_url")))
     self.assertEqual(1, len(soup.select("input#id_sites_0")))
     self.assertEqual(1, len(soup.select("input#id_sites_1")))
     elt1 = soup.select("input#id_sites_0")[0]
     elt2 = soup.select("input#id_sites_1")[0]
     for elt in (elt1, elt2):
         # Only the current site is checked
         self.assertEqual('checked' in elt, elt["value"] == settings.SITE_ID)
Example #23
0
    def test_register_refuse_wrong_email(self):
        """It should display error"""
        url = reverse('registration_register')
        data = {
            'email': 'john',
            'password1': 'blabla-123',
            'password2': 'blabla-123',
            'terms_of_service': True,
        }
        self.assertEqual(User.objects.filter(email=data['email']).count(), 0)

        response = self.client.post(url, data=data)
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select('.errorlist')), 1)
        self.assertEqual(User.objects.filter(email=data['email']).count(), 0)
        self.assertEqual(len(mail.outbox), 0)
Example #24
0
    def test_show_carousel_context_var(self):
        """display an album"""

        media_filer = mommy.make(MediaFilter, name='Album Homepage')
        image = mommy.make(Image, _create_files=True)
        image.filters.add(media_filer)
        image.save()

        template_content = '''
        {% load coop_utils %}
        {% coop_image_list album_name as homepage_album %}
        {% include "test/carousel.html" with image_list=homepage_album %}')
        '''
        tpl = Template(template_content)
        html = tpl.render(Context({'album_name': 'Album Homepage'}))

        soup = BeautifulSoup(html)
        self.assertEqual(1, len(soup.select('img')))
Example #25
0
    def test_new_article_title_required(self):
        article_class = get_article_class()

        self._log_as_editor()
        data = {
            'title': "",
            'publication': BaseArticle.DRAFT,
            'template': get_article_templates(None, self.user)[0][0],
            'navigation_parent': None,
            'sites': [settings.SITE_ID]
        }
        
        response = self.client.post(reverse('coop_cms_new_article'), data=data, follow=True)
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)
        
        self.assertEqual(article_class.objects.count(), 0)
        self.assertEqual(len(soup.select("ul.errorlist")), 1)
Example #26
0
 def test_edit_poc_extra_id(self):
     poc = mommy.make(PieceOfHtml, div_id="test", content="HELLO!!!", extra_id="1")
     tpl = Template('{% load coop_edition %}{% coop_piece_of_html "test" extra_id=1 %}')
     html = tpl.render(Context({"inline_html_edit": True}))
     
     soup = BeautifulSoup(html)
     #print html
     tags = soup.select("input[type=hidden]")
     self.assertEqual(len(tags), 1)
     div_selector = tags[0].attrs['id']
     div_selector = div_selector.replace("_hidden", "")
     
     tags = soup.select("#"+div_selector)
     self.assertEqual(len(tags), 1)
     self.assertEqual(tags[0].text, poc.content)
     
     self.assertEqual(PieceOfHtml.objects.count(), 1)
     poc = PieceOfHtml.objects.all()[0]
     self.assertEqual(poc.div_id, "test")
     self.assertEqual(poc.extra_id, "1")
Example #27
0
    def test_get_language_switcher(self):
        """get article with locale slug"""

        original_text = '*!-+' * 10
        translated_text = ':%@/' * 9

        art1 = get_article_class().objects.create(title="Home", content=original_text)

        origin_lang = settings.LANGUAGES[0][0]
        trans_lang = settings.LANGUAGES[1][0]

        setattr(art1, 'title_' + trans_lang, 'Accueil')
        setattr(art1, 'content_' + trans_lang, translated_text)
        art1.save()

        url = reverse('coop_cms_switch_language_popup')

        response = self.client.get(url)
        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select('select#id_language option')), len(settings.LANGUAGES))
Example #28
0
    def test_show_carousel(self):
        """display an album"""

        media_filer = mommy.make(MediaFilter, name='Album Homepage')
        image = mommy.make(Image, _create_files=True)
        image.filters.add(media_filer)
        image.save()

        mommy.make(Image)

        template_content = '''
        {% load coop_utils %}
        {% coop_image_list 'Album Homepage' as homepage_album %}
        {% include "test/carousel.html" with image_list=homepage_album %}')
        '''
        tpl = Template(template_content)
        html = tpl.render(Context({}))

        soup = BeautifulSoup(html)
        tags = soup.select('img')
        self.assertEqual(1, len(tags))
        self.assertEqual(image.get_absolute_url(), tags[0]['src'])
Example #29
0
    def test_view_new_article(self):
        other_site = mommy.make(Site)

        category1 = mommy.make(ArticleCategory)
        category1.sites.clear()
        category1.sites.add(Site.objects.get_current())
        category1.save()

        category2 = mommy.make(ArticleCategory)
        category2.sites.clear()
        category2.sites.add(Site.objects.get_current())
        category2.sites.add(other_site)
        category2.save()

        category3 = mommy.make(ArticleCategory)
        category3.sites.clear()
        category3.sites.add(other_site)
        category3.save()

        category4 = mommy.make(ArticleCategory)
        category4.sites.clear()
        category4.save()

        self._log_as_editor()

        response = self.client.get(reverse('coop_cms_new_article'))
        self.assertEqual(response.status_code, 200)
        soup = BeautifulSoup(response.content)

        categories_select_node = soup.select("select#id_category")[0]

        categories = [node.text for node in categories_select_node.select('option')]

        self.assertEqual(3, len(categories))
        self.assertTrue('---------' in categories)
        self.assertTrue(category1.name in categories)
        self.assertTrue(category2.name in categories)
        self.assertTrue(category3.name not in categories)
        self.assertTrue(category4.name not in categories)
Example #30
0
    def test_strip_a_tags(self):
        """Make sure that the a tags have no space inside"""
        html = '''
        <p>
         <h1>Test</h1>
         <a class="link" href="/">
          Cool
         </a>
         <div>
         <a href="/test">
          Test
         </a>
         </div>
        </p>
        '''

        soup = BeautifulSoup(html)
        fixed_html = strip_a_tags(soup.prettify())

        expected_html = '<p>\n <h1>\n  Test\n </h1>\n <a class="link" href="/">Cool</a>\n <div>\n  ' \
        '<a href="/test">Test</a>\n </div>\n</p>\n'

        self.assertEqual(fixed_html, expected_html)
Example #31
0
    def test_add_opportunity_no_desc(self):
        """create an opportunity without description"""
        url = reverse("crm_add_opportunity")
        data = {
            'name': "DEF",
            "detail": "",
        }
        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)
        self.assertEqual(BeautifulSoup(response.content).select('.field-error'), [])

        self.assertEqual(1, models.Opportunity.objects.count())
        opportunity = models.Opportunity.objects.all()[0]
        for key, value in data.items():
            self.assertEqual(getattr(opportunity, key), value)
Example #32
0
 def test_view_new_link(self):
     url = reverse('coop_cms_new_link')
     self._log_as_editor()
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     self.assertEqual(Link.objects.count(), 0)
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select("input#id_title")))
     self.assertEqual(1, len(soup.select("input#id_url")))
     self.assertEqual(1, len(soup.select("input#id_sites_0")))
     self.assertNotEqual(
         None,
         soup.select("input#id_sites_0")[0].get("checked", None))
     self.assertEqual(0, len(soup.select("input#id_sites_1")))
Example #33
0
    def test_add_relationship_no_type(self):
        contact1 = mommy.make(models.Contact, firstname="John", lastname="Lennon")
        contact2 = mommy.make(models.Contact, firstname="Paul", lastname="McCartney")

        relation_type = mommy.make(models.RelationshipType, name="Partners")
        mommy.make(models.RelationshipType, name="Friends")
        mommy.make(models.RelationshipType, name="Enemies")

        url = reverse("crm_add_relationship", args=[contact1.id])
        response = self.client.post(url, data={'contact2': contact2.id, 'relationship_type': ''})
        self.assertEqual(200, response.status_code)

        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 1)

        self.assertEqual(0, models.Relationship.objects.filter(contact1=contact1, contact2=contact2).count())
Example #34
0
    def test_edit_opportunity(self):
        """edit an opportunity"""
        opportunity = mommy.make(models.Opportunity)
        url = reverse("crm_edit_opportunity", args=[opportunity.id])
        data = {
            'name': "ABC",
            "detail": "ooo",
        }
        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)
        self.assertEqual(BeautifulSoup(response.content).select('.field-error'), [])

        self.assertEqual(1, models.Opportunity.objects.count())
        opportunity = models.Opportunity.objects.all()[0]
        for key, value in data.items():
            self.assertEqual(getattr(opportunity, key), value)
Example #35
0
    def test_change_contact_entity_invalid_value(self):
        entity = mommy.make(models.Entity, is_single_contact=False)
        contact = mommy.make(models.Contact, entity=entity)

        url = reverse('crm_change_contact_entity', args=[contact.id])
        data= {
            'option': self.OPTION_ADD_TO_EXISTING_ENTITY,
            'entity': 'AAA',
        }
        response = self.client.post(url, data=data, follow=True)
        self.assertEqual(response.status_code, 200)

        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 1)

        contact = models.Contact.objects.get(id=contact.id)
        self.assertEqual(contact.entity, entity)
Example #36
0
    def test_view_name_new_search(self):
        """test view save a new search: name is empty"""

        url = reverse("search_save", args=[0])

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("#id_name")), 1)
        self.assertEqual(len(soup.select("#id_search_id")), 1)
        self.assertEqual(soup.select("#id_name")[0].get("value", ""), "")

        self.assertEqual(len(soup.select("#id_search_id")), 1)
        self.assertEqual(soup.select("#id_search_id")[0]["value"], "0")
Example #37
0
    def test_change_unknown_command(self):
        entity = mommy.make(models.Entity, is_single_contact=False)
        contact = mommy.make(models.Contact, entity=entity)
        entity2 = mommy.make(models.Entity, is_single_contact=True)

        url = reverse('crm_change_contact_entity', args=[contact.id])
        data= {
            'option': 555,
        }
        response = self.client.post(url, data=data, follow=True)
        self.assertEqual(response.status_code, 200)

        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 1)

        contact = models.Contact.objects.get(id=contact.id)
        self.assertEqual(contact.entity, entity)
Example #38
0
    def test_edit_entity_keep_notes(self):
        """test misisng fields nor changed"""
        entity = mommy.make(models.Entity, is_single_contact=False, notes="Toto")
        url = reverse('crm_edit_entity', args=[entity.id])
        data = {
            'name': 'Dupond SA',
        }
        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)
        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 0)
        next_url = reverse('crm_view_entity', args=[entity.id])
        self.assertContains(response, "<script>")
        self.assertContains(response, next_url)

        entity = models.Entity.objects.get(id=entity.id)
        self.assertEqual(entity.name, data['name'])
        self.assertEqual(entity.notes, 'Toto')
Example #39
0
    def test_create_contact(self):
        """create a contact: check user is set as last_modified_by"""
        url = reverse('crm_add_single_contact')
        data = {
            'lastname': "Doe",
            'firstname': 'John',
        }
        response = self.client.post(url, data=data, follow=True)
        self.assertEqual(response.status_code, 200)
        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 0)

        self.assertEqual(models.Contact.objects.count(), 1)
        john_doe = models.Contact.objects.all()[0]
        self.assertEqual(john_doe.lastname, "Doe")
        self.assertEqual(john_doe.firstname, "John")
        self.assertEqual(john_doe.entity.is_single_contact, True)
        self.assertEqual(john_doe.last_modified_by, self.user)
Example #40
0
    def test_edit_entity(self):
        """edit entity"""
        entity = mommy.make(models.Entity, is_single_contact=False)
        url = reverse('crm_edit_entity', args=[entity.id])
        data = {
            'name': 'Dupond SA',
            'city': models.City.objects.get(name="Paris").id,
        }
        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)
        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 0)
        next_url = reverse('crm_view_entity', args=[entity.id])
        self.assertContains(response, "<script>")
        self.assertContains(response, next_url)

        entity = models.Entity.objects.get(id=entity.id)
        self.assertEqual(entity.name, data['name'])
        self.assertEqual(entity.city.id, data['city'])
Example #41
0
    def test_update_entity(self):
        """update an entity: check user is set as last_modified_by"""
        user2 = User.objects.create(username="******", is_staff=True)
        user2.set_password("abc")
        user2.save()
        self.client.login(username="******", password="******")

        entity = mommy.make(models.Entity, is_single_contact=False)
        url = reverse('crm_edit_entity', args=[entity.id])
        data = {
            'name': 'Dupond SA',
        }
        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)
        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(len(errors), 0)

        entity = models.Entity.objects.get(id=entity.id)
        self.assertEqual(entity.name, data['name'])
        self.assertEqual(entity.last_modified_by, user2)
Example #42
0
    def test_view_name_existing_search(self):
        """test view save an existing search: name is set"""
        search = mommy.make(Search, name="ABC")

        url = reverse("search_save", args=[search.id])

        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("#id_name")), 1)
        self.assertEqual(soup.select("#id_name")[0]["value"], "ABC")

        self.assertEqual(len(soup.select("#id_search_id")), 1)
        self.assertEqual(soup.select("#id_search_id")[0]["value"], '{0}'.format(search.id))
Example #43
0
    def test_add_relationship(self):
        entity1 = mommy.make(models.Entity, name="The Beatles")
        entity2 = mommy.make(models.Entity, name="Apple Records")
        contact1 = mommy.make(models.Contact, entity=entity1, firstname="John", lastname="Lennon")
        contact2 = mommy.make(models.Contact, entity=entity2, firstname="Paul", lastname="McCartney")

        relation_type = mommy.make(models.RelationshipType, name="Partners")
        mommy.make(models.RelationshipType, name="Friends")
        mommy.make(models.RelationshipType, name="Enemies")

        url = reverse("crm_add_relationship", args=[contact1.id])
        response = self.client.post(url, data={'contact2': contact2.id, 'relationship_type': relation_type.id})
        self.assertEqual(200, response.status_code)

        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(list(errors), [])

        #refresh
        contact1 = models.Contact.objects.get(id=contact1.id)
        contact2 = models.Contact.objects.get(id=contact2.id)

        r = models.Relationship.objects.get(contact1=contact1, contact2=contact2)
        self.assertEqual(r.relationship_type, relation_type)
Example #44
0
 def test_view_new_link_two_sites(self):
     mommy.make(Site)
     url = reverse('coop_cms_new_link')
     self._log_as_editor()
     response = self.client.get(url)
     self.assertEqual(200, response.status_code)
     self.assertEqual(Link.objects.count(), 0)
     soup = BeautifulSoup(response.content)
     self.assertEqual(1, len(soup.select("input#id_title")))
     self.assertEqual(1, len(soup.select("input#id_url")))
     self.assertEqual(1, len(soup.select("input#id_sites_0")))
     self.assertEqual(1, len(soup.select("input#id_sites_1")))
     elt1 = soup.select("input#id_sites_0")[0]
     elt2 = soup.select("input#id_sites_1")[0]
     for elt in (elt1, elt2):
         # Only the current site is checked
         self.assertEqual('checked' in elt,
                          elt["value"] == settings.SITE_ID)
Example #45
0
    def test_view_update_emailing_lang(self):
        """check the display of the page"""
        emailing = mommy.make(Emailing)

        url = reverse("emailing_update_emailing", kwargs={'pk': emailing.id})

        response = self.client.get(url)

        self.assertEqual(200, response.status_code)

        soup = BeautifulSoup(response.content)

        self.assertEqual(3, len(soup.select("select#id_lang option")))
        self.assertEqual('', soup.select("select#id_lang option")[0]["value"])
        self.assertEqual('en',
                         soup.select("select#id_lang option")[1]["value"])
        self.assertEqual('fr',
                         soup.select("select#id_lang option")[2]["value"])
Example #46
0
    def test_has_address_contact(self, has_address=True):
        """has address on contacts"""

        city1 = mommy.make(models.City, name="ZooPark")
        mommy.make(models.City, name="VodooPark")

        entity1, contact1 = self._make_contact("ABCD", None, "")
        contact1.city = city1
        contact1.zip_code = "44444"
        contact1.address = "123 something street"
        contact1.save()

        contact5 = mommy.make(models.Contact, entity=entity1, lastname="QRST")

        entity2, contact2 = self._make_contact("EFGH", None, "")
        contact2.city = city1
        contact2.zip_code = "4444"
        contact2.save()

        entity3, contact3 = self._make_contact("IJKL", None, "44444")
        contact3.city = city1
        contact3.zip_code = "44444"
        contact3.save()

        entity4, contact4 = self._make_contact("MNOP", None, "")
        contact4.city = None
        contact4.zip_code = ""
        contact4.save()

        response = self.client.post(
            reverse('search'),
            data={"gr0-_-has_address-_-0": 1 if has_address else 0})
        self.assertEqual(200, response.status_code)

        self.assertEqual(
            0, len(BeautifulSoup(response.content).select('.field-error')))
Example #47
0
    def test_add_reversed_relationship(self):
        contact1 = mommy.make(models.Contact, firstname="Alex", lastname="Ferguson")
        contact2 = mommy.make(models.Contact, firstname="Eric", lastname="Cantona")

        relation_type = mommy.make(models.RelationshipType, name="Coach of", reverse="Player of")

        url = reverse("crm_add_relationship", args=[contact2.id])
        response = self.client.get(url)
        self.assertEqual(200, response.status_code)
        self.assertContains(response, relation_type.name)
        self.assertContains(response, relation_type.reverse)

        response = self.client.post(url, data={'contact2': contact1.id, 'relationship_type': -relation_type.id})
        self.assertEqual(200, response.status_code)

        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(list(errors), [])

        #refresh
        contact1 = models.Contact.objects.get(id=contact1.id)
        contact2 = models.Contact.objects.get(id=contact2.id)

        r = models.Relationship.objects.get(contact1=contact1, contact2=contact2)
        self.assertEqual(r.relationship_type, relation_type)
Example #48
0
    def test_create_action(self):
        """create an action: check user is set as last_modified_by"""
        url = reverse('crm_create_action', args=[0, 0])

        data = {
            'subject': "tested",
            'type': '',
            'date': "2014-01-31",
            'time': "11:34",
            'status': '',
            'in_charge': '',
            'detail': "ABCDEF",
            'amount': 200,
            'number': 5
        }
        response = self.client.post(url, data=data, follow=True)
        self.assertEqual(response.status_code, 200)
        errors = BeautifulSoup(response.content).select('.field-error')
        self.assertEqual(list(errors), [])

        self.assertEqual(models.Action.objects.count(), 1)
        action = models.Action.objects.all()[0]
        self.assertEqual(action.subject, data["subject"])
        self.assertEqual(action.last_modified_by, self.user)
Example #49
0
    def _test_search_multi_zones(self,
                                 cities=None,
                                 data=None,
                                 entity_search=False):
        """search by zone"""
        city1 = cities[0]
        city2 = cities[1]
        city3 = mommy.make(models.City, name="BlablaPark")

        entity1 = mommy.make(models.Entity,
                             city=city1 if entity_search else None)
        contact1a = entity1.default_contact
        contact1a.lastname = "ABCDEFGH"
        contact1a.main_contact = True
        contact1a.has_left = False
        contact1a.city = city1
        contact1a.save()

        contact1b = mommy.make(models.Contact,
                               entity=entity1,
                               lastname="IJKLMNOP",
                               main_contact=True,
                               has_left=False)

        entity2 = mommy.make(models.Entity,
                             city=city2 if entity_search else None)
        contact2 = entity2.default_contact
        contact2.lastname = "DEFGHIJKL"
        contact2.main_contact = True
        contact2.has_left = False
        contact2.city = None if entity_search else city2
        contact2.save()

        entity3 = mommy.make(models.Entity)
        contact3 = entity3.default_contact
        contact3.lastname = "MNOPQRST"
        contact3.main_contact = True
        contact3.has_left = False
        contact3.city = city3
        contact3.save()

        url = reverse('search')

        response = self.client.post(url, data=data)
        self.assertEqual(200, response.status_code)

        soup = BeautifulSoup(response.content)
        self.assertEqual([], soup.select('.field-error'))

        self.assertContains(response, entity1.name)
        self.assertContains(response, contact1a.lastname)
        if entity_search:
            self.assertContains(response, contact1b.lastname)
        else:
            self.assertNotContains(response, contact1b.lastname)

        self.assertContains(response, entity2.name)
        self.assertContains(response, contact2.lastname)

        self.assertNotContains(response, entity3.name)
        self.assertNotContains(response, contact3.lastname)
Example #50
0
 def test_view_search(self):
     """test view search and field choice is populated"""
     response = self.client.get(reverse('search'))
     self.assertEqual(200, response.status_code)
     soup = BeautifulSoup(response.content)
     self.assertTrue(len(soup.select("#id_field_choice option")) > 0)
Example #51
0
    def test_view_register(self):
        """It should display form"""
        user_count = User.objects.count()
        url = reverse('registration_register')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(User.objects.count(), user_count)
        self.assertEqual(len(mail.outbox), 0)

        soup = BeautifulSoup(response.content)
        self.assertEqual(len(soup.select("input#id_email")), 1)
        self.assertEqual(len(soup.select("input#id_password1")), 1)
        self.assertEqual(len(soup.select("input#id_password2")), 1)
        self.assertEqual(len(soup.select("input#id_username")), 1)
        self.assertEqual(len(soup.select("input#id_terms_of_service")), 1)

        self.assertEqual(soup.select("input#id_email")[0]['type'], 'email')
        self.assertEqual(
            soup.select("input#id_password1")[0]['type'], 'password')
        self.assertEqual(
            soup.select("input#id_password2")[0]['type'], 'password')
        self.assertEqual(soup.select("input#id_username")[0]['type'], 'hidden')
        self.assertEqual(
            soup.select("input#id_terms_of_service")[0]['type'], 'checkbox')