Exemple #1
0
def test_add_conditional_format_with_multiple_filters(api: APIWrapper,
                                                      list_fixture):
    new_conditional_formats = [
        conditional_format(
            query_filter=[
                QueryFilter(column="column",
                            value=10,
                            filter_type=QueryFilter.Types.LESS_THAN),
                QueryFilter(
                    column="column",
                    value=100,
                    filter_type=QueryFilter.Types.GREATER_THAN,
                ),
            ],
            text_color="ff0055",
            background_color="ffffff",
            bold=True,
            italic=False,
            strike_through=False,
        )
    ]

    for field in list_fixture.fields:
        if field.name == "formatted":
            field.conditional_formats = []
            field.conditional_formats = new_conditional_formats

    api.domain.save(LISTS_SCHEMA, LIST_NAME, list_fixture)
    saved_domain = api.domain.get(LISTS_SCHEMA, LIST_NAME)

    for field in saved_domain.fields:
        if field.name == "formatted":
            assert field.conditional_formats.__len__() == 1
            assert field.conditional_formats[
                0].filter == "format.column~lt=10&format.column~gt=100"
Exemple #2
0
def test_update_conditional_format_serialize_filter(api: APIWrapper,
                                                    list_fixture):
    new_filter = QueryFilter("formatted", 15,
                             QueryFilter.Types.GREATER_THAN_OR_EQUAL)
    cf = conditional_format(new_filter, text_color="ff00ff")

    for field in list_fixture.fields:
        if field.name == "formatted":
            field.conditional_formats[0] = cf

    api.domain.save(LISTS_SCHEMA, LIST_NAME, list_fixture)
    saved_domain = api.domain.get(LISTS_SCHEMA, LIST_NAME)

    for field in saved_domain.fields:
        if field.name == "formatted":
            assert field.conditional_formats[
                0].filter == "format.column~gte=15"
Exemple #3
0
def test_add_conditional_format(api: APIWrapper, list_fixture):
    new_conditional_format = conditional_format(
        query_filter="format.column~lte=7",
        text_color="ff0055",
        background_color="ffffff",
        bold=True,
        italic=False,
        strike_through=False,
    )

    for field in list_fixture.fields:
        if field.name == "formatted":
            field.conditional_formats.append(new_conditional_format)

    api.domain.save(LISTS_SCHEMA, LIST_NAME, list_fixture)
    saved_domain = api.domain.get(LISTS_SCHEMA, LIST_NAME)

    for field in saved_domain.fields:
        if field.name == "formatted":
            assert len(field.conditional_formats) == 2
Exemple #4
0
def test_add_conditional_format_with_missing_filter(api: APIWrapper,
                                                    list_fixture):
    missing_filter_type_filter = QueryFilter("formatted", 13)
    new_conditional_format = conditional_format(
        query_filter=missing_filter_type_filter,
        text_color="ff0055",
        background_color="ffffff",
        bold=True,
        italic=False,
        strike_through=False,
    )

    for field in list_fixture.fields:
        if field.name == "formatted":
            field.conditional_formats = []
            field.conditional_formats = [new_conditional_format]

    api.domain.save(LISTS_SCHEMA, LIST_NAME, list_fixture)
    saved_domain = api.domain.get(LISTS_SCHEMA, LIST_NAME)

    for field in saved_domain.fields:
        if field.name == "formatted":
            assert field.conditional_formats[0].filter == "format.column~eq=13"
Exemple #5
0
def test_add_malformed_query_filter(api: APIWrapper, list_fixture):
    new_conditional_format = conditional_format(
        query_filter="this-is-a-badly-formed-filter",
        text_color="ff0055",
        background_color="ffffff",
        bold=True,
        italic=False,
        strike_through=False,
    )

    for field in list_fixture.fields:
        if field.name == "formatted":
            field.conditional_formats = []
            field.conditional_formats = [new_conditional_format]

    api.domain.save(LISTS_SCHEMA, LIST_NAME, list_fixture)
    saved_domain = api.domain.get(LISTS_SCHEMA, LIST_NAME)

    for field in saved_domain.fields:
        if field.name == "formatted":
            assert (field.conditional_formats[0].filter !=
                    "this-is-a-badly-formed-filter"
                    ), "api should discard meaningless filters"
    def setUp(self):
        self.test_domain = Domain(
            **{
                "container": "TestContainer",
                "description": "A Test Domain",
                "domain_id": 5314,
                "fields": [{
                    "name": "theKey",
                    "rangeURI": "int"
                }],
            })

        self.test_domain.fields[0].conditional_formats = [
            # create conditional format using our utility for a QueryFilter
            conditional_format(
                background_color="fcba03",
                bold=True,
                italic=True,
                query_filter=QueryFilter("theKey", 200),
                strike_through=True,
                text_color="f44e3b",
            ),
            # create conditional format using our utility for a QueryFilter list
            conditional_format(
                background_color="fcba03",
                bold=True,
                italic=True,
                query_filter=[
                    QueryFilter("theKey", 500, QueryFilter.Types.GREATER_THAN),
                    QueryFilter("theKey", 1000, QueryFilter.Types.LESS_THAN),
                ],
                strike_through=True,
                text_color="f44e3b",
            ),
        ]

        class MockSave(MockLabKey):
            api = "saveDomain.api"
            default_action = domain_controller
            default_success_body = {}

        self.service = MockSave()

        payload = {
            "domainDesign": self.test_domain.to_json(),
            "queryName": self.query_name,
            "schemaName": self.schema_name,
        }

        self.expected_kwargs = {
            "expected_args": [self.service.get_server_url()],
            "data": json.dumps(payload, sort_keys=True),
            "headers": {
                "Content-Type": "application/json"
            },
            "timeout": 300,
        }

        self.args = [
            mock_server_context(self.service),
            self.schema_name,
            self.query_name,
            self.test_domain,
        ]
Exemple #7
0
pytestmark = pytest.mark.integration  # Mark all tests in this module as integration tests
LISTS_SCHEMA = "lists"
LIST_NAME = "testlist"
CONDITIONAL_FORMAT = [{
    "filter": "format.column~gte=25",
    "textcolor": "ff0000",
    "backgroundcolor": "ffffff",
    "bold": True,
    "italic": False,
    "strikethrough": False,
}]
SERIALIZED_QUERY_FILTER = QueryFilter("formatted", 35,
                                      QueryFilter.Types.LESS_THAN)
SERIALIZED_CONDITIONAL_FORMAT = conditional_format(
    query_filter=SERIALIZED_QUERY_FILTER, bold=False,
    text_color="ffff00").to_json()
LIST_DEFINITION = {
    "kind": "IntList",
    "domainDesign": {
        "name":
        LIST_NAME,
        "fields": [
            {
                "name": "rowId",
                "rangeURI": "int"
            },
            {
                "name": "formatted",
                "rangeURI": "int",
                "conditionalFormats": CONDITIONAL_FORMAT,
Exemple #8
0
    "options": {"keyName": "rowId", "keyType": "AutoIncrementInteger"},
}

domain_cf = api.domain.create(list_with_cf)

###################
# Edit an existing domain's conditional format
###################
age_field = list(filter(lambda domain_field: domain_field.name == "age", domain_cf.fields))[0]
print(
    'The filter on field "' + age_field.name + '" was: ' + age_field.conditional_formats[0].filter
)

for field in domain_cf.fields:
    if field.name == "age":
        cf = conditional_format(query_filter="format.column~eq=30", text_color="ff0000")
        field.conditional_formats = [cf]
    if field.name == "date":
        cf = conditional_format(
            query_filter=QueryFilter("date", "10/30/1995", QueryFilter.Types.DATE_LESS_THAN),
            text_color="f44e3b",
        )
        field.conditional_formats = [cf]

api.domain.save("lists", "ListWithConditionalFormats", domain_cf)
print(
    'The filter on field "'
    + age_field.name
    + '" has been updated to: '
    + age_field.conditional_formats[0].filter
)