def test_even_diststyle(preparer):
    text = ddl.get_table_attributes(preparer, diststyle="EVEN")
    assert text == " DISTSTYLE EVEN"
def test_bad_diststyle(preparer):
    with pytest.raises(sa_exc.ArgumentError):
        ddl.get_table_attributes(preparer, diststyle="BAD_SHOULD_FAIL")
def test_distkey_with_other_diststyles(preparer):
    for style in ("EVEN", "NONE", "ALL"):
        with pytest.raises(sa_exc.ArgumentError):
            ddl.get_table_attributes(preparer,
                                     diststyle=style,
                                     distkey="a_key")
def test_all_diststyle(preparer):
    text = ddl.get_table_attributes(preparer, diststyle="ALL")
    assert text == " DISTSTYLE ALL"
def test_dist_key_with_key_diststyle(preparer):
    text = ddl.get_table_attributes(preparer, distkey="a_key", diststyle="KEY")
    assert text == " DISTSTYLE KEY DISTKEY (a_key)"
def test_no_distkey_with_key_diststyle(preparer):
    with pytest.raises(sa_exc.ArgumentError):
        ddl.get_table_attributes(preparer, diststyle="KEY")
def test_table_attributes_two_sort_key_interleaved(preparer, sortkey):
    text = ddl.get_table_attributes(preparer, interleaved_sortkey=sortkey)
    assert text == " INTERLEAVED SORTKEY (b_key, c_key)"
def test_table_attributes_one_sort_one_interleaved_raises(preparer):
    with pytest.raises(sa_exc.ArgumentError):
        ddl.get_table_attributes(preparer,
                                 sortkey="b_key",
                                 interleaved_sortkey="b_key")
def test_table_attributes_one_sort_key_interleaved(preparer, sortkey):
    # A single interleaved key doesn't make too much sense, but redshift
    # doesn't complain, so neither should we.
    text = ddl.get_table_attributes(preparer, interleaved_sortkey=sortkey)
    assert text == " INTERLEAVED SORTKEY (b_key)"
def test_table_attributes_two_sort_key(preparer, sortkey):
    text = ddl.get_table_attributes(preparer, sortkey=sortkey)
    assert text == " SORTKEY (b_key, c_key)"
def test_table_attributes_dist_key_one_sort_key(preparer, sortkey):
    text = ddl.get_table_attributes(preparer, distkey="a_key", sortkey=sortkey)
    assert text == " DISTKEY (a_key) SORTKEY (b_key)"
def test_table_attributes_dist_key(preparer, distkey):
    text = ddl.get_table_attributes(preparer, distkey=distkey)
    assert text == " DISTKEY (a_key)"
def test_table_attributes_empty(preparer):
    # Test the null case
    text = ddl.get_table_attributes(preparer)
    expected = ""
    assert expected == text