def test_filter_root_by_ancestor_kwargs(all_nodes, root):
    expected = [root]

    results = q_filter(
        all_nodes, q_attrs(mother__mother__name="Laura Walsh (nee Stanton)"))

    assert list(results) == expected
def test_born_walsh_with_father_node(all_nodes, mother):
    expected = [mother]

    results = q_filter(
        all_nodes, q_attrs(name__regex=r"Walsh(?! \(nee)",
                           father__is_not=None))

    assert list(results) == expected
def test_filter_by_date_and_number_of_threads_custom_pred(
        all_versions, version_two):
    expected = [version_two]

    results = q_filter(all_versions["LaunchTemplateVersions"], threads_gte(4),
                       q_item("CreateTime") < datetime(2017, 11, 20, 15, 40))

    assert list(results) == expected
def test_filter_root_by_furthest_ancestor(all_nodes, root):
    expected = [root]

    results = q_filter(
        all_nodes,
        q_attr("mother.mother.mother.name").contains("Opal Eastwood"))

    assert list(results) == expected
def test_filter_k_attr(all_versions, version_five):
    expected = [version_five]

    results = q_filter(
        all_versions["LaunchTemplateVersions"],
        q_items(VersionNumber__gt=3,
                CreditSpecification__CpuCredits="standard"))

    assert list(results) == expected
def test_filter_kwarg(all_versions, version_one):
    expected = [version_one]

    results = q_filter(
        all_versions["LaunchTemplateVersions"],
        q_item("LaunchTemplateData", "NetworkInterfaces", 0,
               "AssociatePublicIpAddress").is_true())

    assert list(results) == expected
def test_filter_any_cpu_thread_or_credits(all_versions, version_two,
                                          version_four, version_five):
    expected = [version_two, version_four, version_five]

    results = q_filter(
        all_versions["LaunchTemplateVersions"],
        q_any(threads_gte(4),
              q_item("CreditSpecification", "CpuCredits") == "unlimited"))

    assert list(results) == expected
def test_filter_non_default__by_group(all_versions, version_two, version_three,
                                      version_four):

    expected = [version_two, version_three, version_four]

    results = q_filter(
        all_versions["LaunchTemplateVersions"],
        q_item("LaunchTemplateData", "NetworkInterfaces", 0,
               "Groups").contains("sg-7c227019"),
        q_item("DefaultVersion").is_false())

    assert list(results) == expected
def test_filter_ip_addresses(all_versions, version_five):
    expected = [version_five]

    results = q_filter(
        all_versions["LaunchTemplateVersions"],
        q_item("LaunchTemplateData", "NetworkInterfaces", 0,
               "Ipv6Addresses").contains(
                   {"Ipv6Address": "eb7a:5a31:f899:dd8c:e566:3307:a45e:dcf6"}),
        q_not(
            q_item("LaunchTemplateData", "NetworkInterfaces", 0,
                   "PrivateIpAddress") == "80.141.152.14"))

    assert list(results) == expected