|
353 | 353 | pending |
354 | 354 | end |
355 | 355 | end |
| 356 | + |
| 357 | + context "Default Value Type Validation" do |
| 358 | + let(:flag_key) { "test-flag" } |
| 359 | + |
| 360 | + context "Valid default value types" do |
| 361 | + it "accepts boolean values for fetch_boolean_value" do |
| 362 | + expect { client.fetch_boolean_value(flag_key:, default_value: true) }.not_to raise_error |
| 363 | + expect { client.fetch_boolean_value(flag_key:, default_value: false) }.not_to raise_error |
| 364 | + end |
| 365 | + |
| 366 | + it "accepts string values for fetch_string_value" do |
| 367 | + expect { client.fetch_string_value(flag_key:, default_value: "test") }.not_to raise_error |
| 368 | + expect { client.fetch_string_value(flag_key:, default_value: "") }.not_to raise_error |
| 369 | + end |
| 370 | + |
| 371 | + it "accepts numeric values for fetch_number_value" do |
| 372 | + expect { client.fetch_number_value(flag_key:, default_value: 42) }.not_to raise_error |
| 373 | + expect { client.fetch_number_value(flag_key:, default_value: 3.14) }.not_to raise_error |
| 374 | + end |
| 375 | + |
| 376 | + it "accepts integer values for fetch_integer_value" do |
| 377 | + expect { client.fetch_integer_value(flag_key:, default_value: 42) }.not_to raise_error |
| 378 | + end |
| 379 | + |
| 380 | + it "accepts float values for fetch_float_value" do |
| 381 | + expect { client.fetch_float_value(flag_key:, default_value: 3.14) }.not_to raise_error |
| 382 | + end |
| 383 | + |
| 384 | + it "accepts array and hash values for fetch_object_value" do |
| 385 | + expect { client.fetch_object_value(flag_key:, default_value: {}) }.not_to raise_error |
| 386 | + expect { client.fetch_object_value(flag_key:, default_value: []) }.not_to raise_error |
| 387 | + end |
| 388 | + end |
| 389 | + |
| 390 | + context "Invalid default value types" do |
| 391 | + it "raises ArgumentError for invalid boolean default values" do |
| 392 | + expect { client.fetch_boolean_value(flag_key:, default_value: "not boolean") } |
| 393 | + .to raise_error(ArgumentError, /Default value for boolean must be TrueClass or FalseClass, got String/) |
| 394 | + expect { client.fetch_boolean_value(flag_key:, default_value: 1) } |
| 395 | + .to raise_error(ArgumentError, /Default value for boolean must be TrueClass or FalseClass, got Integer/) |
| 396 | + end |
| 397 | + |
| 398 | + it "raises ArgumentError for invalid string default values" do |
| 399 | + expect { client.fetch_string_value(flag_key:, default_value: true) } |
| 400 | + .to raise_error(ArgumentError, /Default value for string must be String, got TrueClass/) |
| 401 | + expect { client.fetch_string_value(flag_key:, default_value: 42) } |
| 402 | + .to raise_error(ArgumentError, /Default value for string must be String, got Integer/) |
| 403 | + end |
| 404 | + |
| 405 | + it "raises ArgumentError for invalid number default values" do |
| 406 | + expect { client.fetch_number_value(flag_key:, default_value: "42") } |
| 407 | + .to raise_error(ArgumentError, /Default value for number must be Numeric, got String/) |
| 408 | + expect { client.fetch_number_value(flag_key:, default_value: true) } |
| 409 | + .to raise_error(ArgumentError, /Default value for number must be Numeric, got TrueClass/) |
| 410 | + end |
| 411 | + |
| 412 | + it "raises ArgumentError for invalid integer default values" do |
| 413 | + expect { client.fetch_integer_value(flag_key:, default_value: 3.14) } |
| 414 | + .to raise_error(ArgumentError, /Default value for integer must be Integer, got Float/) |
| 415 | + expect { client.fetch_integer_value(flag_key:, default_value: "42") } |
| 416 | + .to raise_error(ArgumentError, /Default value for integer must be Integer, got String/) |
| 417 | + end |
| 418 | + |
| 419 | + it "raises ArgumentError for invalid float default values" do |
| 420 | + expect { client.fetch_float_value(flag_key:, default_value: 42) } |
| 421 | + .to raise_error(ArgumentError, /Default value for float must be Float, got Integer/) |
| 422 | + expect { client.fetch_float_value(flag_key:, default_value: "3.14") } |
| 423 | + .to raise_error(ArgumentError, /Default value for float must be Float, got String/) |
| 424 | + end |
| 425 | + |
| 426 | + it "raises ArgumentError for invalid object default values" do |
| 427 | + expect { client.fetch_object_value(flag_key:, default_value: "not object") } |
| 428 | + .to raise_error(ArgumentError, /Default value for object must be Array or Hash, got String/) |
| 429 | + expect { client.fetch_object_value(flag_key:, default_value: 42) } |
| 430 | + .to raise_error(ArgumentError, /Default value for object must be Array or Hash, got Integer/) |
| 431 | + end |
| 432 | + end |
| 433 | + end |
356 | 434 | end |
357 | 435 | end |
0 commit comments