Skip to content

Commit

Permalink
Merge pull request #20830 from code-dot-org/staging
Browse files Browse the repository at this point in the history
DTT (Staging > Test) [robo-dtt]
  • Loading branch information
deploy-code-org committed Feb 22, 2018
2 parents 92a2121 + 6e81554 commit 0f3b7d1
Show file tree
Hide file tree
Showing 14 changed files with 54 additions and 159 deletions.
1 change: 0 additions & 1 deletion apps/.eslintrc.js
Expand Up @@ -25,7 +25,6 @@ module.exports = {
"Flappy": true,
"Applab": true,
"Calc": true,
"Craft": true,
"Jigsaw": true,
"$": true,
"jQuery": true,
Expand Down
10 changes: 7 additions & 3 deletions apps/src/code-studio/initApp/project.js
Expand Up @@ -20,7 +20,7 @@ var channels = require('./clientApi').create('/v3/channels');

var showProjectAdmin = require('../showProjectAdmin');
var header = require('../header');
import {queryParams, hasQueryParam} from '../utils';
import {queryParams, hasQueryParam, updateQueryParam} from '../utils';

// Name of the packed source file
var SOURCE_FILE = 'main.json';
Expand Down Expand Up @@ -867,6 +867,7 @@ var projects = module.exports = {
'analysis-events',
{
study: 'project-data-integrity',
study_group: 'v2',
event: errorType,
data_int: errorCount,
project_id: current.id + '',
Expand All @@ -882,7 +883,8 @@ var projects = module.exports = {
shareUrl: this.getShareUrl(),
currentSourceVersionId: currentSourceVersionId,
}),
}
},
{includeUserId: true}
);
},
updateCurrentData_(err, data, options = {}) {
Expand Down Expand Up @@ -1294,15 +1296,17 @@ function fetchAbuseScoreAndPrivacyViolations(callback) {
}

/**
* Temporarily allow for setting Maker APIs enabled / disabled via URL parameters.
* Allow setting Maker APIs enabled / disabled via URL parameters.
*/
function setMakerAPIsStatusFromQueryParams() {
if (hasQueryParam('enableMaker')) {
currentSources.makerAPIsEnabled = true;
updateQueryParam('enableMaker', undefined, true);
}

if (hasQueryParam('disableMaker')) {
currentSources.makerAPIsEnabled = false;
updateQueryParam('disableMaker', undefined, true);
}
}

Expand Down
17 changes: 1 addition & 16 deletions apps/src/craft/designer/craft.js
Expand Up @@ -146,18 +146,6 @@ function trySetLocalStorageItem(key, value) {
}
}

Craft.onAssetsLoaded = () => {};

function ensureAssetsLoaded() {
return new Promise(resolve => {
if (Craft.assetsLoaded) {
resolve();
} else {
Craft.onAssetsLoaded = () => resolve();
}
});
}

/**
* Initialize Blockly and the Craft app. Called on page load.
*/
Expand Down Expand Up @@ -295,9 +283,6 @@ Craft.init = function (config) {
*/
earlyLoadAssetPacks: Craft.earlyLoadAssetsForLevel(config.level.puzzle_number),
afterAssetsLoaded: function () {
Craft.assetsLoaded = true;
Craft.onAssetsLoaded();

// preload music after essential game asset downloads completely finished
Craft.musicController.preload();
},
Expand Down Expand Up @@ -661,7 +646,7 @@ Craft.runButtonClick = function () {
Blockly.mainBlockSpace.traceOn(true);
studioApp().attempts++;

ensureAssetsLoaded().then(() => Craft.executeUserCode());
Craft.executeUserCode();

if (Craft.level.freePlay && !studioApp().hideSource) {
var finishBtnContainer = $('#right-button-cell');
Expand Down
13 changes: 9 additions & 4 deletions apps/src/gamelab/ErrorDialogStack.jsx
Expand Up @@ -10,6 +10,7 @@ import Button from '@cdo/apps/templates/Button';
import DialogFooter from '@cdo/apps/templates/teacherDashboard/DialogFooter';
import * as animationActions from './animationListModule';
import firehoseClient from '@cdo/apps/lib/util/firehose';
import {getCurrentId} from '../code-studio/initApp/project';

/**
* Renders error dialogs in sequence, given a stack of errors.
Expand All @@ -29,11 +30,13 @@ class ErrorDialogStack extends React.Component {
'analysis-events',
{
study: 'animation_no_load',
study_group: 'animation_no_load_v2',
study_group: 'animation_no_load_v3',
event: 'delete_selected',
project_id: getCurrentId(),
data_json: JSON.stringify({'version': this.props.animationList.propsByKey[key].version,
'animationName': this.props.animationList.propsByKey[key].name})
}
},
{includeUserId: true}
);
this.props.deleteAnimation(key);
this.props.dismissError();
Expand All @@ -45,11 +48,13 @@ class ErrorDialogStack extends React.Component {
'analysis-events',
{
study: 'animation_no_load',
study_group: 'animation_no_load_v2',
study_group: 'animation_no_load_v3',
event: 'reload_selected',
project_id: getCurrentId(),
data_json: JSON.stringify({'version': this.props.animationList.propsByKey[key].version,
'animationName': this.props.animationList.propsByKey[key].name})
}
},
{includeUserId: true}
);
location.reload();
}
Expand Down
18 changes: 10 additions & 8 deletions apps/src/gamelab/animationListModule.js
Expand Up @@ -14,7 +14,7 @@ import * as assetPrefix from '../assetManagement/assetPrefix';
import {selectAnimation} from './AnimationTab/animationTabModule';
import {reportError} from './errorDialogStackModule';
import {throwIfSerializedAnimationListIsInvalid} from './shapes';
import {projectChanged, isOwner} from '../code-studio/initApp/project';
import {projectChanged, isOwner, getCurrentId} from '../code-studio/initApp/project';
import firehoseClient from '@cdo/apps/lib/util/firehose';

// TODO: Overwrite version ID within session
Expand Down Expand Up @@ -568,13 +568,15 @@ function loadAnimationFromSource(key, callback) {
// Log data about when this scenario occurs
firehoseClient.putRecord(
'analysis-events',
{
study: 'animation_no_load',
study_group: 'animation_no_load_v2',
event: isOwner() ? 'animation_not_loaded_owner' : 'animation_not_loaded_viewer',
data_json: JSON.stringify({'sourceUrl': sourceUrl, 'version': state.propsByKey[key].version,
'animationName': state.propsByKey[key].name, 'error': err.message})
}
{
study: 'animation_no_load',
study_group: 'animation_no_load_v3',
event: isOwner() ? 'animation_not_loaded_owner' : 'animation_not_loaded_viewer',
project_id: getCurrentId(),
data_json: JSON.stringify({'sourceUrl': sourceUrl, 'version': state.propsByKey[key].version,
'animationName': state.propsByKey[key].name, 'error': err.message})
},
{includeUserId: true}
);

if (isOwner()) {
Expand Down
3 changes: 1 addition & 2 deletions apps/src/templates/MakerLanding.jsx
Expand Up @@ -2,7 +2,6 @@
import TopCourse from './studioHomepages/TopCourse';
import VerticalImageResourceCardRow from './VerticalImageResourceCardRow';
import shapes from './studioHomepages/shapes';
import {pegasus} from '@cdo/apps/lib/util/urlHelpers';
import i18n from '@cdo/locale';

const styles = {
Expand All @@ -26,7 +25,7 @@ export default class MakerLanding extends Component {
{
title: i18n.makerNewProjectTitle(),
description: i18n.makerNewProjectDesc(),
link: pegasus('/applab'),
link: '/projects/applab/new?enableMaker=true',
image: "applab-project",
buttonText: i18n.makerNewProjectButton()
},
Expand Down
65 changes: 0 additions & 65 deletions apps/test/integration/levelSolutions/craft/designer1.js

This file was deleted.

49 changes: 0 additions & 49 deletions apps/test/integration/levelSolutions/craft/designer2.js

This file was deleted.

5 changes: 0 additions & 5 deletions apps/test/integration/levelTests.js
Expand Up @@ -153,11 +153,6 @@ describe('Level tests', function () {
if (window.Calc) {
Calc.resetButtonClick();
}

if (window.Craft) {
Craft.assetsLoaded = false;
Craft.onAssetsLoaded = function () {};
}
});

testCollectionUtils.getCollections().forEach(runTestCollection);
Expand Down
1 change: 0 additions & 1 deletion dashboard/app/controllers/discourse_sso_controller.rb
Expand Up @@ -12,7 +12,6 @@ def sso
sso.external_id = current_user.id # from devise
sso.sso_secret = secret
sso.sso_url = CDO.discourse_sso_url
sso.add_groups = 'Verified-Teachers' if current_user.verified_teacher?

redirect_to sso.to_url(CDO.discourse_sso_url)
end
Expand Down
7 changes: 6 additions & 1 deletion dashboard/app/controllers/projects_controller.rb
Expand Up @@ -237,12 +237,17 @@ def create_new
return
end
return if redirect_under_13_without_tos_teacher(@level)
redirect_to action: 'edit', channel_id: ChannelToken.create_channel(
channel = ChannelToken.create_channel(
request.ip,
StorageApps.new(storage_id('user')),
data: initial_data,
type: params[:key]
)
redirect_to(
action: 'edit',
channel_id: channel,
enableMaker: params['enableMaker'] ? true : nil
)
end

private def initial_data
Expand Down
12 changes: 12 additions & 0 deletions dashboard/test/controllers/projects_controller_test.rb
Expand Up @@ -267,4 +267,16 @@ def sign_in_with_request(user)
get :featured
assert_redirected_to '/users/sign_in'
end

test '/applab/new creates a channel and redirects to /applab/<channel>/edit' do
get :create_new, params: {key: 'applab'}
assert_response :redirect
assert @response.headers['Location'].ends_with? '/edit'
end

test '/applab/new with enableMaker param preserves param in redirect' do
get :create_new, params: {key: 'applab', enableMaker: 'true'}
assert_response :redirect
assert @response.headers['Location'].ends_with? '/edit?enableMaker=true'
end
end
4 changes: 2 additions & 2 deletions shared/middleware/files_api.rb
Expand Up @@ -267,7 +267,7 @@ def put_file(endpoint, encrypted_channel_id, filename, body)
version_to_replace = params['version']
timestamp = params['firstSaveTimestamp']
tab_id = params['tabId']
buckets.check_current_version(encrypted_channel_id, filename, version_to_replace, timestamp, tab_id)
buckets.check_current_version(encrypted_channel_id, filename, version_to_replace, timestamp, tab_id, current_user_id)

response = buckets.create_or_replace(encrypted_channel_id, filename, body, version_to_replace)

Expand Down Expand Up @@ -472,7 +472,7 @@ def copy_file(endpoint, encrypted_channel_id, filename, source_filename)

not_authorized unless owns_channel?(encrypted_channel_id)

get_bucket_impl(endpoint).new.restore_previous_version(encrypted_channel_id, filename, request.GET['version']).to_json
get_bucket_impl(endpoint).new.restore_previous_version(encrypted_channel_id, filename, request.GET['version'], current_user_id).to_json
end

#
Expand Down

0 comments on commit 0f3b7d1

Please sign in to comment.