def test_mapping_access_attribute(self): self.assertEqual( ' | where (mapField.key) == "bar"', Query().where(t.mapField.key == 'bar').render(), )
def test_ge(self): self.assertEqual( ' | where numField >= 10', Query().where(t.numField >= 10).render(), )
def test_swapped_mod(self): self.assertEqual( ' | extend foo = 2 % numField', Query().extend(foo=2 % t.numField).render(), )
def test_swapped_or(self): self.assertEqual( ' | where 0 or boolField', Query().where(0 | t.boolField).render(), )
def test_execute_no_table(self): self.assertRaises(RuntimeError("No table supplied"), Query().take(5).execute)
def test_to_int(self): self.assertEqual( ' | extend intFoo = toint(stringField)', Query().extend(intFoo=t.stringField.to_int()).render(), )
def test_swapped_and(self): self.assertEqual( ' | where 1 and boolField', Query().where(1 & t.boolField).render(), )
def test_column_with_dot(self): self.assertEqual( " | project ['foo.bar']", Query().project(t['foo.bar']).render(), )
def test_is_in_expression(self): self.assertEqual( ' | where arrayField contains stringField', Query().where(t.stringField.is_in(t.arrayField)).render())
def test_extend_const(self): self.assertEqual( ' | extend foo = 5, bar = "bar", other_col = stringField', Query().extend(foo=5, bar="bar", other_col=t.stringField).render(), )
def test_array_contains(self): self.assertEqual( ' | where arrayField contains "true"', Query().where(t.arrayField.array_contains(True)).render(), )
def test_dynamic(self): self.assertEqual( ' | where (mapField["foo"][0].bar[1][2][tolower(stringField)]) > time(1.0:0:0.0)', Query().where(t.mapField['foo'][0].bar[1][2][t.stringField.lower()] > timedelta(1)).render(), )
def test_mapping_access_yields_any_expression(self): self.assertEqual( ' | where (mapField["key"]) contains "substr"', Query().where(t.mapField['key'].contains("substr")).render(), )
def test_mapping_access_expression_index(self): self.assertEqual( ' | where (mapField[stringField]) == "bar"', Query().where(t.mapField[t.stringField] == 'bar').render(), )
def test_not_equals(self): self.assertEqual( ' | where stringField != "bar"', Query().where(t.stringField != 'bar').render(), )
def test_has(self): self.assertEqual(' | where stringField has "test"', Query().where(t.stringField.has("test")).render())
def test_to_bool(self): self.assertEqual( ' | extend boolFoo = tobool(stringField)', Query().extend(boolFoo=t.stringField.to_bool()).render(), )
def test_has_cs(self): self.assertEqual( ' | where stringField has_cs "test"', Query().where(t.stringField.has("test", case_sensitive=True)).render())
def test_to_long(self): self.assertEqual( ' | extend longFoo = tolong(stringField)', Query().extend(longFoo=t.stringField.to_long()).render(), )
def test_bag_contains(self): self.assertEqual( ' | where mapField contains "2"', Query().where(t.mapField.bag_contains(2)).render(), )
def test_or(self): self.assertEqual( ' | where boolField or (stringField contains "hello")', Query().where(t.boolField | t.stringField.contains("hello")).render(), )
def test_column_name_quoting(self): self.assertEqual(' | where [\'title\'] has "test"', Query().where(t.title.has("test")).render()) self.assertEqual( ' | where [\'stringField\'] has "test"', Query().where(col.of('stringField').has("test")).render())
def test_single_table(self): mock_kusto_client = MockKustoClient() table = PyKustoClient(mock_kusto_client)['test_db']['mock_table'] Query(table).take(5).execute() self.assertEqual([RecordedQuery('test_db', 'mock_table | take 5')], mock_kusto_client.recorded_queries)
def test_add_number_column(self): self.assertEqual( ' | where (todouble(100 + numberField)) > 0.2', Query().where(f.to_double(100 + t.numberField) > 0.2).render(), )
def test_not(self): self.assertEqual( ' | where not(stringField contains "hello")', Query().where(~t.stringField.contains("hello")).render(), )
def test_multiply_number_expression(self): self.assertEqual( ' | where (100 * (todouble(numberField))) > 0.2', Query().where(100 * f.to_double(t.numberField) > 0.2).render(), )
def test_mod(self): self.assertEqual( ' | extend foo = numField % 2', Query().extend(foo=t.numField % 2).render(), )
def test_column_with_digits(self): self.assertEqual( " | where (['100'] * (todouble(numberField))) > 0.2", Query().where( col['100'] * f.to_double(t.numberField) > 0.2).render(), )
def test_negation(self): self.assertEqual( ' | extend foo = -numField', Query().extend(foo=-t.numField).render(), )
def test_mapping_access(self): self.assertEqual( ' | where (mapField["key"]) == "bar"', Query().where(t.mapField['key'] == 'bar').render(), )