def test_save(self):
        # Return an object with id for a post(save) request.
        self.http.respond_to('POST', '/stores.json', self.json_headers,
                             util.to_json(self.general_store))
        # Return an object for a put request.
        self.http.respond_to('PUT', '/stores/1.json', self.json_headers,
                             util.to_json(self.store_update, root='store'))

        self.store.format = formats.JSONFormat
        store = self.store(self.store_new)
        store.save()
        self.assertEqual(self.general_store, store.attributes)
        store.manager_id = 3
        store.save()
    def test_find_by_id(self):
        # Return a single person for a find(id=<id>) call
        self.http.respond_to('GET', '/people/1.json', {},
                             util.to_json(self.arnold, root='person'))

        arnold = self.person.find(1)
        self.assertEqual(self.arnold, arnold.attributes)
 def test_find_with_prefix_and_query_options(self):
     self.http.respond_to('GET', '/stores/1/people.json?name=Ralph', {},
                          util.to_json([], root='people'))
     # Query & prefix options
     self.person._site = 'http://localhost/stores/$store_id/'
     nobody = self.person.find(store_id=1, name='Ralph')
     self.assertEqual([], nobody)
 def test_save_should_clear_errors(self):
     self.http.respond_to('POST', '/stores.json', self.json_headers,
                          util.to_json(self.general_store))
     store = self.store(self.store_new)
     store.errors.add_to_base('bad things!')
     store.save()
     self.assertEqual(0, store.errors.size)
 def test_get(self):
     person = util.to_json({'id': 1, 'name': 'Matz'}, root='person')
     self.http.respond_to(
         'GET', 'http://localhost/people/1.json', {}, person)
     self.connection.format = formats.JSONFormat
     response = self.connection.get('/people/1.json')
     self.assertEqual(response['name'], 'Matz')
 def test_find_should_handle_long_query_args(self):
     self.http.respond_to(
         'GET', '/people.json?employee_id=12345', {},
         util.to_json([self.arnold], root='people'))
     for int_type in six.integer_types:
         arnold = self.person.find_first(employee_id=int_type(12345))
         self.assertEqual(self.arnold, arnold.attributes)
 def test_prefix_format(self):
     self.http.respond_to(
         'GET', '/people.json?name=Ralph', {},
         util.to_json([], root='people'))
     self.person.prefix_source = '/${store_id}/'
     nobody = self.person.find(name='Ralph')
     self.assertEqual([], nobody)
 def test_find_should_handle_dictionary_query_args_with_array_value(self):
     query = urllib.parse.urlencode({'vars[key][]': ['val1', 'val2']}, True)
     self.http.respond_to(
         'GET', '/people.json?%s' % query, {},
         util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(vars={'key': ['val1', 'val2']})
     self.assertEqual(self.arnold, arnold.attributes)
 def test_find_should_handle_array_query_args(self):
     query = urllib.parse.urlencode({'vars[]': ['a', 'b', 'c']}, True)
     self.http.respond_to(
         'GET', '/people.json?%s' % query, {},
         util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(vars=['a', 'b', 'c'])
     self.assertEqual(self.arnold, arnold.attributes)
 def test_reload(self):
     self.http.respond_to(
         'GET', '/people/1.json', {}, util.to_json(self.arnold, root='person'))
     arnold = self.person.find(1)
     arnold.name = 'someone else'
     arnold.reload()
     self.assertEqual(self.arnold, arnold.attributes)
    def test_find_by_id(self):
        # Return a single person for a find(id=<id>) call
        self.http.respond_to(
            'GET', '/people/1.json', {}, util.to_json(self.arnold, root='person'))

        arnold = self.person.find(1)
        self.assertEqual(self.arnold, arnold.attributes)
 def test_find_should_handle_long_query_args(self):
     self.http.respond_to(
         'GET', '/people.json?employee_id=12345', {},
         util.to_json([self.arnold], root='people'))
     for int_type in six.integer_types:
         arnold = self.person.find_first(employee_id=int_type(12345))
         self.assertEqual(self.arnold, arnold.attributes)
    def test_save(self):
        # Return an object with id for a post(save) request.
        self.http.respond_to(
            'POST', '/stores.json', self.json_headers,
            util.to_json(self.general_store))
        # Return an object for a put request.
        self.http.respond_to(
            'PUT', '/stores/1.json', self.json_headers,
            util.to_json(self.store_update, root='store'))

        self.store.format = formats.JSONFormat
        store = self.store(self.store_new)
        store.save()
        self.assertEqual(self.general_store, store.attributes)
        store.manager_id = 3
        store.save()
 def test_get(self):
     person = util.to_json({'id': 1, 'name': 'Matz'}, root='person')
     self.http.respond_to('GET', 'http://localhost/people/1.json', {},
                          person)
     self.connection.format = formats.JSONFormat
     response = self.connection.get('/people/1.json')
     self.assertEqual(response['name'], 'Matz')
 def test_reload(self):
     self.http.respond_to('GET', '/people/1.json', {},
                          util.to_json(self.arnold, root='person'))
     arnold = self.person.find(1)
     arnold.name = 'someone else'
     arnold.reload()
     self.assertEqual(self.arnold, arnold.attributes)
 def test_set_prefix_source(self):
     self.http.respond_to(
         'GET', '/stores/1/people.json?name=Ralph', {},
         util.to_json([], root='people'))
     self.person.prefix_source = '/stores/${store_id}/'
     nobody = self.person.find(store_id=1, name='Ralph')
     self.assertEqual([], nobody)
 def test_find_should_handle_dictionary_query_args_with_array_value(self):
     query = urllib.urlencode({'vars[key][]': ['val1', 'val2']}, True)
     self.http.respond_to(
         'GET', '/people.json?%s' % query, {},
         util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(vars={'key': ['val1', 'val2']})
     self.assertEqual(self.arnold, arnold.attributes)
 def test_find_should_handle_array_query_args(self):
     query = urllib.urlencode({'vars[]': ['a', 'b', 'c']}, True)
     self.http.respond_to(
         'GET', '/people.json?%s' % query, {},
         util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(vars=['a', 'b', 'c'])
     self.assertEqual(self.arnold, arnold.attributes)
 def test_find_with_query_options(self):
     # Return a single-item people list for a find() call with kwargs
     self.http.respond_to('GET', '/people.json?name=Arnold', {},
                          util.to_json([self.arnold], root='people'))
     # Query options only
     arnold = self.person.find(name='Arnold')[0]
     self.assertEqual(self.arnold, arnold.attributes)
 def test_find_with_prefix_and_query_options(self):
     self.http.respond_to(
         'GET', '/stores/1/people.json?name=Ralph', {},
         util.to_json([], root='people'))
     # Query & prefix options
     self.person._site = 'http://localhost/stores/$store_id/'
     nobody = self.person.find(store_id=1, name='Ralph')
     self.assertEqual([], nobody)
 def test_find_with_query_options(self):
     # Return a single-item people list for a find() call with kwargs
     self.http.respond_to(
         'GET', '/people.json?name=Arnold', {},
         util.to_json([self.arnold], root='people'))
     # Query options only
     arnold = self.person.find(name='Arnold')[0]
     self.assertEqual(self.arnold, arnold.attributes)
 def test_save_should_clear_errors(self):
   self.http.respond_to(
       'POST', '/stores.json', self.json_headers,
       util.to_json(self.general_store))
   store = self.store(self.store_new)
   store.errors.add_to_base('bad things!')
   store.save()
   self.assertEqual(0, store.errors.size)
 def test_find_with_prefix_options(self):
     # Paths for prefix_options related requests
     self.http.respond_to('GET', '/stores/1/people.json', {},
                          util.to_json([self.sam], root='people'))
     # Prefix options only
     self.person._site = 'http://localhost/stores/$store_id/'
     sam = self.person.find(store_id=1)[0]
     self.assertEqual(self.sam, sam.attributes)
    def test_find(self):
        # Return a list of people for a find method call
        self.http.respond_to(
            'GET', '/people.json', {},
            util.to_json([self.arnold, self.eb], root='people'))

        people = self.person.find()
        self.assertEqual([self.arnold, self.eb],
                         [p.attributes for p in people])
    def test_find(self):
        # Return a list of people for a find method call
        self.http.respond_to(
            'GET', '/people.json', {},
            util.to_json([self.arnold, self.eb], root='people'))

        people = self.person.find()
        self.assertEqual([self.arnold, self.eb],
                         [p.attributes for p in people])
 def test_find_with_prefix_options(self):
     # Paths for prefix_options related requests
     self.http.respond_to(
         'GET', '/stores/1/people.json', {},
         util.to_json([self.sam], root='people'))
     # Prefix options only
     self.person._site = 'http://localhost/stores/$store_id/'
     sam = self.person.find(store_id=1)[0]
     self.assertEqual(self.sam, sam.attributes)
    def test_find_one(self):
        # Return an object for a specific one-off url
        self.http.respond_to('GET', '/what_kind_of_soup.json', {},
                             util.to_json(self.soup, root='soup'))

        class Soup(activeresource.ActiveResource):
            _site = 'http://localhost'

        soup = Soup.find_one(from_='/what_kind_of_soup.json')
        self.assertEqual(self.soup, soup.attributes)
    def test_find_one(self):
        # Return an object for a specific one-off url
        self.http.respond_to(
            'GET', '/what_kind_of_soup.json', {},
            util.to_json(self.soup, root='soup'))

        class Soup(activeresource.ActiveResource):
            _site = 'http://localhost'
        soup = Soup.find_one(from_='/what_kind_of_soup.json')
        self.assertEqual(self.soup, soup.attributes)
示例#29
0
    def setUp(self):
        '''Create test objects.'''
        matz = {'id': 1, 'name': 'Matz'}
        david = {'id': 2, 'name': 'David'}
        self.matz  = util.to_json(matz, root='person')
        self.david = util.to_json(david, root='person') 
        self.people = util.to_json([matz, david], root='people')
        self.people_single = util.to_json(
            [matz], root='people-single-elements')
        self.people_empty = util.to_json([], root='people-empty-elements')

        http_fake.initialize()
        self.http = http_fake.TestHandler
        self.http.site = 'http://localhost'
        self.http.set_response(Error('Bad request'))

        self.zero_length_content_headers = {'Content-Length': '0',
                                            'Content-Type': 'application/json'}

        self.header = {'Key': 'value'}
        self.connection = connection.Connection(self.http.site)
示例#30
0
    def setUp(self):
        '''Create test objects.'''
        matz = {'id': 1, 'name': 'Matz'}
        david = {'id': 2, 'name': 'David'}
        self.matz = util.to_json(matz, root='person')
        self.david = util.to_json(david, root='person')
        self.people = util.to_json([matz, david], root='people')
        self.people_single = util.to_json([matz],
                                          root='people-single-elements')
        self.people_empty = util.to_json([], root='people-empty-elements')

        http_fake.initialize()
        self.http = http_fake.TestHandler
        self.http.site = 'http://localhost'
        self.http.set_response(Error('Bad request'))

        self.zero_length_content_headers = {
            'Content-Length': '0',
            'Content-Type': 'application/json'
        }

        self.header = {'Key': 'value'}
        self.connection = connection.Connection(self.http.site)
    def setUp(self):
        """Create test objects."""
        self.arnold = {'id': 1, 'name': 'Arnold Ziffel'}
        self.eb = {'id': 2, 'name': 'Eb Dawson'}
        self.sam = {'id': 3, 'name': 'Sam Drucker'}
        self.soup = {'id': 1, 'name': 'Hot Water Soup'}
        self.store_new = {'name': 'General Store'}
        self.general_store = {'id': 1, 'name': 'General Store'}
        self.store_update = {'manager_id': 3, 'id': 1, 'name': 'General Store'}
        self.xml_headers = {'Content-type': 'application/xml'}
        self.json_headers = {'Content-type': 'application/json'}

        self.matz = util.to_json({
            'id': 1,
            'name': 'Matz'
        }, root='person').encode('utf-8')
        self.matz_deep = util.to_json(
            {
                'id': 1,
                'name': 'Matz',
                'other': 'other'
            }, root='person').encode('utf-8')
        self.matz_array = util.to_json([{
            'id': 1,
            'name': 'Matz'
        }],
                                       root='people').encode('utf-8')
        self.ryan = util.to_json({'name': 'Ryan'}, root='person')
        self.addy = util.to_json({
            'id': 1,
            'street': '12345 Street'
        },
                                 root='address')
        self.addy_deep = util.to_json(
            {
                'id': 1,
                'street': '12345 Street',
                'zip': "27519"
            },
            root='address')

        http_fake.initialize()  # Fake all http requests
        self.http = http_fake.TestHandler
        self.http.set_response(Error('Bad request'))
        self.http.site = 'http://localhost'
        self.zero_length_content_headers = {
            'Content-length': '0',
            'Content-type': 'application/json'
        }

        class Person(activeresource.ActiveResource):
            _site = 'http://localhost'

        self.person = Person
        self.store = Store
        self.address = Address
    def setUp(self):
        """Create test objects."""
        self.arnold = {'id': 1, 'name': 'Arnold Ziffel'}
        self.eb = {'id': 2, 'name': 'Eb Dawson'}
        self.sam = {'id': 3, 'name': 'Sam Drucker'}
        self.soup = {'id': 1, 'name': 'Hot Water Soup'}
        self.store_new = {'name': 'General Store'}
        self.general_store = {'id': 1, 'name': 'General Store'}
        self.store_update = {'manager_id': 3, 'id': 1, 'name':'General Store'}
        self.xml_headers = {'Content-type': 'application/xml'}
        self.json_headers = {'Content-type': 'application/json'}

        self.matz  = util.to_json(
                {'id': 1, 'name': 'Matz'}, root='person')
        self.matz_deep  = util.to_json(
                {'id': 1, 'name': 'Matz', 'other': 'other'},
                root='person')
        self.matz_array = util.to_json(
                [{'id': 1, 'name': 'Matz'}], root='people')
        self.ryan = util.to_json(
                {'name': 'Ryan'}, root='person')
        self.addy = util.to_json(
                {'id': 1, 'street': '12345 Street'},
                root='address')
        self.addy_deep  = util.to_json(
                {'id': 1, 'street': '12345 Street', 'zip': "27519" },
                root='address')

        http_fake.initialize()  # Fake all http requests
        self.http = http_fake.TestHandler
        self.http.set_response(Error('Bad request'))
        self.http.site = 'http://localhost'
        self.zero_length_content_headers = {'Content-length': '0',
                                            'Content-type': 'application/json'}

        class Person(activeresource.ActiveResource):
            _site = 'http://localhost'

        self.person = Person
        self.store = Store
        self.address = Address
示例#33
0
 def encode(data):
     """Convert a dictionary to a resource string."""
     log = logging.getLogger('pyactiveresource.format')
     log.debug('encoding resource: %r', data)
     return util.to_json(data).encode('utf-8')
示例#34
0
 def test_to_json_should_allow_utf8_encoded_strings(self):
     json = util.to_json({'data': u'\u00e9'.encode('utf-8')})
     self.assert_('\u00e9' in json)
示例#35
0
 def test_to_json_should_allow_unicode(self):
     json = util.to_json({'data': u'\u00e9'})
     self.assert_('\u00e9' in json or '\\u00e9' in json)
示例#36
0
 def to_json(self, root=True):
     """Convert the object to a json string."""
     if root == True:
         root = self._singular
     return util.to_json(self.to_dict(), root=root).encode('utf-8')
 def test_find_should_handle_unicode_query_args(self):
     self.http.respond_to('GET', '/people.json?name=%C3%83%C3%A9', {},
                          util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(name=u'\xc3\xe9')
     self.assertEqual(self.arnold, arnold.attributes)
 def test_find_should_handle_unicode_query_args(self):
     self.http.respond_to(
         'GET', '/people.json?name=%C3%83%C3%A9', {},
         util.to_json([self.arnold], root='people'))
     arnold = self.person.find_first(name=u'\xc3\xe9')
     self.assertEqual(self.arnold, arnold.attributes)
 def to_json(self, root=True):
     """Convert the object to a json string."""
     if root == True:
         root = self._singular
     return util.to_json(self.to_dict(), root=root)
示例#40
0
 def encode(data):
     """Convert a dictionary to a resource string."""
     log = logging.getLogger('pyactiveresource.format')
     log.debug('encoding resource: %r', data)
     return util.to_json(data)