~jcsackett/charmworld/bac-tag-constraints

« back to all changes in this revision

Viewing changes to charmworld/views/tests/test_api.py

  • Committer: Tarmac
  • Author(s): Brad Crittenden
  • Date: 2013-07-17 15:05:30 UTC
  • mfrom: (310.1.2 use-charm-objects)
  • Revision ID: tarmac-20130717150530-sirtkpu7vpklu7du
[r=sinzui][bug=][author=bac] In the api internals there was a mixture of raw charm dicts and Charm model objects. This branch ensures all charm usage are model objects.

Show diffs side-by-side

added added

removed removed

Lines of Context:
164
164
        self.index_client.index_charm(four)
165
165
        result = self.get_charms(**{filter_str: 'common'})
166
166
        self.assertEqual(2, len(result))
167
 
        res = lambda x: self.api_class._charm_result(x)
 
167
        res = lambda x: self.api_class._charm_result(Charm(x))
168
168
        self.assertItemsEqual([res(one), res(two)], result)
169
169
        result = self.get_charms(**{filter_str: 'different'})
170
170
        self.assertItemsEqual([res(three)], result)
212
212
        to be returned.
213
213
        """
214
214
        charmers = self.api_class._charm_result(
215
 
            self.makeCharm(promulgated=True)[1])
216
 
        steve = self.api_class._charm_result(self.makeCharm(owner='steve')[1])
 
215
            Charm(self.makeCharm(promulgated=True)[1]))
 
216
        steve = self.api_class._charm_result(
 
217
            Charm(self.makeCharm(owner='steve')[1]))
217
218
        result = self.get_charms(type_='community')
218
219
        self.assertEqual([steve], [charm for charm in result])
219
220
        result = self.get_charms(type_='approved')
232
233
    def test_charms_type_filter_considers_promulgation(self):
233
234
        """Promulgation controls type."""
234
235
        reviewed = self.api_class._charm_result(
235
 
            self.makeCharm(promulgated=True)[1])
 
236
            Charm(self.makeCharm(promulgated=True)[1]))
236
237
        unreviewed = self.api_class._charm_result(
237
 
            self.makeCharm(promulgated=False)[1])
 
238
            Charm(self.makeCharm(promulgated=False)[1]))
238
239
        result = self.get_charms(type_='community')
239
240
        self.assertEqual([unreviewed], [charm for charm in result])
240
241
        result = self.get_charms(type_='approved')
257
258
        self.assertEqual(200, response.status_code)
258
259
        charms = response.json_body['result']
259
260
        self.assertEqual(1, len(charms))
260
 
        self.assertEqual(self.api_class._charm_result(abc_charm), charms[0])
 
261
        self.assertEqual(
 
262
            self.api_class._charm_result(Charm(abc_charm)), charms[0])
261
263
 
262
264
    def test_charms_text_search_respects_filters(self):
263
265
        official = self.makeCharm(summary='abc def', promulgated=True)[1]
265
267
        self.makeCharm(summary='abc def', owner='steve')
266
268
        self.makeCharm(owner='steve')
267
269
        result = self.get_charms(type_=['approved'], text='def')
268
 
        self.assertEqual([self.api_class._charm_result(official)],
269
 
                         [charm for charm in result])
 
270
        self.assertEqual(
 
271
            [self.api_class._charm_result(Charm(official))],
 
272
            [charm for charm in result])
270
273
 
271
274
    def test_charms_limit(self):
272
275
        """Limit provides a maximum for charm numbers."""
310
313
        self.assertEqual(['pop%d' % num for num in range(14, 4, -1)],
311
314
                         [r['charm']['name']
312
315
                          for r in data['result']['popular']])
313
 
        self.assertEqual(self.api_class._charm_result(last_popular_charm),
314
 
                         data['result']['popular'][0])
 
316
        self.assertEqual(
 
317
            self.api_class._charm_result(Charm(last_popular_charm)),
 
318
            data['result']['popular'][0])
315
319
        self.assertEqual(['new%d' % num for num in range(14, 4, -1)],
316
320
                         [r['charm']['name'] for r in data['result']['new']])
317
 
        self.assertEqual(self.api_class._charm_result(last_new_charm),
318
 
                         data['result']['new'][0])
 
321
        self.assertEqual(
 
322
            self.api_class._charm_result(Charm(last_new_charm)),
 
323
            data['result']['new'][0])
319
324
        self.assertItemsEqual(
320
325
            ['featured%d' % num for num in range(14, -1, -1)],
321
326
            [r['charm']['name'] for r in data['result']['featured']])
322
327
        featured14, = [charm for charm in data['result']['featured'] if
323
328
                       charm['charm']['name'] == 'featured14']
324
329
        self.assertEqual(
325
 
            self.api_class._charm_result(last_featured_charm),
 
330
            self.api_class._charm_result(Charm(last_featured_charm)),
326
331
            featured14)
327
332
 
328
333
    def test_charms_accepts_categories(self):
611
616
 
612
617
    def make_charm(self, *args, **kwargs):
613
618
        """Make a charm formatted for api."""
614
 
        charm = factory.makeCharm(self.db, *args, **kwargs)[1]
615
 
        return (self.api_class._get_api_id(Charm(charm)),
 
619
        charm_data = factory.makeCharm(self.db, *args, **kwargs)[1]
 
620
        charm = Charm(charm_data)
 
621
        return (self.api_class._get_api_id(charm),
616
622
                self.api_class._charm_result(charm))
617
623
 
618
624
    def test_unknown_endpoint(self):
1024
1030
 
1025
1031
    def test_charm_result_includes_charm_and_metadata(self):
1026
1032
        charm = factory.get_charm_json(promulgated=False)
1027
 
        result = self.api_class._charm_result(charm)
 
1033
        result = self.api_class._charm_result(Charm(charm))
1028
1034
        self.assertIn('metadata', result)
1029
1035
        self.assertIn('charm', result)
1030
1036
 
1123
1129
            'interface': 'ssl',
1124
1130
            }
1125
1131
        })
1126
 
        result = self.api_class._charm_result(charm)
 
1132
        result = self.api_class._charm_result(Charm(charm))
1127
1133
        self.assertNotIn('related', result['metadata'])
1128
1134
 
1129
1135
    def get_charm_response(self, charm, suffix):