Skip to content

Commit d4a496e

Browse files
committed
test: add basic blocks to ruby
1 parent 4d33a0e commit d4a496e

File tree

11 files changed

+526
-5
lines changed

11 files changed

+526
-5
lines changed

test/helpers/selenium-helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const IS_ROOT_USER = process.getuid() === 0;
1414
// The main reason for this timeout is so that we can control the timeout message and report details;
1515
// if we hit the Jasmine default timeout then we get a terse message that we can't control.
1616
// The Jasmine default timeout is 30 seconds so make sure this is lower.
17-
const DEFAULT_TIMEOUT_MILLISECONDS = 30 * 1000;
17+
const DEFAULT_TIMEOUT_MILLISECONDS = 20 * 1000;
1818

1919
class SeleniumHelper {
2020
constructor () {

test/integration/removed-trademarks.test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ describe('Removed trademarks (ex: Scratch Cat)', () => {
3939
test('Removed trademark sprites', async () => {
4040
await loadUri(uri);
4141
await clickXpath('//button[@aria-label="Choose a Sprite"]');
42+
await driver.sleep(5000);
4243
const searchElement = await findByXpath("//input[@placeholder='Search']");
4344

4445
for (const name of trademarkNames) {
4546
searchElement.clear();
46-
await driver.sleep(250);
47+
await driver.sleep(500);
4748
await searchElement.sendKeys(name);
4849
await driver.sleep(500);
4950
expect(await notExistsByXpath(`//*[span[text()="${name}"]]`)).toBeTruthy();
@@ -57,11 +58,12 @@ describe('Removed trademarks (ex: Scratch Cat)', () => {
5758
await loadUri(uri);
5859
await clickText('Costumes');
5960
await clickXpath('//button[@aria-label="Choose a Costume"]');
61+
await driver.sleep(5000);
6062
const searchElement = await findByXpath("//input[@placeholder='Search']");
6163

6264
for (const name of trademarkNames) {
6365
searchElement.clear();
64-
await driver.sleep(250);
66+
await driver.sleep(500);
6567
const costumePrefix = `${name}-`;
6668
await searchElement.sendKeys(costumePrefix);
6769
await driver.sleep(500);
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import dedent from 'dedent';
2+
import SeleniumHelper from '../../helpers/selenium-helper';
3+
import RubyHelper from '../../helpers/ruby-helper';
4+
5+
const seleniumHelper = new SeleniumHelper();
6+
const {
7+
clickText,
8+
clickXpath,
9+
scope,
10+
getDriver,
11+
loadUri,
12+
urlFor
13+
} = seleniumHelper;
14+
15+
const rubyHelper = new RubyHelper(seleniumHelper);
16+
const {
17+
expectInterconvertBetweenCodeAndRuby
18+
} = rubyHelper;
19+
20+
let driver;
21+
22+
describe('Ruby Tab: Control category blocks', () => {
23+
beforeAll(() => {
24+
driver = getDriver();
25+
});
26+
27+
afterAll(async () => {
28+
await driver.quit();
29+
});
30+
31+
test('Ruby -> Code -> Ruby', async () => {
32+
await loadUri(urlFor('/'));
33+
await clickXpath('//button[@aria-label="Choose a Sprite"]');
34+
await clickText('Abby', scope.modal);
35+
await clickText('Sprite1', scope.spriteItems);
36+
37+
const code = dedent`
38+
sleep(1)
39+
10.times do
40+
end
41+
loop do
42+
end
43+
44+
if false
45+
end
46+
if false
47+
else
48+
end
49+
wait until false
50+
until false
51+
end
52+
stop("all")
53+
54+
stop("this script")
55+
56+
stop("other scripts in sprite")
57+
58+
self.when(:start_as_a_clone) do
59+
end
60+
61+
create_clone("_myself_")
62+
create_clone("Abby")
63+
delete_this_clone
64+
`;
65+
await expectInterconvertBetweenCodeAndRuby(code);
66+
});
67+
});

test/integration/ruby-tab/event.test.js renamed to test/integration/ruby-tab/events.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const {
1616

1717
let driver;
1818

19-
describe('Ruby Tab: event category blocks', () => {
19+
describe('Ruby Tab: Events category blocks', () => {
2020
beforeAll(() => {
2121
driver = getDriver();
2222
});
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import dedent from 'dedent';
2+
import SeleniumHelper from '../../helpers/selenium-helper';
3+
import RubyHelper from '../../helpers/ruby-helper';
4+
5+
const seleniumHelper = new SeleniumHelper();
6+
const {
7+
getDriver,
8+
loadUri,
9+
urlFor
10+
} = seleniumHelper;
11+
12+
const rubyHelper = new RubyHelper(seleniumHelper);
13+
const {
14+
expectInterconvertBetweenCodeAndRuby
15+
} = rubyHelper;
16+
17+
let driver;
18+
19+
describe('Ruby Tab: Looks category blocks', () => {
20+
beforeAll(() => {
21+
driver = getDriver();
22+
});
23+
24+
afterAll(async () => {
25+
await driver.quit();
26+
});
27+
28+
test('Ruby -> Code -> Ruby', async () => {
29+
await loadUri(urlFor('/'));
30+
31+
const code = dedent`
32+
say("Hello!", 2)
33+
say("Hello!")
34+
think("Hmm...", 2)
35+
think("Hmm...")
36+
switch_costume("costume1")
37+
next_costume
38+
switch_backdrop("backdrop1")
39+
switch_backdrop("next backdrop")
40+
switch_backdrop("previous backdrop")
41+
switch_backdrop("random backdrop")
42+
next_backdrop
43+
self.size += 10
44+
self.size = 100
45+
change_effect_by("color", 25)
46+
change_effect_by("fisheye", 25)
47+
change_effect_by("whirl", 25)
48+
change_effect_by("pixelate", 25)
49+
change_effect_by("mosaic", 25)
50+
change_effect_by("brightness", 25)
51+
change_effect_by("ghost", 25)
52+
set_effect("color", 0)
53+
clear_graphic_effects
54+
show
55+
hide
56+
go_to_layer("front")
57+
go_to_layer("back")
58+
go_layers(1, "forward")
59+
go_layers(1, "backward")
60+
61+
costume_number
62+
63+
costume_name
64+
65+
backdrop_number
66+
67+
backdrop_name
68+
69+
size
70+
`;
71+
await expectInterconvertBetweenCodeAndRuby(code);
72+
});
73+
});

test/integration/ruby-tab/motion.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const {
1919

2020
let driver;
2121

22-
describe('Ruby Tab: motion category blocks', () => {
22+
describe('Ruby Tab: Motion category blocks', () => {
2323
beforeAll(() => {
2424
driver = getDriver();
2525
});
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import dedent from 'dedent';
2+
import SeleniumHelper from '../../helpers/selenium-helper';
3+
import RubyHelper from '../../helpers/ruby-helper';
4+
5+
const seleniumHelper = new SeleniumHelper();
6+
const {
7+
getDriver,
8+
loadUri,
9+
urlFor
10+
} = seleniumHelper;
11+
12+
const rubyHelper = new RubyHelper(seleniumHelper);
13+
const {
14+
expectInterconvertBetweenCodeAndRuby
15+
} = rubyHelper;
16+
17+
let driver;
18+
19+
describe('Ruby Tab: My Blocks category blocks', () => {
20+
beforeAll(() => {
21+
driver = getDriver();
22+
});
23+
24+
afterAll(async () => {
25+
await driver.quit();
26+
});
27+
28+
test('Ruby -> Code -> Ruby', async () => {
29+
await loadUri(urlFor('/'));
30+
31+
const code = dedent`
32+
def self.block_name
33+
end
34+
35+
block_name
36+
`;
37+
await expectInterconvertBetweenCodeAndRuby(code);
38+
});
39+
});
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import dedent from 'dedent';
2+
import SeleniumHelper from '../../helpers/selenium-helper';
3+
import RubyHelper from '../../helpers/ruby-helper';
4+
5+
const seleniumHelper = new SeleniumHelper();
6+
const {
7+
getDriver,
8+
loadUri,
9+
urlFor
10+
} = seleniumHelper;
11+
12+
const rubyHelper = new RubyHelper(seleniumHelper);
13+
const {
14+
expectInterconvertBetweenCodeAndRuby
15+
} = rubyHelper;
16+
17+
let driver;
18+
19+
describe('Ruby Tab: Operators category blocks', () => {
20+
beforeAll(() => {
21+
driver = getDriver();
22+
});
23+
24+
afterAll(async () => {
25+
await driver.quit();
26+
});
27+
28+
test('Ruby -> Code -> Ruby', async () => {
29+
await loadUri(urlFor('/'));
30+
31+
const code = dedent`
32+
0 + 0
33+
34+
0 - 0
35+
36+
0 * 0
37+
38+
0 / 0.0
39+
40+
rand(1..10)
41+
42+
"" > 50
43+
44+
"" < 50
45+
46+
"" == 50
47+
48+
false && false
49+
50+
false || false
51+
52+
!false
53+
54+
"apple " + "banana"
55+
56+
"apple"[0]
57+
58+
"apple".length
59+
60+
"apple".include?("a")
61+
62+
0 % 0
63+
64+
0.round
65+
66+
0.abs
67+
68+
0.floor
69+
70+
0.ceil
71+
72+
Math.sqrt(0)
73+
74+
Math.sin(0)
75+
76+
Math.cos(0)
77+
78+
Math.tan(0)
79+
80+
Math.asin(0)
81+
82+
Math.acos(0)
83+
84+
Math.atan(0)
85+
86+
Math.log(0)
87+
88+
Math.log10(0)
89+
90+
Math::E ** 0
91+
92+
10 ** 0
93+
`;
94+
await expectInterconvertBetweenCodeAndRuby(code);
95+
});
96+
});

0 commit comments

Comments
 (0)