8000 Add initial test suite for arcam_fmj integration by elupus · Pull Request #29335 · home-assistant/core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Add initial test suite for arcam_fmj integration 10000 #29335

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Dec 3, 2019

Conversation

elupus
Copy link
Contributor
@elupus elupus commented Dec 3, 2019

Description:

Add an initial test suite for arcam_fmj integration.

Checklist:

  • The code change is tested and works locally.
  • Local tests pass with tox. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
  • Untested files have been added to .coveragerc.

If the code does not interact with devices:

  • Tests have been added to verify that the new code works.

@probot-home-assistant probot-home-assistant bot added has-tests small-pr PRs with less than 30 lines. labels Dec 3, 2019
@balloob balloob merged commit 26b63e7 into home-assistant:dev Dec 3, 2019
Copy link
Member
@MartinHjelmare MartinHjelmare left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please rewrite the tests to avoid interacting directly with the entity.


async def test_properties(player, state):
"""Test standard properties."""
assert player.unique_id is None
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't assert anything about the entity directly. We should always use a core representation of the entity state or its attributes. Normally this is the state of the entity in the state machine, in some cases we need to check the entity registry entry of the entity.

Writing the tests like this will make them more robust for changes in the platform.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll see if i can rewrite it. I somewhat disagree on the change thou. Now it's unit testing, if run it through core, it's integration testing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The unit testing isn't helpful since we only care about state consistency. The entity implementation should be able to change as long as the state remains the same.

def player_fixture(hass, state):
"""Get standard player."""
player = ArcamFmj(state, MOCK_NAME, None)
player.async_schedule_update_ha_state = Mock()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please set up the component and platform via core interfaces and let the platform add an entity. Use the device callback to trigger an entity update.

@lock lock bot locked and limited conversation to collaborators Dec 4, 2019
@elupus elupus deleted the arcam_test branch January 2, 2020 17:26
715E
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla-signed has-tests small-pr PRs with less than 30 lines.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0