def test_update_delete_restore_update(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = { "type": "update", "fqid": "a/1", "fields": { "another": "value", "f": None }, } data["events"].append({"type": "delete", "fqid": "a/1"}) data["events"].append({"type": "restore", "fqid": "a/1"}) data["events"].append({ "type": "update", "fqid": "a/1", "fields": { "third_field": ["my", "list"] } }) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"another": "value", "third_field": ["my", "list"]}, 2) assert_modified_fields(redis_connection, {"a/1": ["f", "another", "third_field"]})
def create_model(json_client, data, redis_connection, reset_redis_data): fields = copy.deepcopy(data["events"][0]["fields"]) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", fields, 1) assert_modified_fields(redis_connection, {"a/1": list(fields.keys())}) reset_redis_data()
def test_create_delete_restore(json_client, data, redis_connection): data["events"].append({"type": "delete", "fqid": "a/1"}) data["events"].append({"type": "restore", "fqid": "a/1"}) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 1) assert_modified_fields(redis_connection, {"a/1": ["f"]})
def test_restore_without_delete(json_client, data, redis_connection, reset_redis_data): response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 1) assert_modified_fields(redis_connection, {"a/1": ["f"]}) reset_redis_data() data["events"] = [{"type": "restore", "fqid": "a/1"}] response = json_client.post(WRITE_URL, data) assert_error_response(response, ERROR_CODES.MODEL_NOT_DELETED) assert_model("a/1", {"f": 1}, 1) assert_no_modified_fields(redis_connection)
def test_single_restore(json_client, data, redis_connection, reset_redis_data): data["events"].append({"type": "delete", "fqid": "a/1"}) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_no_model("a/1") assert_modified_fields(redis_connection, {"a/1": ["f"]}) reset_redis_data() data["events"] = [{"type": "restore", "fqid": "a/1"}] response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 2) assert_modified_fields(redis_connection, {"a/1": ["f"]})
def test_create_update(json_client, data, redis_connection): field_data = [True, None, {"test": "value"}] data["events"].append({ "type": "update", "fqid": "a/1", "fields": { "f": None, "another_field": field_data }, }) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"another_field": field_data}, 1) assert_modified_fields(redis_connection, {"a/1": ["f", "another_field"]})
def test_write_none(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = { "type": "update", "fqid": "a/1", "fields": { "f": None } } response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {}, 2) assert_modified_fields(redis_connection, {"a/1": ["f"]}, meta_deleted=False)
def test_list_update_with_create(json_client, data, redis_connection, reset_redis_data): data["events"].append({ "type": "update", "fqid": "a/1", "list_fields": { "add": { "g": [2] } }, }) response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1, "g": [2]}, 1) assert_modified_fields(redis_connection, {"a/1": ["f", "g"]})
def test_single_update(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) field_data = [True, None, {"test": "value"}] data["events"][0] = { "type": "update", "fqid": "a/1", "fields": { "f": None, "another_field": field_data }, } response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"another_field": field_data}, 2) assert_modified_fields(redis_connection, {"a/1": ["f", "another_field"]}, meta_deleted=False)
def test_two_write_requests(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = { "type": "update", "fqid": "a/1", "fields": { "f": None } } data2 = copy.deepcopy(data) data2["events"][0] = {"type": "update", "fqid": "a/1", "fields": {"f2": 1}} response = json_client.post(WRITE_URL, [data, data2]) assert_response_code(response, 201) assert_model("a/1", {"f2": 1}, 3) assert_modified_fields(redis_connection, {"a/1": ["f", "f2"]}, meta_deleted=False)
def test_create_delete_restore_different_positions(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = {"type": "delete", "fqid": "a/1"} response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_no_model("a/1") assert_modified_fields(redis_connection, {"a/1": ["f"]}) reset_redis_data() data["events"][0] = {"type": "restore", "fqid": "a/1"} response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 3) assert_modified_fields(redis_connection, {"a/1": ["f"]})
def test_single_delete(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = {"type": "delete", "fqid": "a/1"} response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_no_model("a/1") # assert the model is still in the lookup table, but marked as deleted connection_handler = injector.get(ConnectionHandler) with connection_handler.get_connection_context(): # read from read db read_db: ReadDatabase = injector.get(ReadDatabase) model = read_db.get("a/1", [], DeletedModelsBehaviour.ONLY_DELETED) assert model == {"f": 1, "meta_deleted": True, "meta_position": 2} assert read_db.is_deleted("a/1") assert_modified_fields(redis_connection, {"a/1": ["f"]})
def test_list_update_remove_empty_1(json_client, data, redis_connection, reset_redis_data): create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = { "type": "update", "fqid": "a/1", "list_fields": { "remove": { "field": [1] } }, } response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 2) assert_modified_fields(redis_connection, {"a/1": ["field"]}, meta_deleted=False)
def test_list_update_add_duplicate(json_client, data, redis_connection, reset_redis_data): data["events"][0]["fields"]["f"] = [1] create_model(json_client, data, redis_connection, reset_redis_data) data["events"][0] = { "type": "update", "fqid": "a/1", "list_fields": { "add": { "f": [1, 2] } }, } response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": [1, 2]}, 2) assert_modified_fields(redis_connection, {"a/1": ["f"]}, meta_deleted=False)
def test_create_empty_field(json_client, data, redis_connection): data["events"][0]["fields"]["empty"] = None response = json_client.post(WRITE_URL, data) assert_response_code(response, 201) assert_model("a/1", {"f": 1}, 1) assert_modified_fields(redis_connection, {"a/1": ["f"]})