it{expect(described_class.new('123 or 456',[:"players.name",:"players.device_id"],:"players.device_id").where_clause).toeq(["(players.device_id ILIKE ? OR players.device_id ILIKE ?)","%123%","%456%"])}
it{expect(described_class.new('123 and 456',[:"players.name",:"players.device_id"],:"players.device_id").where_clause).toeq(["(players.device_id ILIKE ? AND players.device_id ILIKE ?)","%123%","%456%"])}
it{expect(described_class.new('name:ab and not value:hf-1',[:"players.name",:"players.value"],:"players.device_id").where_clause).toeq(['(players.name ILIKE ? AND NOT players.value ILIKE ?)','%ab%','%hf-1%'])}
it{expect(described_class.new('name:a and name:b or name:c',[:"players.name",:"players.value"],:"players.device_id").where_clause).toeq(['((players.name ILIKE ? AND players.name ILIKE ?) OR players.name ILIKE ?)','%a%','%b%','%c%'])}
it{expect(described_class.new('name:a and (name:b or name:c)',[:"players.name",:"players.value"],:"players.device_id").where_clause).toeq(['(players.name ILIKE ? AND (players.name ILIKE ? OR players.name ILIKE ?))','%a%','%b%','%c%'])}
it{expect(described_class.new('name:a and not (name:b or name:c)',[:"players.name",:"players.value"],:"players.device_id").where_clause).toeq(['(players.name ILIKE ? AND NOT (players.name ILIKE ? OR players.name ILIKE ?))','%a%','%b%','%c%'])}
it{expect(described_class.new('(device_id:"with space" tags:mta no-quotes-id-123) or "id with quotes-5" and ( ("id with q 10" or "id with q 20") and ("id with Q 30" "id with Q 40") and not id-without-Q-50)',[:'players.name',:'players.value',:'players.device_id'],:"players.device_id",{tags:'tags.name'}).where_clause).toeq(['((players.device_id ILIKE ? OR (tags.name ILIKE ? OR players.device_id ILIKE ?)) OR (players.device_id ILIKE ? AND (((players.device_id ILIKE ? OR players.device_id ILIKE ?) AND (players.device_id ILIKE ? OR players.device_id ILIKE ?)) AND NOT players.device_id ILIKE ?)))','%with space%','%mta%','%no-quotes-id-123%','%id with quotes-5%','%id with q 10%','%id with q 20%','%id with Q 30%','%id with Q 40%','%id-without-Q-50%'])}