Skip to content

Commit bdfc219

Browse files
committed
Merge remote-tracking branch 'origin/DEVOPS-837' into DEVOPS-837
2 parents d56f9c8 + 9aafacb commit bdfc219

20 files changed

Lines changed: 228 additions & 82 deletions

File tree

catroid/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,7 @@ dependencies {
379379

380380

381381

382+
implementation "org.mockito:mockito-core:$mockitoVersion"
382383
implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
383384

384385
implementation ('com.opencsv:opencsv:5.0') {
@@ -436,7 +437,6 @@ dependencies {
436437
implementation "androidx.webkit:webkit:1.2.0"
437438

438439
// Pocket Music
439-
implementation 'com.github.pdrogfer:MidiDroid:1.1'
440440
implementation 'com.github.billthefarmer:mididriver:v1.16'
441441

442442
// CameraX

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ConnectBluetoothDeviceActivityTest.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
3333
import androidx.test.espresso.matcher.ViewMatchers.withId
3434
import androidx.test.espresso.matcher.ViewMatchers.withText
3535
import androidx.test.ext.junit.runners.AndroidJUnit4
36+
import org.catrobat.catroid.ui.ConnectBluetoothDeviceTestActivity
3637
import org.catrobat.catroid.R
37-
import org.catrobat.catroid.bluetooth.ConnectBluetoothDeviceActivity
3838
import org.catrobat.catroid.bluetooth.ConnectBluetoothDeviceActivity.DEVICE_TO_CONNECT
3939
import org.catrobat.catroid.bluetooth.base.BluetoothDevice.MULTIPLAYER
4040
import org.catrobat.catroid.common.SharedPreferenceKeys.SHOW_MULTIPLAYER_BLUETOOTH_DIALOG_KEY
@@ -119,9 +119,4 @@ class ConnectBluetoothDeviceActivityTest {
119119
.perform(click())
120120
.check(matches(withDrawable(R.drawable.ic_close)))
121121
}
122-
123-
class ConnectBluetoothDeviceTestActivity : ConnectBluetoothDeviceActivity() {
124-
override fun initBluetooth() = Unit
125-
override fun doDiscovery() = Unit
126-
}
127122
}

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/activity/ProjectUploadDialogTest.kt

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ import org.catrobat.catroid.content.Scene
4848
import org.catrobat.catroid.io.asynctask.saveProjectSerial
4949
import org.catrobat.catroid.ui.NUMBER_OF_UPLOADED_PROJECTS
5050
import org.catrobat.catroid.ui.PROJECT_DIR
51-
import org.catrobat.catroid.ui.ProjectUploadActivity
52-
import org.catrobat.catroid.ui.controller.ProjectUploadController
51+
import org.catrobat.catroid.ui.ProjectUploadTestActivity
5352
import org.catrobat.catroid.uiespresso.util.UiTestUtils
5453
import org.catrobat.catroid.uiespresso.util.rules.BaseActivityTestRule
5554
import org.junit.Assert.assertFalse
@@ -58,7 +57,6 @@ import org.junit.Rule
5857
import org.junit.Test
5958
import org.junit.runner.RunWith
6059
import org.mockito.Mockito
61-
import org.mockito.Mockito.spy
6260
import org.mockito.Mockito.verify
6361

6462
@RunWith(AndroidJUnit4::class)
@@ -237,17 +235,4 @@ class ProjectUploadDialogTest {
237235
val checkKeyboardCommand = "dumpsys input_method | grep mInputShown"
238236
return UiDevice.getInstance(getInstrumentation()).executeShellCommand(checkKeyboardCommand).contains("mInputShown=true")
239237
}
240-
241-
class ProjectUploadTestActivity : ProjectUploadActivity() {
242-
override fun createProjectUploadController(): ProjectUploadController? {
243-
projectUploadController = spy(ProjectUploadController(this))
244-
return projectUploadController
245-
}
246-
247-
override fun verifyUserIdentity() {
248-
onTokenCheckComplete(true, false)
249-
}
250-
251-
fun projectUploadController(): ProjectUploadController? = projectUploadController
252-
}
253238
}

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/dialog/ReplaceApiKeyDialogTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.catrobat.catroid.content.Sprite;
4141
import org.catrobat.catroid.content.StartScript;
4242
import org.catrobat.catroid.content.bricks.BackgroundRequestBrick;
43-
import org.catrobat.catroid.uiespresso.ui.activity.ProjectUploadDialogTest;
43+
import org.catrobat.catroid.ui.ProjectUploadTestActivity;
4444
import org.catrobat.catroid.uiespresso.util.rules.BaseActivityTestRule;
4545
import org.junit.After;
4646
import org.junit.Before;
@@ -68,8 +68,8 @@ public class ReplaceApiKeyDialogTest {
6868
private static final String TAG = ReplaceApiKeyDialogTest.class.getSimpleName();
6969

7070
@Rule
71-
public BaseActivityTestRule<ProjectUploadDialogTest.ProjectUploadTestActivity> activityTestRule =
72-
new BaseActivityTestRule<>(ProjectUploadDialogTest.ProjectUploadTestActivity.class, false, false);
71+
public BaseActivityTestRule<ProjectUploadTestActivity> activityTestRule =
72+
new BaseActivityTestRule<>(ProjectUploadTestActivity.class, false, false);
7373

7474
private int bufferedPrivacyPolicyPreferenceSetting;
7575

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/dialog/ReuploadProjectDialogTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import org.catrobat.catroid.formulaeditor.UserVariable
3939
import org.catrobat.catroid.io.XstreamSerializer
4040
import org.catrobat.catroid.io.asynctask.saveProjectSerial
4141
import org.catrobat.catroid.ui.PROJECT_DIR
42-
import org.catrobat.catroid.uiespresso.ui.activity.ProjectUploadDialogTest.ProjectUploadTestActivity
42+
import org.catrobat.catroid.ui.ProjectUploadTestActivity
4343
import org.catrobat.catroid.uiespresso.util.rules.BaseActivityTestRule
4444
import org.junit.After
4545
import org.junit.Rule

catroid/src/androidTest/java/org/catrobat/catroid/uiespresso/ui/fragment/CopyBrickTest.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import static androidx.test.espresso.matcher.ViewMatchers.isChecked;
6464
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
6565
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
66+
import static androidx.test.espresso.matcher.ViewMatchers.isNotChecked;
6667
import static androidx.test.espresso.matcher.ViewMatchers.withId;
6768
import static androidx.test.espresso.matcher.ViewMatchers.withText;
6869

@@ -129,7 +130,74 @@ public void testSelectWholeScript() {
129130
.check(matches(not(isChecked())));
130131
}
131132
}
133+
@Test
134+
public void testSelectWholeScriptByClickingOnTheBrick() {
135+
openContextualActionModeOverflowMenu();
136+
onView(withText(R.string.copy)).perform(click());
137+
138+
int brickIndex = 0;
139+
onBrickAtPosition(brickIndex).performClick();
132140

141+
getCheckbox(brickIndex).check(matches(isChecked()));
142+
143+
for (brickIndex++; brickIndex <= firstScriptEndIndex; brickIndex++) {
144+
getCheckbox(brickIndex)
145+
.check(matches(not(isEnabled())))
146+
.check(matches(isChecked()));
147+
}
148+
for (; brickIndex <= secondScriptEndIndex; brickIndex++) {
149+
getCheckbox(brickIndex)
150+
.check(matches(not(isEnabled())))
151+
.check(matches(not(isChecked())));
152+
}
153+
}
154+
@Test
155+
public void testIfCheckboxSetAfterClickingOnBrick() {
156+
openContextualActionModeOverflowMenu();
157+
onView(withText(R.string.copy)).perform(click());
158+
159+
int brickIndex = 0;
160+
onBrickAtPosition(brickIndex).performClick();
161+
getCheckbox(brickIndex).check(matches(isChecked()));
162+
onBrickAtPosition(brickIndex).performClick();
163+
getCheckbox(brickIndex).check(matches(isNotChecked()));
164+
165+
for (++brickIndex; brickIndex <= firstScriptEndIndex; brickIndex++) {
166+
if (brickIndex == 3) {
167+
onBrickAtPosition(brickIndex).performClick();
168+
getCheckbox(brickIndex).check(matches(isChecked()));
169+
onBrickAtPosition(brickIndex - 2).performClick();
170+
getCheckbox(brickIndex).check(matches(isNotChecked()));
171+
continue;
172+
}
173+
onBrickAtPosition(brickIndex).performClick();
174+
getCheckbox(brickIndex).check(matches(isChecked()));
175+
onBrickAtPosition(brickIndex).performClick();
176+
getCheckbox(brickIndex).check(matches(isNotChecked()));
177+
}
178+
}
179+
@Test
180+
public void testIfDisabledBricksNotClickable() {
181+
openContextualActionModeOverflowMenu();
182+
onView(withText(R.string.copy)).perform(click());
183+
184+
int brickIndex = 0;
185+
onBrickAtPosition(brickIndex).performClick();
186+
187+
getCheckbox(brickIndex).check(matches(isChecked()));
188+
189+
for (++brickIndex; brickIndex <= firstScriptEndIndex; brickIndex++) {
190+
getCheckbox(brickIndex).check(matches(not(isEnabled())))
191+
.check(matches(isChecked()));
192+
}
193+
194+
brickIndex = 0;
195+
for (++brickIndex; brickIndex <= firstScriptEndIndex; brickIndex++) {
196+
onBrickAtPosition(brickIndex).performClick();
197+
getCheckbox(brickIndex).check(matches(not(isEnabled())))
198+
.check(matches(isChecked()));
199+
}
200+
}
133201
@Test
134202
public void testSelectSingleBrick() {
135203
openContextualActionModeOverflowMenu();

catroid/src/createAtSchool/java/org/catrobat/catroid/common/FlavoredConstants.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ public final class FlavoredConstants {
5353

5454
// Media Library:
5555
public static final String LIBRARY_BASE_URL = MAIN_URL_HTTPS + "/app/download-media/";
56-
public static final String LIBRARY_LOOKS_URL = BASE_URL_HTTPS + "media-library/looks";
57-
public static final String LIBRARY_OBJECT_URL = BASE_URL_HTTPS + "media-library/objects";
58-
public static final String LIBRARY_BACKGROUNDS_URL_PORTRAIT = BASE_URL_HTTPS + "media-library/backgrounds-portrait";
59-
public static final String LIBRARY_BACKGROUNDS_URL_LANDSCAPE = BASE_URL_HTTPS + "media-library/backgrounds-landscape";
60-
public static final String LIBRARY_SOUNDS_URL = BASE_URL_HTTPS + "media-library/sounds";
61-
public static final String PRIVACY_POLICY_URL = "https://catrob.at/createatschoolprivacy";
56+
public static final String CATROBAT_BASE_URL = "https://catrobat.org/";
57+
public static final String CATROBAT_CONTENT_DOWNLOAD_URL = CATROBAT_BASE_URL + "wp-content/";
58+
public static final String CATROBAT_CONTENT_LOOKS_URL = CATROBAT_BASE_URL + "figures-download/";
59+
public static final String CATROBAT_CONTENT_SOUNDS_URL = CATROBAT_BASE_URL + "sounds-download/";
60+
public static final String CATROBAT_CONTENT_BACKGROUNDS_URL = CATROBAT_BASE_URL + "backgrounds-download/";
61+
public static final String PRIVACY_POLICY_URL = "https://catrob.at/privacypolicy";
6262

6363
private FlavoredConstants() {
6464
throw new AssertionError("No.");

catroid/src/debug/AndroidManifest.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,11 @@
9191
tools:replace="android:label,android:allowBackup,android:name"
9292
android:usesCleartextTraffic="true">
9393

94+
<activity
95+
android:name=".ui.ConnectBluetoothDeviceTestActivity" />
96+
97+
<activity
98+
android:name=".ui.ProjectUploadTestActivity" />
9499
<!--
95100
<activity
96101
android:name=".ui.SettingsActivity"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Catroid: An on-device visual programming system for Android devices
3+
* Copyright (C) 2010-2024 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.ui
24+
25+
import org.catrobat.catroid.bluetooth.ConnectBluetoothDeviceActivity
26+
27+
class ConnectBluetoothDeviceTestActivity : ConnectBluetoothDeviceActivity() {
28+
override fun initBluetooth() = Unit
29+
override fun doDiscovery() = Unit
30+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Catroid: An on-device visual programming system for Android devices
3+
* Copyright (C) 2010-2024 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+
24+
package org.catrobat.catroid.ui
25+
26+
import org.catrobat.catroid.ui.controller.ProjectUploadController
27+
import org.mockito.Mockito.spy
28+
29+
class ProjectUploadTestActivity : ProjectUploadActivity() {
30+
override fun createProjectUploadController(): ProjectUploadController? {
31+
projectUploadController = spy(ProjectUploadController(this))
32+
return projectUploadController
33+
}
34+
35+
override fun verifyUserIdentity() {
36+
onTokenCheckComplete(true, false)
37+
}
38+
39+
fun projectUploadController(): ProjectUploadController? = projectUploadController
40+
}

0 commit comments

Comments
 (0)