MixinRegistryTest.kt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Nextcloud - Android Client
  3. *
  4. * SPDX-FileCopyrightText: 2020 Chris Narkiewicz <hello@ezaquarii.com>
  5. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH
  6. * SPDX-License-Identifier: AGPL-3.0-or-later
  7. */
  8. package com.nextcloud.client.mixins
  9. import android.os.Bundle
  10. import org.junit.Test
  11. import org.mockito.Mockito
  12. import org.mockito.kotlin.mock
  13. import org.mockito.kotlin.same
  14. class MixinRegistryTest {
  15. @Test
  16. fun `callbacks are invoked in order of calls and mixin registration`() {
  17. // GIVEN
  18. // registry has 2 mixins registered
  19. val registry = MixinRegistry()
  20. val firstMixin = mock<ActivityMixin>()
  21. val secondMixin = mock<ActivityMixin>()
  22. registry.add(firstMixin, secondMixin)
  23. // WHEN
  24. // all lifecycle callbacks are invoked
  25. val bundle = mock<Bundle>()
  26. registry.onCreate(bundle)
  27. registry.onStart()
  28. registry.onResume()
  29. registry.onPause()
  30. registry.onStop()
  31. registry.onDestroy()
  32. // THEN
  33. // callbacks are invoked in order of mixin registration
  34. // callbacks are invoked in order of registry calls
  35. Mockito.inOrder(firstMixin, secondMixin).apply {
  36. verify(firstMixin).onCreate(same(bundle))
  37. verify(secondMixin).onCreate(same(bundle))
  38. verify(firstMixin).onStart()
  39. verify(secondMixin).onStart()
  40. verify(firstMixin).onResume()
  41. verify(secondMixin).onResume()
  42. verify(firstMixin).onPause()
  43. verify(secondMixin).onPause()
  44. verify(firstMixin).onStop()
  45. verify(secondMixin).onStop()
  46. verify(firstMixin).onDestroy()
  47. verify(secondMixin).onDestroy()
  48. }
  49. }
  50. }