Пример #1
0
async def test_friendly_name_changed(hass):
    """Test friendly name change."""
    package = Package(
        "456", 206, "friendly name 1", "info text 1", "location 1", 206, 2
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package = Package(
        "456", 206, "friendly name 2", "info text 1", "location 1", 206, 2
    )
    ProfileMock.package_list = [package]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    entity = hass.data["entity_components"]["sensor"].get_entity(
        "sensor.seventeentrack_package_456"
    )
    assert entity.name == "Seventeentrack Package: friendly name 2"
    assert len(hass.states.async_entity_ids()) == 1
Пример #2
0
async def test_add_package(hass):
    """Ensure package is added correctly when user add a new package."""
    package = Package(
        "456",
        206,
        "friendly name 1",
        "info text 1",
        "location 1",
        "2020-08-10 10:32",
        206,
        2,
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)
    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package2 = Package(
        "789",
        206,
        "friendly name 2",
        "info text 2",
        "location 2",
        "2020-08-10 14:25",
        206,
        2,
    )
    ProfileMock.package_list = [package, package2]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 2
Пример #3
0
async def test_add_package(hass):
    """Ensure package is added correctly when user add a new package."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)
    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package2 = Package(
        tracking_number="789",
        destination_country=206,
        friendly_name="friendly name 2",
        info_text="info text 2",
        location="location 2",
        timestamp="2020-08-10 14:25",
        origin_country=206,
        package_type=2,
    )
    ProfileMock.package_list = [package, package2]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 2
Пример #4
0
async def test_utc_timestamp(hass):
    """Ensure package timestamp is converted correctly from HA-defined time zone to UTC."""
    package = Package(
        "456",
        206,
        "friendly name 1",
        "info text 1",
        "location 1",
        "2020-08-10 10:32",
        206,
        2,
        tz="Asia/Jakarta",
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)
    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1
    assert (
        str(
            hass.states.get("sensor.seventeentrack_package_456").attributes.get(
                "timestamp"
            )
        )
        == "2020-08-10 03:32:00+00:00"
    )
Пример #5
0
async def test_utc_timestamp(hass):
    """Ensure package timestamp is converted correctly from HA-defined time zone to UTC."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
        tz="Asia/Jakarta",
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)
    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1
    assert (
        str(
            hass.states.get("sensor.seventeentrack_package_456").attributes.get(
                "timestamp"
            )
        )
        == "2020-08-10 03:32:00+00:00"
    )
Пример #6
0
async def test_delivered_not_shown(hass):
    """Ensure delivered packages are not shown."""
    package = Package("456", 206, "friendly name 1", "info text 1",
                      "location 1", 206, 2, 40)
    ProfileMock.package_list = [package]

    hass.components.persistent_notification = mock.MagicMock()
    await _setup_seventeentrack(hass, VALID_CONFIG_FULL_NO_DELIVERED)
    assert not hass.states.async_entity_ids()
    hass.components.persistent_notification.create.assert_called()
Пример #7
0
async def test_becomes_delivered_not_shown_notification(hass):
    """Ensure notification is triggered when package becomes delivered."""
    package = Package("456", 206, "friendly name 1", "info text 1",
                      "location 1", 206, 2)
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass, VALID_CONFIG_FULL_NO_DELIVERED)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package_delivered = Package("456", 206, "friendly name 1", "info text 1",
                                "location 1", 206, 2, 40)
    ProfileMock.package_list = [package_delivered]

    hass.components.persistent_notification = mock.MagicMock()
    await _goto_future(hass)

    hass.components.persistent_notification.create.assert_called()
    assert not hass.states.async_entity_ids()
Пример #8
0
async def test_delivered_shown(hass):
    """Ensure delivered packages are show when user choose to show them."""
    package = Package("456", 206, "friendly name 1", "info text 1",
                      "location 1", 206, 2, 40)
    ProfileMock.package_list = [package]

    hass.components.persistent_notification = mock.MagicMock()
    await _setup_seventeentrack(hass, VALID_CONFIG_FULL)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1
    hass.components.persistent_notification.create.assert_not_called()
Пример #9
0
async def test_becomes_delivered_not_shown_notification(hass):
    """Ensure notification is triggered when package becomes delivered."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass, VALID_CONFIG_FULL_NO_DELIVERED)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package_delivered = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
        status=40,
    )
    ProfileMock.package_list = [package_delivered]

    with patch(
            "homeassistant.components.seventeentrack.sensor.persistent_notification"
    ) as persistent_notification_mock:
        await _goto_future(hass)

        persistent_notification_mock.create.assert_called()
        assert not hass.states.async_entity_ids()
Пример #10
0
async def test_remove_package(hass):
    """Ensure entity is not there anymore if package is not there."""
    package1 = Package("456", 206, "friendly name 1", "info text 1",
                       "location 1", 206, 2)
    package2 = Package("789", 206, "friendly name 2", "info text 2",
                       "location 2", 206, 2)

    ProfileMock.package_list = [package1, package2]

    await _setup_seventeentrack(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 2

    ProfileMock.package_list = [package2]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is None
    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 1
Пример #11
0
async def test_friendly_name_changed(hass):
    """Test friendly name change."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1

    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 2",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
    )
    ProfileMock.package_list = [package]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    entity = hass.data["entity_components"]["sensor"].get_entity(
        "sensor.seventeentrack_package_456"
    )
    assert entity.name == "Seventeentrack Package: friendly name 2"
    assert len(hass.states.async_entity_ids()) == 1
Пример #12
0
async def test_remove_package(hass):
    """Ensure entity is not there anymore if package is not there."""
    package1 = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
    )
    package2 = Package(
        tracking_number="789",
        destination_country=206,
        friendly_name="friendly name 2",
        info_text="info text 2",
        location="location 2",
        timestamp="2020-08-10 14:25",
        origin_country=206,
        package_type=2,
    )

    ProfileMock.package_list = [package1, package2]

    await _setup_seventeentrack(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 2

    ProfileMock.package_list = [package2]

    await _goto_future(hass)

    assert hass.states.get("sensor.seventeentrack_package_456") is None
    assert hass.states.get("sensor.seventeentrack_package_789") is not None
    assert len(hass.states.async_entity_ids()) == 1
Пример #13
0
async def test_delivered_not_shown(opp):
    """Ensure delivered packages are not shown."""
    package = Package(
        "456",
        206,
        "friendly name 1",
        "info text 1",
        "location 1",
        "2020-08-10 10:32",
        206,
        2,
        40,
    )
    ProfileMock.package_list = [package]

    opp.components.persistent_notification = MagicMock()
    await _setup_seventeentrack(opp, VALID_CONFIG_FULL_NO_DELIVERED)
    await _goto_future(opp)

    assert not opp.states.async_entity_ids()
    opp.components.persistent_notification.create.assert_called()
Пример #14
0
async def test_delivered_shown(hass):
    """Ensure delivered packages are show when user choose to show them."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
        status=40,
    )
    ProfileMock.package_list = [package]

    hass.components.persistent_notification = MagicMock()
    await _setup_seventeentrack(hass, VALID_CONFIG_FULL)

    assert hass.states.get("sensor.seventeentrack_package_456") is not None
    assert len(hass.states.async_entity_ids()) == 1
    hass.components.persistent_notification.create.assert_not_called()
Пример #15
0
async def test_delivered_not_shown(hass):
    """Ensure delivered packages are not shown."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
        status=40,
    )
    ProfileMock.package_list = [package]

    hass.components.persistent_notification = MagicMock()
    await _setup_seventeentrack(hass, VALID_CONFIG_FULL_NO_DELIVERED)
    await _goto_future(hass)

    assert not hass.states.async_entity_ids()
    hass.components.persistent_notification.create.assert_called()
Пример #16
0
async def test_summary_correctly_updated(hass):
    """Ensure summary entities are not duplicated."""
    package = Package(
        tracking_number="456",
        destination_country=206,
        friendly_name="friendly name 1",
        info_text="info text 1",
        location="location 1",
        timestamp="2020-08-10 10:32",
        origin_country=206,
        package_type=2,
        status=30,
    )
    ProfileMock.package_list = [package]

    await _setup_seventeentrack(hass, summary_data=DEFAULT_SUMMARY)

    assert len(hass.states.async_entity_ids()) == 8
    for state in hass.states.async_all():
        if state.entity_id == "sensor.seventeentrack_package_456":
            break
        assert state.state == "0"

    assert (len(
        hass.states.get("sensor.seventeentrack_packages_ready_to_be_picked_up"
                        ).attributes["packages"]) == 1)

    ProfileMock.package_list = []
    ProfileMock.summary_data = NEW_SUMMARY_DATA

    await _goto_future(hass)

    assert len(hass.states.async_entity_ids()) == 7
    for state in hass.states.async_all():
        assert state.state == "1"

    assert (
        hass.states.get("sensor.seventeentrack_packages_ready_to_be_picked_up"
                        ).attributes["packages"] is None)