Skip to content

Commit 26e6d16

Browse files
committed
IDE-192 fix BroadcastBrickMessagesUpdateTest
1 parent 397c66c commit 26e6d16

File tree

2 files changed

+183
-201
lines changed

2 files changed

+183
-201
lines changed

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/content/brick/app/BroadcastBrickMessageUpdateTest.java

-201
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
/*
2+
* Catroid: An on-device visual programming system for Android devices
3+
* Copyright (C) 2010-2023 The Catrobat Team
4+
* (<http://developer.catrobat.org/credits>)
5+
*
6+
* This program is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU Affero General Public License as
8+
* published by the Free Software Foundation, either version 3 of the
9+
* License, or (at your option) any later version.
10+
*
11+
* An additional term exception under section 7 of the GNU Affero
12+
* General Public License, version 3, is available at
13+
* http://developer.catrobat.org/license_additional_term
14+
*
15+
* This program is distributed in the hope that it will be useful,
16+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18+
* GNU Affero General Public License for more details.
19+
*
20+
* You should have received a copy of the GNU Affero General Public License
21+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22+
*/
23+
package org.catrobat.catroid.uiespresso.content.brick.app
24+
25+
import android.util.Log
26+
import androidx.test.ext.junit.runners.AndroidJUnit4
27+
import org.catrobat.catroid.ProjectManager
28+
import org.catrobat.catroid.R
29+
import org.catrobat.catroid.content.BroadcastScript
30+
import org.catrobat.catroid.content.Scene
31+
import org.catrobat.catroid.content.Script
32+
import org.catrobat.catroid.content.Sprite
33+
import org.catrobat.catroid.content.bricks.BroadcastBrick
34+
import org.catrobat.catroid.content.bricks.BroadcastReceiverBrick
35+
import org.catrobat.catroid.content.bricks.BroadcastWaitBrick
36+
import org.catrobat.catroid.test.utils.TestUtils
37+
import org.catrobat.catroid.ui.SpriteActivity
38+
import org.catrobat.catroid.uiespresso.content.brick.utils.BrickDataInteractionWrapper.onBrickAtPosition
39+
import org.catrobat.catroid.uiespresso.content.messagecontainer.BroadcastMessageBrickTestUtils.createNewBroadcastMessageOnBrick
40+
import org.catrobat.catroid.uiespresso.content.messagecontainer.BroadcastMessageBrickTestUtils.editBroadcastMessageOnBrick
41+
import org.catrobat.catroid.uiespresso.util.UiTestUtils
42+
import org.catrobat.catroid.uiespresso.util.UiTestUtils.Companion.getResourcesString
43+
import org.catrobat.catroid.uiespresso.util.rules.FragmentActivityTestRule
44+
import org.junit.After
45+
import org.junit.Before
46+
import org.junit.Rule
47+
import org.junit.Test
48+
import org.junit.runner.RunWith
49+
import org.koin.java.KoinJavaComponent.inject
50+
51+
@RunWith(AndroidJUnit4::class)
52+
class BroadcastBrickMessageUpdateTest {
53+
private val defaultMessage = "defaultMessage"
54+
private val editedMessage = "editedMessage"
55+
private val message = "newAddedMessage"
56+
private var secondScene: Scene? = null
57+
private var secondSprite: Sprite? = null
58+
private var firstBroadcastBrick: BroadcastReceiverBrick? = null
59+
private val projectManager by inject(ProjectManager::class.java)
60+
61+
@JvmField
62+
@Rule
63+
var baseActivityTestRule = FragmentActivityTestRule(
64+
SpriteActivity::class.java,
65+
SpriteActivity.EXTRA_FRAGMENT_POSITION,
66+
SpriteActivity.FRAGMENT_SCRIPTS
67+
)
68+
69+
@After
70+
fun tearDown() {
71+
TestUtils.deleteProjects(BroadcastBrickMessageUpdateTest::class.java.simpleName)
72+
}
73+
74+
@Before
75+
fun setUp() {
76+
createTestProjectWithBricks(BroadcastBrickMessageUpdateTest::class.java.simpleName)
77+
baseActivityTestRule.launchActivity()
78+
}
79+
80+
@Test
81+
fun testAllBroadcastBrickSpinnersContainTheNewAddedMessage() {
82+
createNewBroadcastMessageOnBrick(
83+
message, firstBroadcastBrick, baseActivityTestRule.activity
84+
)
85+
val spinnerValues = listOf(
86+
getResourcesString(R.string.new_option),
87+
getResourcesString(R.string.edit_option),
88+
defaultMessage,
89+
message
90+
)
91+
checkAllBrickSpinnerValues(spinnerValues)
92+
}
93+
94+
@Test
95+
fun testAllBroadcastBrickSpinnersContainTheEditedMessage() {
96+
editBroadcastMessageOnBrick(
97+
defaultMessage, editedMessage, firstBroadcastBrick, baseActivityTestRule.activity
98+
)
99+
val spinnerValues = listOf(
100+
getResourcesString(R.string.new_option),
101+
getResourcesString(R.string.edit_option),
102+
editedMessage
103+
)
104+
checkAllBrickSpinnerValues(spinnerValues)
105+
}
106+
107+
@Test
108+
fun testAllBroadcastBrickSpinnersShowTheEditedMessage() {
109+
editBroadcastMessageOnBrick(
110+
defaultMessage, editedMessage, firstBroadcastBrick, baseActivityTestRule.activity
111+
)
112+
checkShowsCorrectSpinnerMessage(editedMessage)
113+
}
114+
115+
@Test
116+
fun testEditingOccursOnlyInCurrentScene() {
117+
editBroadcastMessageOnBrick(
118+
defaultMessage, editedMessage, firstBroadcastBrick, baseActivityTestRule.activity
119+
)
120+
switchScene()
121+
checkShowsCorrectSpinnerMessage(defaultMessage)
122+
}
123+
124+
private fun checkAllBrickSpinnerValues(spinnerValues: List<String>) {
125+
onBrickAtPosition(1)
126+
.onSpinner(R.id.brick_broadcast_spinner)
127+
.checkNameableValuesAvailable(spinnerValues)
128+
onBrickAtPosition(2)
129+
.onSpinner(R.id.brick_broadcast_spinner)
130+
.checkNameableValuesAvailable(spinnerValues)
131+
onBrickAtPosition(3)
132+
.onSpinner(R.id.brick_broadcast_spinner)
133+
.checkNameableValuesAvailable(spinnerValues)
134+
onBrickAtPosition(4)
135+
.onSpinner(R.id.brick_broadcast_spinner)
136+
.checkNameableValuesAvailable(spinnerValues)
137+
onBrickAtPosition(5)
138+
.onSpinner(R.id.brick_broadcast_spinner)
139+
.checkNameableValuesAvailable(spinnerValues)
140+
}
141+
142+
private fun checkShowsCorrectSpinnerMessage(message: String) {
143+
onBrickAtPosition(1).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
144+
onBrickAtPosition(2).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
145+
onBrickAtPosition(3).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
146+
onBrickAtPosition(4).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
147+
onBrickAtPosition(5).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
148+
}
149+
150+
private fun switchScene() {
151+
baseActivityTestRule.finishActivity()
152+
projectManager.currentSprite = secondSprite
153+
projectManager.currentlyEditedScene = secondScene
154+
baseActivityTestRule.launchActivity()
155+
}
156+
157+
private fun createTestProjectWithBricks(projectName: String) {
158+
val project = UiTestUtils.createDefaultTestProject(projectName)
159+
val firstSprite = UiTestUtils.getDefaultTestSprite(project)
160+
secondSprite = Sprite("spriteScene2")
161+
162+
val script: Script = BroadcastScript(defaultMessage)
163+
firstBroadcastBrick = script.scriptBrick as BroadcastReceiverBrick
164+
165+
script.addBrick(BroadcastBrick(defaultMessage))
166+
script.addBrick(BroadcastWaitBrick(defaultMessage))
167+
firstSprite.addScript(script)
168+
169+
try {
170+
firstSprite.addScript(script.clone())
171+
secondSprite!!.addScript(script.clone())
172+
secondSprite!!.addScript(script.clone())
173+
} catch (e: CloneNotSupportedException) {
174+
Log.e(BroadcastBrickMessageUpdateTest::class.java.simpleName, e.message!!)
175+
}
176+
val firstScene = Scene("Scene1", project)
177+
secondScene = Scene("Scene2", project)
178+
secondScene!!.addSprite(secondSprite)
179+
180+
project.addScene(firstScene)
181+
project.addScene(secondScene)
182+
}
183+
}

0 commit comments

Comments
 (0)