def test_find_by_id_as_dict(self):
        connection = ConnectionFactory.get_connection(connection_str=CONNECTION_STR,
                                                      options=CONNECTION_OPTIONS)

        if connection.is_store_exists(store_path='/find-by-id-test-store1'):
            document_store = connection.get_store(store_path='/find-by-id-test-store1')
        else:
            document_store = connection.create_store(store_path='/find-by-id-test-store1')

        self.assertTrue(connection.is_store_exists('/find-by-id-test-store1'))
        doc = document_store.find_by_id('121212')

        document = OJAIDocument().set_id("121212") \
            .set('test_int', 123) \
            .set('first.test_int', 1235) \
            .set('first.test_long', 123456789) \
            .set('first.test_time', OTime(timestamp=1518689532)) \
            .set('first.test_date', ODate(days_since_epoch=3456)) \
            .set('first.test_bool', True) \
            .set('first.test_bool_false', False) \
            .set('first.test_invalid', ODate(days_since_epoch=3457)) \
            .set('first.test_str', 'strstr') \
            .set('first.test_dict', {'a': 1, 'b': 2}) \
            .set('first.test_dict2', {}) \
            .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)])

        self.assertEqual(doc, document.as_dictionary())
예제 #2
0
 def test_o_date_parse(self):
     o_date = ODate.parse("1970-04-10")
     self.assertEqual(o_date.days_since_epoch, 99)
     self.assertEqual(o_date.get_year(), 1970)
     self.assertEqual(o_date.get_month(), 4)
     self.assertEqual(o_date.get_day_of_month(), 10)
     self.assertEqual(o_date.to_date().time().hour, 0)
     self.assertEqual(o_date.to_date().time().minute, 0)
     self.assertEqual(o_date.to_date().time().second, 0)
예제 #3
0
    def test_document_to_json_str_without_tags(self):
        doc = OJAIDocument().set_id('121212') \
            .set('test_int', 123) \
            .set('first.test_int', 1235) \
            .set('first.test_long', 123456789) \
            .set('first.test_float', 123456789.123) \
            .set('first.test_time', OTime(timestamp=1518689532)) \
            .set('test_float', 11.1) \
            .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \
            .set('first.test_date', ODate(days_since_epoch=3456)) \
            .set('first.test_bool', True) \
            .set('first.test_bool_false', False) \
            .set('first.test_invalid', ODate(days_since_epoch=3457)) \
            .set('first.test_str', 'strstr') \
            .set('first.test_dict', {'a': 1, 'b': 2}) \
            .set('first.test_dict2', {}) \
            .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)])\
            .set('test_bytearray', bytearray(b'\x06\x06'))

        self.assertEqual(
            {
                "_id": "121212",
                "test_int": 123,
                "first": {
                    "test_int": 1235,
                    "test_long": 123456789,
                    "test_float": 123456789.123,
                    "test_time": "12:12:12",
                    "test_timestamp": "1970-12-12T19:12:12.000000Z",
                    "test_date": "1979-06-19",
                    "test_bool": True,
                    "test_bool_false": False,
                    "test_invalid": "1979-06-20",
                    "test_str": "strstr",
                    "test_dict": {
                        "a": 1,
                        "b": 2
                    },
                    "test_dict2": {},
                    "test_list": [1, 2, "str", False, "1979-06-20"]
                },
                "test_float": 11.1,
                "test_bytearray": "\u0006\u0006"
            }, json.loads(doc.as_json_str(with_tags=False)))
예제 #4
0
    def test_doc_get(self):
        doc = OJAIDocument().set_id('121212') \
            .set('test_int', 123) \
            .set('first.test_int', 1235) \
            .set('first.test_long', 123456789) \
            .set('first.test_float', 123456789.123) \
            .set('first.test_time', OTime(timestamp=1518689532)) \
            .set('test_float', 11.1) \
            .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \
            .set('first.test_date', ODate(days_since_epoch=3456)) \
            .set('first.test_interval', OInterval(milli_seconds=172800000)) \
            .set('first.test_bool', True) \
            .set('first.test_bool_false', False) \
            .set('first.test_invalid', ODate(days_since_epoch=3457)) \
            .set('first.test_str', 'strstr') \
            .set('first.test_dict', {'a': 1, 'b': 2}) \
            .set('first.test_dict2', {}) \
            .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \

        self.assertEqual(doc.get_int('test_int'), 123)
        self.assertEqual(doc.get_int('first.test_int'), 1235)
        self.assertEqual(doc.get_int('first.test_long'), 123456789)
        self.assertEqual(doc.get_long('first.test_long'), 123456789)
        self.assertEqual(doc.get_float('first.test_float'), 123456789.123)
        self.assertEqual(
            doc.get_time('first.test_time').time_to_str(), '12:12:12')
        self.assertEqual(
            doc.get_interval('first.test_interval').time_duration, 172800000)
        self.assertEqual(
            doc.get_timestamp('first.test_timestamp').__str__(),
            '1970-12-12T19:12:12.000000Z')
        self.assertEqual(
            doc.get_date('first.test_date').to_date_str(), '1979-06-19')
        self.assertEqual(doc.get_boolean('first.test_bool'), True)
        self.assertEqual(doc.get_boolean('first.test_bool_false'), False)
        self.assertEqual(doc.get_boolean('first.test_invalid'), None)
        self.assertEqual(doc.get_str('first.test_str'), 'strstr')
        self.assertEqual(doc.get_dictionary('first.test_dict'), {
            'a': 1,
            'b': 2
        })
        self.assertEqual(doc.get_dictionary('first.test_dict2'), {})
예제 #5
0
 def test_concrete_date(self):
     o_date = ODate(year=1970, month=4, day_of_month=10)
     self.assertEqual(o_date.days_since_epoch, 99)
     self.assertEqual(o_date.get_year(), 1970)
     self.assertEqual(o_date.get_month(), 4)
     self.assertEqual(o_date.get_day_of_month(), 10)
     self.assertEqual(o_date.to_date().time().hour, 0)
     self.assertEqual(o_date.to_date().time().minute, 0)
     self.assertEqual(o_date.to_date().time().second, 0)
예제 #6
0
 def test_o_date_datetime(self):
     import datetime
     date = datetime.datetime(year=1970, month=4, day=10, hour=5, minute=15, second=55)
     o_date = ODate(date=date)
     self.assertEqual(o_date.days_since_epoch, 99)
     self.assertEqual(o_date.get_year(), 1970)
     self.assertEqual(o_date.get_month(), 4)
     self.assertEqual(o_date.get_day_of_month(), 10)
     self.assertEqual(o_date.to_date().time().hour, 0)
     self.assertEqual(o_date.to_date().time().minute, 0)
     self.assertEqual(o_date.to_date().time().second, 0)
예제 #7
0
 def generate_o_types(str_type, str_value):
     if str_type == '$interval':
         from ojai.types.OInterval import OInterval
         return OInterval(milli_seconds=str_value)
     elif str_type == '$date':
         from ojai.types.OTimestamp import OTimestamp
         return OTimestamp.parse(str_value)
     elif str_type == '$dateDay':
         from ojai.types.ODate import ODate
         return ODate.parse(str_value)
     else:
         from ojai.types.OTime import OTime
         return OTime.parse(str_value)
    def test_insert_find_large_doc(self):
        document = OJAIDocument().set_id("121212") \
            .set('test_int', 123) \
            .set('first.test_int', 1235) \
            .set('first.test_long', 123456789) \
            .set('first.test_time', OTime(timestamp=1518689532)) \
            .set('first.test_date', ODate(days_since_epoch=3456)) \
            .set('first.test_bool', True) \
            .set('first.test_bool_false', False) \
            .set('first.test_invalid', ODate(days_since_epoch=3457)) \
            .set('first.test_str', 'strstr') \
            .set('first.test_dict', {'a': 1, 'b': 2}) \
            .set('first.test_dict2', {}) \
            .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \

        connection = ConnectionFactory.get_connection(connection_str=CONNECTION_STR,
                                                      options=CONNECTION_OPTIONS)

        if connection.is_store_exists(store_path='/find-by-id-test-store1'):
            document_store = connection.get_store(store_path='/find-by-id-test-store1')
        else:
            document_store = connection.create_store(store_path='/find-by-id-test-store1')

        document_store.insert_or_replace(doc=document)

        self.assertTrue(connection.is_store_exists('/find-by-id-test-store1'))
        doc = document_store.find_by_id('121212', results_as_document=True)

        self.assertEqual(doc.as_json_str(), '{"_id": "121212", "test_int": {"$numberLong": 123}, "first": {'
                                            '"test_invalid": {"$dateDay": "1979-06-20"}, "test_time": {"$time": '
                                            '"12:12:12"}, "test_bool_false": false, "test_list": [{"$numberLong": 1}, '
                                            '{"$numberLong": 2}, "str", false, {"$dateDay": "1979-06-20"}], '
                                            '"test_long": {"$numberLong": 123456789}, "test_dict2": {}, "test_dict": '
                                            '{"a": {"$numberLong": 1}, "b": {"$numberLong": 2}}, "test_bool": true, '
                                            '"test_date": {"$dateDay": "1979-06-19"}, "test_str": "strstr", '
                                            '"test_int": {"$numberLong": 1235}}}')
        self.assertEqual(doc.as_dictionary(), document.as_dictionary())
 def test_doc_set_date(self):
     doc = OJAIDocument()
     doc.set("today", ODate(days_since_epoch=3456))
     self.assertEqual(doc.as_json_str(), json.dumps({"today": {"$dateDay": "1979-06-19"}}))
     doc.set_id("6123")
     self.assertEqual(json.loads(doc.as_json_str()), {"_id": "6123", "today": {"$dateDay": "1979-06-19"}})
예제 #10
0
 def test_o_date_epoch(self):
     epoch = 8546400
     o_date = ODate(epoch=epoch)
     days = 99
     o_date_clone = ODate(days_since_epoch=days)
     self.assertTrue(o_date.__eq__(o_date_clone))
     self.assertEqual(o_date.__cmp__(o_date_clone), 0)
     self.assertEqual(o_date.__hash__(), o_date_clone.__hash__())
     self.assertEqual(o_date.get_year(), o_date_clone.get_year())
     self.assertEqual(o_date.get_month(), o_date_clone.get_month())
     self.assertEqual(o_date.get_day_of_month(), o_date_clone.get_day_of_month())
예제 #11
0
 def test_days_from_epoch(self):
     days = 99
     o_date = ODate(days_since_epoch=days)
     o_date_clone = ODate(days_since_epoch=days)
     self.assertTrue(o_date.__eq__(o_date_clone))
     self.assertEqual(o_date.__cmp__(o_date_clone), 0)
     self.assertEqual(o_date.__hash__(), o_date_clone.__hash__())
     self.assertEqual(o_date.to_date_str(), "1970-04-10")
     self.assertEqual(o_date.get_year(), 1970)
     self.assertEqual(o_date.get_month(), 4)
     self.assertEqual(o_date.get_day_of_month(), 10)
     self.assertEqual(o_date.to_date().time().hour, 0)
     self.assertEqual(o_date.to_date().time().minute, 0)
     self.assertEqual(o_date.to_date().time().second, 0)
예제 #12
0
# Get a store and assign it as a DocumentStore object
store = connection.get_store(store_path="/sample_store1")

# Json string or json dictionary
json_dict = {"_id": "id002",
             "name": "Joe",
             "age": 50,
             "address": {
                 "street": "555 Moon Way",
                 "city": "Gotham"}
             }

# Json string or json dictionary
payment = {"payment_method": "card",
           "name": "visa",
           "card_info": {
               "number": "1234 1234 1234 1234",
               "exp_date": ODate.parse("2022-10-24"),
               "cvv": 123}
           }

# Create new document from json_document
new_document = connection.new_document(dictionary=json_dict)
# Add nested dictionary into document
new_document.set(field_path='payment', value=payment)
# Insert or replace new document into the store
store.insert_or_replace(doc=new_document)

# close
connection.close()
예제 #13
0
    "name": "Joe",
    "age": 50,
    "address": {
        "street": "555 Moon Way",
        "city": "Gotham"
    }
}

byte_array = bytearray([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
doc = OJAIDocument().set_id("id003") \
            .set('test_int', 14) \
            .set('first.test_int', 1235) \
            .set('first.test_long', 123456789) \
            .set('first.test_time', OTime(timestamp=1518689532)) \
            .set('first.test_timestamp', OTimestamp(millis_since_epoch=29877132000)) \
            .set('first.test_date', ODate(days_since_epoch=3456)) \
            .set('first.test_bool', True) \
            .set('first.test_bool_false', False) \
            .set('first.test_invalid', ODate(days_since_epoch=3457)) \
            .set('first.test_str', 'strstr') \
            .set('first.test_dict', {'a': 1, 'b': 2}) \
            .set('first.test_dict2', {}) \
            .set('first.test_list', [1, 2, 'str', False, ODate(days_since_epoch=3457)]) \
            .set('first.test_binary', byte_array)

# Create new document from json_document
new_document = connection.new_document(dictionary=json_dict)
doc.set('first.second.nested_doc', new_document)
# Insert new document into the store
store.insert_or_replace(doc=doc)