Ejemplo n.º 1
0
    def test_transact(self):
        '''Verify transact()'''
        conn = Datomic('http://localhost:3000/', 'tdb')
        db = Database('db', conn)

        self.requests.post.return_value = Mock(
            status_code=201,
            content=
            ('{:db-before {:basis-t 63, :db/alias "dev/scratch"}, '
             ':db-after {:basis-t 1000, :db/alias "dev/scratch"}, '
             ':tx-data [{:e 13194139534312, :a 50, :v #inst "2014-12-01T15:27:26.632-00:00", '
             ':tx 13194139534312, :added true} {:e 17592186045417, :a 62, '
             ':v "hello REST world", :tx 13194139534312, :added true}], '
             ':tempids {-9223350046623220292 17592186045417}}'))
        self.assertEqual(
            db.transact(
                '[{:db/id #db/id[:db.part/user] :person/name "Peter"}]'), {
                    ':db-after': {
                        ':db/alias': 'dev/scratch',
                        ':basis-t': 1000
                    },
                    ':tempids': {
                        -9223350046623220292: 17592186045417
                    },
                    ':db-before': {
                        ':db/alias': 'dev/scratch',
                        ':basis-t': 63
                    },
                    ':tx-data':
                    ({
                        ':e': 13194139534312,
                        ':v': datetime(2014, 12, 1, 15, 27, 26, 632000),
                        ':added': True,
                        ':a': 50,
                        ':tx': 13194139534312
                    }, {
                        ':e': 17592186045417,
                        ':v': 'hello REST world',
                        ':added': True,
                        ':a': 62,
                        ':tx': 13194139534312
                    })
                })
        self.assertEqual(self.requests.post.mock_calls, [
            call(
                'http://localhost:3000/data/tdb/db/',
                headers={'Accept': 'application/edn'},
                data={
                    'tx-data':
                    ('[[\n{\n:\nd\nb\n/\ni\nd\n \n#\nd\nb\n/\ni\nd\n[\n:\nd\nb\n.\np\na\nr\n'
                     't\n/\nu\ns\ne\nr\n]\n \n:\np\ne\nr\ns\no\nn\n/\nn\na\nm\ne\n \n"\nP\n'
                     'e\nt\ne\nr\n"\n}\n]\n]')
                })
        ])
Ejemplo n.º 2
0
 def test_query(self):
     '''Verify query()'''
     conn = Datomic('http://localhost:3000/', 'tdb')
     db = Database('db', conn)
     self.requests.get.return_value = Mock(status_code=200, content='[[17592186048482]]')
     self.assertEqual(db.query('[:find ?e ?n :where [?e :person/name ?n]]'), ((17592186048482,),))
     self.assertEqual(self.requests.get.mock_calls, [
         call(
             'http://localhost:3000/api/query',
             headers={'Accept': 'application/edn'},
             params={'q': '[:find ?e ?n :where [?e :person/name ?n]]', 'args': '[{:db/alias tdb/db} ]'}
         )
     ])
Ejemplo n.º 3
0
 def test_query(self):
     '''Verify query()'''
     conn = Datomic('http://localhost:3000/', 'tdb')
     db = Database('db', conn)
     self.requests.get.return_value = Mock(status_code=200,
                                           content='[[17592186048482]]')
     self.assertEqual(db.query('[:find ?e ?n :where [?e :person/name ?n]]'),
                      ((17592186048482, ), ))
     self.assertEqual(self.requests.get.mock_calls, [
         call('http://localhost:3000/api/query',
              headers={'Accept': 'application/edn'},
              params={
                  'q': '[:find ?e ?n :where [?e :person/name ?n]]',
                  'args': '[{:db/alias tdb/db} ]'
              })
     ])
Ejemplo n.º 4
0
    def test_datoms(self):
        '''Verify datoms()'''
        conn = Datomic('http://localhost:3000/', 'tdb')
        db = Database('db', conn)

        self.requests.get.return_value = Mock(status_code=200,
                                              content=json.dumps([{
                                                  ':tx': 1,
                                                  ':e': 1
                                              }]))
        value = db.datoms(basis_t=12345, index='avet', e=123, history=True)
        self.assertEqual(value, ({u':e': u':', u':': 1, 1: u':tx'}, ))
        self.requests.get.assert_called_once_with(
            'http://localhost:3000/data/tdb/db/12345/datoms',
            headers={'Accept': 'application/edn'},
            params={
                'index': 'avet',
                'e': 123,
                'history': True
            })
Ejemplo n.º 5
0
    def test_transact(self):
        '''Verify transact()'''
        conn = Datomic('http://localhost:3000/', 'tdb')
        db = Database('db', conn)

        self.requests.post.return_value = Mock(status_code=201, content=(
            '{:db-before {:basis-t 63, :db/alias "dev/scratch"}, '
            ':db-after {:basis-t 1000, :db/alias "dev/scratch"}, '
            ':tx-data [{:e 13194139534312, :a 50, :v #inst "2014-12-01T15:27:26.632-00:00", '
            ':tx 13194139534312, :added true} {:e 17592186045417, :a 62, '
            ':v "hello REST world", :tx 13194139534312, :added true}], '
            ':tempids {-9223350046623220292 17592186045417}}'
        ))
        self.assertEqual(
            db.transact('[{:db/id #db/id[:db.part/user] :person/name "Peter"}]'), {
                ':db-after': {':db/alias': 'dev/scratch', ':basis-t': 1000},
                ':tempids': {-9223350046623220292: 17592186045417},
                ':db-before': {':db/alias': 'dev/scratch', ':basis-t': 63},
                ':tx-data': ({
                    ':e': 13194139534312, ':v': datetime(2014, 12, 1, 15, 27, 26, 632000),
                    ':added': True, ':a': 50, ':tx': 13194139534312
                }, {
                    ':e': 17592186045417, ':v': 'hello REST world', ':added': True, ':a': 62, ':tx': 13194139534312
                })
            }
        )
        self.assertEqual(
            self.requests.post.mock_calls, [call(
                'http://localhost:3000/data/tdb/db/',
                headers={'Accept': 'application/edn'},
                data={
                    'tx-data': (
                        '[[\n{\n:\nd\nb\n/\ni\nd\n \n#\nd\nb\n/\ni\nd\n[\n:\nd\nb\n.\np\na\nr\n'
                        't\n/\nu\ns\ne\nr\n]\n \n:\np\ne\nr\ns\no\nn\n/\nn\na\nm\ne\n \n"\nP\n'
                        'e\nt\ne\nr\n"\n}\n]\n]'
                    )
                }
            )]
        )