Flagsmith / Flagsmith/engine-test-data

Spike: Condition value type coercion spec

Đang mở
#44 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
0
Fork
0
Merge trung bình
4 ngày 22 giờ
Pull request đã merge (30 ngày)
1

Mô tả

The behaviour of the engine needs to be clarified when comparing context values (traits) to segment condition values.

Different languages handle this in different ways, so we need to agree on a set of rules that are not dependent on any specific language implementation.

The goal is to devise test cases that formalise the in-engine type coercion, and a comprehensive user-facing document that details it.

Some of the questions we should have formal answers to, along with draft answers representing the current behaviour:

Q: How is a null context value treated?
A: Engine evaluates to `false` for all operators except `IS_NOT_SET`.

Q: What is the string representation of a Boolean condition value?
A: `'True', 'true', 'False', 'false'`. Numeric values (`1, 0`) are not expected.

Q: How are numeric values compared?
A: Condition value is coerced to context/trait value type.

Q: How are values compared for the In operator?
A: Condition value is coerced to list of strings. Membership check is performed against a string representation of the context/trait value. Boolean context/trait values are skipped (rule evaluated to `false`).
NOTE: This behaviour is deemed problematic due to contradicting the overall logic of coercing segment condition values to trait values, and lack of uniform decimal/float serialisation across different languages.

Q: How are numbers parsed in regards to system locale?
A: Numbers are always parsed with a period as decimal separator, regardless of region or language settings system or process-wise.

#38 is an attempt to formalise the last answer, which sparked a conversation resulting in this issue.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng việc xem xét issue #38 và các câu trả lời dự thảo trong issue này, sau đó xác định các trường hợp cưỡng chế kiểu chưa được giải quyết cần đạt được sự thống nhất. Công việc được xem là hoàn tất khi các quy tắc đã được thống nhất, các trường hợp kiểm thử toàn diện chính thức hóa các quy tắc đó và một tài liệu dành cho người dùng giải thích hành vi resulting.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Lĩnh vực
documentation, testing
Loại issue
Tài liệu
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.