Skip to content

Commit 45c504b

Browse files
committed
IDE-192 fix BroadcastBrickMessagesUpdateTest
1 parent 0d6ab0a commit 45c504b

File tree

2 files changed

+187
-207
lines changed

2 files changed

+187
-207
lines changed

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

-207
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
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.core.app.ApplicationProvider
27+
import androidx.test.ext.junit.runners.AndroidJUnit4
28+
import org.catrobat.catroid.ProjectManager
29+
import org.catrobat.catroid.R
30+
import org.catrobat.catroid.content.BroadcastScript
31+
import org.catrobat.catroid.content.Project
32+
import org.catrobat.catroid.content.Scene
33+
import org.catrobat.catroid.content.Script
34+
import org.catrobat.catroid.content.Sprite
35+
import org.catrobat.catroid.content.bricks.BroadcastBrick
36+
import org.catrobat.catroid.content.bricks.BroadcastReceiverBrick
37+
import org.catrobat.catroid.content.bricks.BroadcastWaitBrick
38+
import org.catrobat.catroid.test.utils.TestUtils
39+
import org.catrobat.catroid.ui.SpriteActivity
40+
import org.catrobat.catroid.uiespresso.content.brick.utils.BrickDataInteractionWrapper.onBrickAtPosition
41+
import org.catrobat.catroid.uiespresso.content.messagecontainer.BroadcastMessageBrickTestUtils
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+
BroadcastMessageBrickTestUtils.createNewBroadcastMessageOnBrick(
83+
message, firstBroadcastBrick,
84+
baseActivityTestRule.activity
85+
)
86+
val spinnerValues = listOf(
87+
getResourcesString(R.string.new_option),
88+
getResourcesString(R.string.edit_option),
89+
defaultMessage,
90+
message
91+
)
92+
checkAllBrickSpinnerValues(spinnerValues)
93+
}
94+
95+
@Test
96+
fun testAllBroadcastBrickSpinnersContainTheEditedMessage() {
97+
BroadcastMessageBrickTestUtils.editBroadcastMessageOnBrick(
98+
defaultMessage, editedMessage, firstBroadcastBrick,
99+
baseActivityTestRule.activity
100+
)
101+
val spinnerValues = listOf(
102+
getResourcesString(R.string.new_option),
103+
getResourcesString(R.string.edit_option),
104+
editedMessage
105+
)
106+
checkAllBrickSpinnerValues(spinnerValues)
107+
}
108+
109+
@Test
110+
fun testAllBroadcastBrickSpinnersShowTheEditedMessage() {
111+
BroadcastMessageBrickTestUtils.editBroadcastMessageOnBrick(
112+
defaultMessage, editedMessage, firstBroadcastBrick,
113+
baseActivityTestRule.activity
114+
)
115+
checkShowsCorrectSpinnerMessage(editedMessage)
116+
}
117+
118+
@Test
119+
fun testEditingOccursOnlyInCurrentScene() {
120+
BroadcastMessageBrickTestUtils.editBroadcastMessageOnBrick(
121+
defaultMessage, editedMessage, firstBroadcastBrick,
122+
baseActivityTestRule.activity
123+
)
124+
switchScene()
125+
checkShowsCorrectSpinnerMessage(defaultMessage)
126+
}
127+
128+
private fun checkAllBrickSpinnerValues(spinnerValues: List<String>) {
129+
onBrickAtPosition(1)
130+
.onSpinner(R.id.brick_broadcast_spinner)
131+
.checkNameableValuesAvailable(spinnerValues)
132+
onBrickAtPosition(2)
133+
.onSpinner(R.id.brick_broadcast_spinner)
134+
.checkNameableValuesAvailable(spinnerValues)
135+
onBrickAtPosition(3)
136+
.onSpinner(R.id.brick_broadcast_spinner)
137+
.checkNameableValuesAvailable(spinnerValues)
138+
onBrickAtPosition(4)
139+
.onSpinner(R.id.brick_broadcast_spinner)
140+
.checkNameableValuesAvailable(spinnerValues)
141+
onBrickAtPosition(5)
142+
.onSpinner(R.id.brick_broadcast_spinner)
143+
.checkNameableValuesAvailable(spinnerValues)
144+
}
145+
146+
private fun checkShowsCorrectSpinnerMessage(message: String) {
147+
onBrickAtPosition(1).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
148+
onBrickAtPosition(2).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
149+
onBrickAtPosition(3).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
150+
onBrickAtPosition(4).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
151+
onBrickAtPosition(5).onSpinner(R.id.brick_broadcast_spinner).checkShowsText(message)
152+
}
153+
154+
private fun switchScene() {
155+
baseActivityTestRule.finishActivity()
156+
projectManager.currentSprite = secondSprite
157+
projectManager.currentlyEditedScene = secondScene
158+
baseActivityTestRule.launchActivity()
159+
}
160+
161+
private fun createTestProjectWithBricks(projectName: String) {
162+
val project = Project(ApplicationProvider.getApplicationContext(), projectName)
163+
val firstSprite = Sprite("spriteScene1")
164+
secondSprite = Sprite("spriteScene2")
165+
val script: Script = BroadcastScript(defaultMessage)
166+
firstBroadcastBrick = script.scriptBrick as BroadcastReceiverBrick
167+
script.addBrick(BroadcastBrick(defaultMessage))
168+
script.addBrick(BroadcastWaitBrick(defaultMessage))
169+
firstSprite.addScript(script)
170+
try {
171+
firstSprite.addScript(script.clone())
172+
secondSprite!!.addScript(script.clone())
173+
secondSprite!!.addScript(script.clone())
174+
} catch (e: CloneNotSupportedException) {
175+
Log.e(BroadcastBrickMessageUpdateTest::class.java.simpleName, e.message!!)
176+
}
177+
val firstScene = Scene("Scene1", project)
178+
secondScene = Scene("Scene2", project)
179+
firstScene.addSprite(firstSprite)
180+
secondScene!!.addSprite(secondSprite)
181+
project.addScene(firstScene)
182+
project.addScene(secondScene)
183+
projectManager.currentProject = project
184+
projectManager.currentSprite = firstSprite
185+
projectManager.currentlyEditedScene = firstScene
186+
}
187+
}

0 commit comments

Comments
 (0)