# typed: strict

module DataModel
	module Fixtures::String
		extend self
		extend T::Sig
		include Fixtures

		sig { returns(Example) }
		def simple
			Example.new(
				[:string],
				variants: {
					valid: "valid",
					other_type: 22,
					missing: nil
				},
			)
		end

		sig { returns(Example) }
		def optional
			Example.new(
				[:string, { optional: true }],
				variants: {
					valid: "valid",
					blank: "",
					missing: nil
				},
			)
		end

		sig { returns(Example) }
		def inclusion
			Example.new(
				[:string, { included: ["valid"] }],
				variants: {
					valid: "valid",
					outside: "invalid"
				},
			)
		end

		sig { returns(Example) }
		def exclusion
			Example.new(
				[:string, { excluded: ["invalid"] }],
				variants: {
					valid: "valid",
					inside: "invalid"
				},
			)
		end

		sig { returns(Example) }
		def allow_blank
			Example.new(
				[:string, { allow_blank: true }],
				variants: {
					blank: "",
					not_blank: "content",
					missing: nil
				},
			)
		end

		sig { returns(Example) }
		def dont_allow_blank
			Example.new(
				[:string, { allow_blank: false }],
				variants: {
					blank: ""
				},
			)
		end
	end
end