Class: QuoteSql::Test

Inherits:
Object
  • Object
show all
Defined in:
lib/quote_sql/test.rb

Defined Under Namespace

Classes: PseudoActiveRecord

Instance Method Summary collapse

Instance Method Details

#allObject



3
4
5
6
7
8
9
10
# File 'lib/quote_sql/test.rb', line 3

def all
  @success = []
  @fail = []
  private_methods(false).grep(/^test_/).each { run(_1, true) }
  @success.each { STDOUT.puts(*_1, nil) }
  @fail.each { STDOUT.puts(*_1, nil) }
  puts
end

#expected(v = nil) ⇒ Object



33
34
35
# File 'lib/quote_sql/test.rb', line 33

def expected(v = nil)
  @expected ||= v
end

#run(name, all = false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/quote_sql/test.rb', line 12

def run(name, all = false)
  name = name.to_s.sub(/^test_/, "")
  rv = ["๐Ÿงช #{name}"]
  @expected = nil
  @test = send("test_#{name}")
  if sql.gsub(/\s+/, "")&.downcase&.strip == expected&.gsub(/\s+/, "")&.downcase&.strip
    tables = @test.tables.to_h { [[_1, "table"].compact.join("_"), _2] }
    columns = @test.instance_variable_get(:@columns).to_h { [[_1, "columns"].compact.join("_"), _2] }
    rv += [@test.original, { **tables, **columns, **@test.quotes }.inspect, "๐ŸŽฏ #{expected}", "โœ… #{sql}"]
    @success << rv if @success
  else
    rv += [@test.inspect, "๐ŸŽฏ #{expected}", "โŒ #{sql}"]
    @fail << rv if @fail
  end
rescue => exc
  rv += [@test.inspect, "๐ŸŽฏ #{expected}", "โŒ #{sql}", exc.message]
  @fail << rv if @fail
ensure
  STDOUT.puts(*rv) unless @fail or @success
end

#sqlObject



37
38
39
# File 'lib/quote_sql/test.rb', line 37

def sql
  @test.to_sql
end