def test_datetime_fields_are_not_identical(self): time1 = datetime.now() sleep(0.001) time2 = datetime.now() assert not Field.field_values_are_identical(time1, time2) assert not Field.field_values_are_identical(time1, str(time2))
def test_set_field_value(self): identifier = Identifier(namespace="test", table="test", key=uuid4()) document = Document(identifier, timestamp=time(), fields=None) document.fields = [Field("one", 1), Field("two", 3)] document.set_field_value("one", 3) document.set_field_value("two", 5) assert_that(document.fields, contains_inanyorder(Field("one", 3), Field("two", 5)))
def test_datetime_fields_are_identical(self): now = datetime.now() assert Field.field_values_are_identical(now, now) assert Field.field_values_are_identical(now, str(now)) utc_now = datetime.utcnow() assert Field.field_values_are_identical(utc_now, utc_now) assert Field.field_values_are_identical(utc_now, str(utc_now))
def test_add_field(self): identifier = Identifier(namespace="test", table="test", key=uuid4()) document = Document(identifier, timestamp=time(), fields=None) document.fields = [Field("one", 1)] document.add_field("two", 2) document.add_field("three", 3) assert_that( document.fields, contains_inanyorder(Field("one", 1), Field("two", 2), Field("three", 3)))
def test_fields_are_not_identical(self): left_fields = [Field("name", "john doe"), Field("salary", 1900.99), Field("married", True), Field("job_id", uuid4())] right_fields = [Field("name", "john doe"), Field("married", True), Field("salary", 1900.99), Field("job_id", uuid4())] assert not Field.field_values_are_identical(left_fields, right_fields) assert not Field.field_values_are_identical(right_fields, left_fields)
def test_fields_are_identical(self): job_id = uuid4() left_fields = [Field("name", "john doe"), Field("salary", 1900.99), Field("married", True), Field("job_id", job_id)] right_fields = [Field("name", "john doe"), Field("married", True), Field("salary", 1900.99), Field("points", 100), Field("job_id", str(job_id))] assert Field.fields_are_identical(left_fields, right_fields) assert Field.fields_are_identical(right_fields, left_fields)
def __apply_update_to_existing_document(self, update, existing_document): if update.timestamp > existing_document.timestamp: if update.is_delete: self._document_store.delete(update.identifier) else: # in order to avoid deadlocks and break cycles, a document is updated only if there are differences. if not Field.fields_are_identical(existing_document.fields, update.fields): self._document_store.update(update)
def test_fields_are_not_identical(self): left_fields = [ Field("name", "john doe"), Field("salary", 1900.99), Field("married", True), Field("job_id", uuid4()) ] right_fields = [ Field("name", "john doe"), Field("married", True), Field("salary", 1900.99), Field("job_id", uuid4()) ] assert not Field.field_values_are_identical(left_fields, right_fields) assert not Field.field_values_are_identical(right_fields, left_fields)
def _build_document(identifier, timestamp, source): if not timestamp: raise InvalidSchemaException( identifier=identifier, message= "Could not retrieve '_timestamp' for Elasticsearch document. Please check your mappings." ) fields = [] for (field_name, field_value) in source.items(): fields.append(Field(field_name, field_value)) return Document(identifier, timestamp, fields)
def test_set_fields(self): identifier = Identifier(namespace="test", table="test", key=uuid4()) document = Document(identifier, timestamp=time(), fields=[Field("foo", "bar")]) assert document.fields == [Field("foo", "bar")] document.fields = [Field("one", 1), Field("two", 2)] assert_that(document.fields, contains_inanyorder(Field("one", 1), Field("two", 2)))
def test_uuid_field_values_are_not_identical(self): uuid1 = uuid4() uuid2 = uuid4() assert not Field.field_values_are_identical(uuid1, uuid2)
def test_boolean_field_values_are_not_identical(self): assert not Field.field_values_are_identical(True, False)
def test_uuid_field_values_are_identical(self): uuid = uuid4() assert Field.field_values_are_identical(uuid, uuid) assert Field.field_values_are_identical(uuid, str(uuid)) assert Field.field_values_are_identical(uuid, unicode(uuid))
def test_string_field_values_are_identical(self): assert Field.field_values_are_identical("test 666", "test 666") assert Field.field_values_are_identical(unicode("test 666"), "test 666") assert Field.field_values_are_identical(unicode("test 666"), str("test 666"))
def build_fields(**kwargs): fields = [] for (name, value) in kwargs.items(): fields.append(Field(name, value)) return fields
def test_decimal_field_values_are_not_identical(self): assert not Field.field_values_are_identical("15.350", Decimal("15.35")) assert not Field.field_values_are_identical(Decimal("15.350"), Decimal("15.35"))
def test_string_field_values_are_not_identical(self): assert not Field.field_values_are_identical("test 666", "test 777")
def test_numeric_field_values_are_identical(self): assert Field.field_values_are_identical(15.35, 15.35) assert Field.field_values_are_identical(10, 10) assert Field.field_values_are_identical(10, 10.0)
def test_numeric_field_values_are_not_identical(self): assert not Field.field_values_are_identical(15.35, 15.36) assert not Field.field_values_are_identical(10, 11) assert not Field.field_values_are_identical(10, 10.0001)
def test_fields_are_identical(self): job_id = uuid4() left_fields = [ Field("name", "john doe"), Field("salary", 1900.99), Field("married", True), Field("job_id", job_id) ] right_fields = [ Field("name", "john doe"), Field("married", True), Field("salary", 1900.99), Field("points", 100), Field("job_id", str(job_id)) ] assert Field.fields_are_identical(left_fields, right_fields) assert Field.fields_are_identical(right_fields, left_fields)