431
431
response = distro_charm(request)
432
432
expected_keys = set((
433
'charm', 'is_featured', 'format_change', 'format_proof', 'name',
434
'others', 'project', 'qadata', 'readme', 'readme_format',
433
'charm', 'format_change', 'format_proof', 'name', 'others',
434
'project', 'qadata', 'readme', 'readme_format', 'icon_path'))
436
435
self.assertEqual(expected_keys, set(response))
438
437
def test_distro_charm_json(self):
619
617
'charm': charm['name'],
620
618
'series': charm['series'],
622
response = featured_edit(request)
624
self.assertIn('form', response)
625
self.assertIn('<label', response['form'])
627
def test_checking_checkbox_sets_featured_status(self):
628
"""Verify checking the checkbox causes the charm to be featured."""
620
resp = featured_edit(request)
622
self.assertIn('form', resp)
623
self.assertIn('label', resp['form'])
625
def test_form_saves_data(self):
626
"""Verify good data causes the view to store it."""
629
627
charm = factory.get_charm_json(name='name1', promulgated=True)
630
628
self.use_index_client()
631
629
self.enable_routes()
643
641
'charm': charm['name'],
644
642
'series': charm['series'],
646
# Before processing the request, the charm is not featured.
647
featured_source = FeaturedSource.from_db(self.db)
648
self.assertFalse(featured_source.is_featured(charm, 'charm'))
649
response = featured_edit(request)
650
self.assertEqual(302, response.status_code)
651
self.assertRegexpMatches(response.headers['Location'],
652
'http://[^/]*/charms/precise/name1')
653
for found in charm_source._get_all(charm['_id']):
654
self.assertTrue(featured_source.is_featured(found, 'charm'))
656
def test_unchecking_checkbox_clears_featured_status(self):
657
"""Verify unchecking the checkbox causes the charm to be unfeatured."""
658
charm = factory.get_charm_json(name='name1', promulgated=True)
659
self.use_index_client()
661
charm_source = CharmSource.from_request(self)
662
charm_source.save(charm)
663
# Add the submit button to trigger the right path through the view.
665
'_charset_': 'UTF-8',
666
'__formid__': 'deform',
669
request = self.getRequest(post=post_data)
670
request.matchdict = {
671
'charm': charm['name'],
672
'series': charm['series'],
674
# Before processing the request, the charm is featured.
675
featured_source = FeaturedSource.from_db(self.db)
676
featured_source.set_featured(charm, 'charm')
677
self.assertTrue(featured_source.is_featured(charm, 'charm'))
645
self.assertFalse(charm['is_featured'])
678
646
response = featured_edit(request)
679
647
self.assertEqual(302, response.status_code)
680
648
self.assertRegexpMatches(response.headers['Location'],
681
649
'http://[^/]*/charms/precise/name1')
682
650
for found in charm_source._get_all(charm['_id']):
683
self.assertFalse(featured_source.is_featured(found, 'charm'))
651
self.assertTrue(found['is_featured'])
686
654
class TestFeaturedFormFunc(WebTestBase):