diff --git a/.bowerrc b/.bowerrc index bf0179d8..1154af7d 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,3 +1,5 @@ { - "cwd": "public/" -} + "cwd": "public/", + "proxy" : "http://tkyproxy.intra.tis.co.jp:8080", + "https-proxy" : "http://tkyproxy.intra.tis.co.jp:8080" +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index d92667c8..5f626d19 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -33,6 +33,7 @@ var tasks = [ tasks.forEach(function(task) { var stage = path.join('public', task.id); + stage = stage.replace('-', ''); var js = path.join(stage, '**/*.js'); var css = path.join(stage, '**/*.css'); diff --git a/public/bower.json b/public/bower.json index 943413aa..c03a0235 100644 --- a/public/bower.json +++ b/public/bower.json @@ -26,6 +26,7 @@ "chai-jquery": "~2.0.0", "jquery": "~2.1.3", "fetch": "~0.7.0", - "github-fork-ribbon-css": "~0.1.1" + "github-fork-ribbon-css": "~0.1.1", + "Buttons": "^2.0.0" } } diff --git a/public/stage1/tests.js b/public/stage1/tests.js index 46f1ed45..857be081 100644 --- a/public/stage1/tests.js +++ b/public/stage1/tests.js @@ -12,7 +12,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 'change me!' を document.getElementById(elementId) に // 書き換え、ブラウザをリロードしてみてください。 var elementId = 'firebrick'; - var element = 'change me!'; + var element = document.getElementById(elementId); expect(element).to.be.instanceof(HTMLElement); expect(element).to.have.property('id', elementId); @@ -27,7 +27,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 'change me!' を書き換えてください。 var elementId = 'chocolate'; - var element = 'change me!'; + var element = document.getElementById(elementId); expect(element).to.be.instanceof(HTMLElement); expect(element).to.have.property('id', elementId); @@ -41,7 +41,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 'change me!' を書き換えてください。 var elementClassName = 'mediumseagreen'; - var elements = 'change me!'; + var elements = document.getElementsByClassName(elementClassName); expect(elements).to.have.length(1); expect(elements[0]).to.have.property('className', elementClassName); @@ -55,7 +55,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 'change me!' を書き換えてください。 var elementClassName = 'turquoise'; - var elements = 'change me!'; + var elements = document.getElementsByClassName(elementClassName); expect(elements).to.have.length(2); expect(elements[0]).to.have.property('className', elementClassName); @@ -70,7 +70,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 'change me!' を書き換えてください。 var elementTagName = 'blockquote'; - var elements = 'change me!'; + var elements = document.getElementsByTagName(elementTagName); expect(elements).to.have.length(1); expect(elements[0]).to.have.property('tagName', elementTagName.toUpperCase()); @@ -93,7 +93,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // すると、開発ツール上で
  • ... が選択されます。 // このことから、7 番の赤色の要素の ID は brown だということがわかります。 // では、'change me!' を document.getElementById('brown') に書き換えてみましょう。 - var element = 'change me!'; + var element = document.getElementById('brown'); expect(element).to.have.property(secret('vq'), secret('oebja')); }); @@ -102,7 +102,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('8 番の橙色の要素が1つ取得できる', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.getElementById('darkorange'); expect(element).to.have.property(secret('vq'), secret('qnexbenatr')); }); @@ -111,7 +111,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('9 番の緑色の要素が1つ取得できる', function() { // 'change me!' を書き換えてください。 - var elements = 'change me!'; + var elements = document.getElementsByClassName('limegreen'); expect(elements).to.have.length(1); expect(elements[0]).to.have.property(secret('pynffAnzr'), secret('yvzrterra')); @@ -121,7 +121,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('10 番の水色の要素が2つ取得できる', function() { // 'change me!' を書き換えてください。 - var elements = 'change me!'; + var elements = document.getElementsByClassName('mediumturquoise'); expect(elements).to.have.length(2); expect(elements[0]).to.have.property(secret('pynffAnzr'), secret('zrqvhzghedhbvfr')); @@ -135,7 +135,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // // なお、11 番の青色の要素は li 要素ではありません! // よくみると、色がついているのはさらに内側の要素のようです。 - var elements = 'change me!'; + var elements = document.getElementsByTagName('p'); expect(elements).to.have.length(1); expect(elements[0]).to.have.property(secret('gntAnzr'), secret('C')); @@ -152,7 +152,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // // 'change me!' を document.querySelector('#firebrick') に // 書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('#firebrick'); expect(element).to.have.property(secret('vq'), secret('sveroevpx')); @@ -164,7 +164,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('2 番の橙色の要素を querySelector を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('#chocolate'); expect(element).to.have.property(secret('vq'), secret('pubpbyngr')); @@ -176,7 +176,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('3 番の緑色の要素を querySelector を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('li.mediumseagreen'); expect(element).to.have.property(secret('pynffAnzr'), secret('zrqvhzfrnterra')); }); @@ -185,7 +185,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('4 番の水色の要素を querySelectorAll を使って2つ取得できる', function() { // 'change me!' を書き換えてください。 - var elements = 'change me!'; + var elements = document.querySelectorAll('li.turquoise'); expect(elements).to.have.length(2); expect(elements[0]).to.have.property(secret('pynffAnzr'), secret('ghedhbvfr')); @@ -196,7 +196,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('5 番の青色の要素を querySelector を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('blockquote'); expect(element).to.have.property(secret('gntAnzr'), secret('OYBPXDHBGR')); }); @@ -205,7 +205,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('6 番の紫色の要素を querySelector を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('[data-js-training]'); expect(element).to.have.deep.property(secret('qngnfrg.wfGenvavat'), secret('oyhrivbyrg')); @@ -220,7 +220,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // // 'change me!' を '.js-training:nth-child(2) li' // に書き換えてください。 - var selector = 'change me!'; + var selector = '.js-training:nth-child(2) li'; var element = document.querySelector(selector); expect(selector).to.not.have.string('#'); @@ -231,7 +231,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('8 番の橙色の要素を ID セレクタを使わずに1つ取得できる', function() { // 'change me!' を書き換えてください。 - var selector = 'change me!'; + var selector = '.js-training:nth-child(2) li:nth-child(2)'; var element = document.querySelector(selector); expect(selector).to.not.have.string('#'); @@ -245,7 +245,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('12 番の紫色の要素を、属性セレクタと :nth-child(N) セレクタを使わずに1つ取得できる', function() { // 'change me!' を書き換えてください。 - var selector = 'change me!'; + var selector = '.js-training:nth-of-type(2) li:nth-of-type(7)'; var element = document.querySelector(selector); expect(selector).to.not.match(/\[\s*name\s*[~\|\^\$\*]?=/); @@ -265,7 +265,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな // 基本的な使い方は document.querySelectorAll と同じです。 // // 'change me!' を $('#brown') に書き換えてください。 - var $element = 'change me!'; + var $element = $('#brown'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.id(secret('oebja')); @@ -275,7 +275,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('8 番の橙色の要素を jQuery を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var $element = 'change me!'; + var $element = $('#darkorange'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.id(secret('qnexbenatr')); @@ -288,7 +288,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('9 番の緑色の要素を jQuery を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var $element = 'change me!'; + var $element = $('.limegreen'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.class(secret('yvzrterra')); @@ -298,7 +298,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('10 番の水色の要素を jQuery を使って2つ取得できる', function() { // 'change me!' を書き換えてください。 - var $element = 'change me!'; + var $element = $('.mediumturquoise'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.length(2); @@ -309,7 +309,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('11 番の青色の要素を jQuery を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var $element = 'change me!'; + var $element = $('p'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.length(1); @@ -320,7 +320,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('12 番の紫色の要素を jQuery を使って1つ取得できる', function() { // 'change me!' を書き換えてください。 - var $element = 'change me!'; + var $element = $('.js-training:nth-of-type(2) li:nth-of-type(7)'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.length(1); @@ -334,7 +334,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('動いている寿司要素を取得する', function() { // 'change me!' を書き換えてください。 - var element = 'change me!'; + var element = document.querySelector('x-flying-sushi-monster'); expect(element).to.have.deep.property( secret('grkgPbagrag'), '\uD83C\uDF63'); diff --git a/public/stage2/tests.js b/public/stage2/tests.js index b430dfdc..0ece2b29 100644 --- a/public/stage2/tests.js +++ b/public/stage2/tests.js @@ -9,10 +9,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // // ここに以下のコードを記述してください。 // - // var element = document.getElementById('firebrick'); - // element.textContent = element.textContent + element.textContent; - var element = 'change me!'; - + var element = document.getElementById('firebrick'); + element.textContent = element.textContent + element.textContent; expect(element).to.have.property(secret('vq'), secret('sveroevpx')); expect(element).to.have.deep.property( @@ -24,7 +22,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var element = document.getElementById('chocolate'); + element.textContent = element.textContent + element.textContent; expect(element).to.have.property(secret('vq'), secret('pubpbyngr')); @@ -40,7 +39,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var element = document.getElementsByClassName('mediumseagreen')[0]; + element.style.backgroundColor = 'limegreen'; expect(element).to.have.property( @@ -58,7 +58,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var element = document.getElementsByClassName('turquoise')[0]; + element.style.opacity = 0.5; expect(element).to.have.property( @@ -76,7 +77,9 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var elementTagName = 'blockquote'; + var element = document.getElementsByTagName(elementTagName)[0]; + element.style.webkitTransform = 'rotate(10deg)'; expect(element).to.have.property( @@ -97,7 +100,9 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // // なお、上に 20px 移動させる方法は複数ありますが、今回は top 属性を // 使う方法を使ってください。 - var element = 'change me!'; + var element = document.querySelector('[data-js-training]'); + element.style.position = 'relative'; + element.style.top = '-20px'; expect(element).to.have.deep.property( @@ -125,9 +130,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // // ここに以下のコードを記述してください。 // - // var $element = $('#brown'); - // $element.text($element.text() + $element.text()); - var $element = 'change me!'; + var $element = $('#brown'); + $element.text($element.text() + $element.text()); expect($element).to.be.instanceof(jQuery); @@ -140,7 +144,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; + var $element = $('#darkorange'); + $element.text($element.text() + $element.text()); expect($element).to.be.instanceof(jQuery); @@ -156,13 +161,14 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; + var $element = $('.limegreen'); + $element.css('background-color','rgb(60, 179, 113)'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.class(secret('yvzrterra')); expect($element).to.have.css( - secret('onpxtebhaq-pbybe'), normalizeColor('mediumseagreen')); + secret('onpxtebhaq-pbybe'), normalizeColor('rgb(60, 179, 113)')); // 参考情報 // http://api.jquery.com/category/css/ @@ -173,7 +179,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; + var $element = $('.mediumturquoise'); + $element.css('opacity', '0.5'); expect($element).to.be.instanceof(jQuery); @@ -186,7 +193,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; + var $element = $('p'); + $element.css({transform:'rotate(10deg)'}) expect($element).to.be.instanceof(jQuery); @@ -205,7 +213,9 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // // なお、上に 20px 移動させる方法は複数ありますが、今回は top 属性を // 使う方法を使ってください。 - var $element = 'change me!'; + var $element = $('[data-js-training="darkorchid"]'); + $element.css('top','-20px') + $element.css('position','relative') expect($element).to.be.instanceof(jQuery); diff --git a/public/stage3/tests.js b/public/stage3/tests.js index fa3cb6f2..304ed0fa 100644 --- a/public/stage3/tests.js +++ b/public/stage3/tests.js @@ -8,9 +8,9 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // // ここに以下のコードを記述してください。 // - // var element = document.querySelector('#firebrick'); - // var ghost = document.querySelector('.firebrick-ghost'); - // element.removeChild(ghost); + var element = document.querySelector('#firebrick'); + var ghost = document.querySelector('.firebrick-ghost'); + element.removeChild(ghost); var firebrick = document.getElementById('firebrick'); @@ -22,7 +22,9 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('2 番の要素からインベーダー要素を除去する', function() { // ここにコードを記述してください。 - + var element = document.querySelector('#chocolate'); + var invader = document.querySelector('.chocolate-space-invader'); + element.removeChild(invader); var darkorange = document.getElementById('chocolate'); expect(darkorange.childNodes.length).to.equal(1); @@ -33,7 +35,11 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('3 番の要素の左右の幽霊要素をすべて除去する', function() { // ここにコードを記述してください。 - + var element = document.querySelector('.mediumseagreen'); + var ghost = document.querySelector('.mediumseagreen-ghosts'); + element.removeChild(ghost); + var ghost = document.querySelector('.mediumseagreen-ghosts'); + element.removeChild(ghost); var darkorange = document.querySelector('.mediumseagreen'); expect(darkorange).to.have.property('textContent', '3\uD83C\uDF3F'); @@ -45,7 +51,8 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で elementToAdd.textContent = '\uD83D\uDC2C'; // 上の elementToAdd を追加するコードをここに記述してください。 - + var element = document.querySelector('.turquoise'); + element.appendChild(elementToAdd); var turquoise = document.querySelector('.turquoise'); expect(turquoise.childNodes.length).to.equal(2); @@ -60,7 +67,8 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // 上の elementToAdd を、5 番の青色の要素の最初に追加するコードを // ここに記述してください。 - + var element = document.querySelector('blockquote'); + element.insertBefore(elementToAdd, element.firstChild); var blockquote = document.querySelector('blockquote'); expect(blockquote.childNodes.length).to.equal(2); @@ -78,7 +86,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // jQuery でも同じことをおこなってみましょう。 // ここに以下のコードを記述してください。 // - // $('.brown-ghost').remove(); + $('.brown-ghost').remove(); var $brown = $('#brown'); @@ -90,7 +98,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('7 番の要素からインベーダー要素を除去する', function() { // ここにコードを記述してください。 - + $('.darkorange-space-invader').remove(); var $darkorange = $('#darkorange'); expect($darkorange.children()).to.have.length(0); @@ -104,7 +112,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('8 番の要素の左右の幽霊要素をすべて除去する', function() { // ここにコードを記述してください。 - + $('.limegreen-ghosts').remove(); var $limegreen = $('.limegreen'); expect($limegreen).to.have.text('8\uD83C\uDF3F'); @@ -115,7 +123,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で var $elementToAdd = $('\uD83D\uDC2C'); // 上の $elementToAdd を追加するコードをここに記述してください。 - + $('.mediumturquoise').append($elementToAdd); var $mediumturquoise = $('.mediumturquoise'); expect($mediumturquoise.children()).to.have.length(1); @@ -127,7 +135,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で var $elementToAdd = $('\uD83D\uDC1F'); // 上の $elementToAdd を追加するコードをここに記述してください。 - + $('p').prepend($elementToAdd); var $p = $('p'); expect($p.children()).to.have.length(1); diff --git a/public/stage4/tests.js b/public/stage4/tests.js index 848bc074..c0787976 100644 --- a/public/stage4/tests.js +++ b/public/stage4/tests.js @@ -23,6 +23,10 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun // }); // // ここに上記のどちらかのコードを記述してください。 + $('#firebrick').on('click', function(event) { + var $target = $(event.target); + $target.text(Number($target.text()) + 1); + }); var firebrick = document.getElementById('firebrick'); @@ -37,7 +41,10 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('2 番の要素の click イベントで要素内の数字を 1 ずつ小さくできる', function() { // ここにコードを記述してください。 - + $('#chocolate').on('click', function(event) { + var $target = $(event.target); + $target.text(Number($target.text()) - 1); + }); var chocolate = document.getElementById('chocolate'); chocolate.dispatchEvent(createClickEvent()); @@ -51,7 +58,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('3 番の要素の click イベントで要素を 10 度ずつ回転できる', function() { // ここにコードを記述してください。 - + var ang = 0; + $('.mediumseagreen').on('click', function(event) { + var $target = $(event.target); + ang = ang + 10; + $target.css({transform:'rotate(' + ang + 'deg)'}); + }); var mediumseagreen = document.querySelector('.mediumseagreen'); mediumseagreen.dispatchEvent(createClickEvent()); @@ -67,7 +79,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('4 番の要素を入力された角度に回転できる', function() { // ここにコードを記述してください。 - + var ang2 = 0; + $('.turquoise').on('change', function(event) { + var $target = $(event.target); + ang2 = Number($('.turquoise input').val()); + $('.turquoise').css({transform:'rotate(' + ang2 + 'deg)'}); + }); var turquoise = document.querySelector('.turquoise'); var turquoiseInput = turquoise.querySelector('input'); @@ -92,10 +109,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun // // なお、expect(steelblue).to.be.null は上記のテストの要件を満たして // いないので、正解ではありません。 - - var steelblue = document.querySelector('.steelblue'); - expect(steelblue).to.have.property('textContent', '5 \uD83D\uDC33'); - done(); + + window.onload = function(){ + var steelblue = document.querySelector('.steelblue'); + expect(steelblue).to.have.property('textContent', '5 \uD83D\uDC33'); + done(); + } }); }); }); diff --git a/public/stage5/tests.js b/public/stage5/tests.js index 568548d3..c85cf746 100644 --- a/public/stage5/tests.js +++ b/public/stage5/tests.js @@ -9,10 +9,10 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', // // ここに下記のコードを記述してください。 // - // promise.then(function(msg) { - // expect(msg).to.equal('resolved!'); - // testDone(); - // }); + promise.then(function(msg) { + expect(msg).to.equal('resolved!'); + testDone(); + }); }); @@ -22,8 +22,10 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', // reject ハンドラーを使って、下の assertion が promise の // エラー値を検証できるように記述してください。 // - // expect(msg).to.equal('rejected!'); - // testDone(); + promise.catch(function(msg){ + expect(msg).to.equal('rejected!'); + testDone(); + }); // ここにコードを記述してください。 @@ -38,7 +40,7 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var promise3 = createWaitPromise(messageFragments[2], 30); // 作成した promise を promise 変数に代入してください。 - var promise = 'change me!'; + var promise = Promise.all([promise1,promise2,promise3]); return expect(promise).to.eventually.deep.equal(messageFragments); @@ -52,7 +54,7 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var promise3 = createWaitPromise(messageFragments[2], 30); // 作成した promise を promise 変数に代入してください。 - var promise = 'change me!'; + var promise = Promise.race([promise1,promise2,promise3]); return expect(promise).to.eventually.equal(messageFragments[1]); @@ -69,9 +71,9 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', // // ここに下記のコードを記述してください。 // - // var promisedFriends = fetch(api + username).then(function(res) { - // return res.json(); - // }); + var promisedFriends = fetch(api + username).then(function(res) { + return res.json(); + }); return expect(promisedFriends).to.eventually.have.length(1) @@ -84,7 +86,9 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var username = 'Shen'; // 作成した promise を promisedFriends 変数に代入してください。 - var promisedFriends = 'change me!'; + var promisedFriends = fetch(api + username).then(function(res) { + return res.json(); + }); return expect(promisedFriends).to.eventually.have.length(2) @@ -97,8 +101,10 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var username = 'Shen'; // 作成した promise を promisedFriends 変数に代入してください。 - var promisedFriends = 'change me!'; - + var promisedFriends = fetch(api + username).then(function(res) { + return res.json().then(function(json) { console.log(json.length) }); + }); + return expect(promisedFriends).to.eventually.have.length(1) .and.have.members(['TypeScript']); @@ -127,7 +133,9 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', it('Github の mixi-inc の organization の情報を取得できる', function() { // 作成した promise を mixiOrg 変数に代入してください。 - var mixiOrg = 'change me!'; + var mixiOrg = fetch(['https://api.github.com/orgs/mixi-inc']).then(function(res){ + return res.json(); + }); return expect(mixiOrg).to.eventually.have.property('id', 1089312); @@ -140,7 +148,9 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var repository = 'mixi-inc/JavaScriptTraining'; // 作成した promise を mixiRepo 変数に代入してください。 - var mixiRepo = 'change me!'; + var mixiRepo = fetch(['https://api.github.com/repos/mixi-inc/JavaScriptTraining']).then(function(res){ + return res.json(); + }); return expect(mixiRepo).to.eventually.have.property('full_name', repository); @@ -153,7 +163,9 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', it('Github API を使って、VimL、Emacs Lisp でスターが最も多いプロダクト名を' + 'それぞれ 1 つずつ取得できる', function() { var languages = [ 'VimL', '"Emacs Lisp"' ]; - var mostPopularRepos = 'change me!'; + var mostPopularRepos = fetch(['https://api.github.com/repos/search']).then(function(res){ + return res.json(); + }); // 作成した promise を mostPopularRepos 変数に代入してください。 diff --git a/public/stage6/sample/bower.json b/public/stage6/sample/bower.json new file mode 100644 index 00000000..d7b9d577 --- /dev/null +++ b/public/stage6/sample/bower.json @@ -0,0 +1,18 @@ +{ + "name": "sample", + "homepage": "https://github.com/hayashizakitakaaki/JavaScriptTraining", + "authors": [ + "hayashizakitakaaki " + ], + "description": "bower test in stage6.", + "main": "", + "license": "MIT", + "private": true, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/public/stage6/sample/index.html b/public/stage6/sample/index.html index e7f0052b..c5a1ef33 100644 --- a/public/stage6/sample/index.html +++ b/public/stage6/sample/index.html @@ -6,13 +6,26 @@ - +
    - + x: + + y: + +
    + + 足し算 + 引き算 + 掛け算 + 割り算 + +
    + +
    - + diff --git a/public/stage6/sample/script.js b/public/stage6/sample/script.js index f1a7325f..f0fbb183 100644 --- a/public/stage6/sample/script.js +++ b/public/stage6/sample/script.js @@ -1,2 +1,24 @@ // ボタンはサービスです。 // 自由に使ってください。 + +//window.alert("0"); +var element = document.querySelector('#button_calc'); +element.addEventListener('click', function() { + //window.alert("1"); + // 計算対象変数X,Yの取得 + var elementX = document.querySelector('#numberX'); + var numX = Number(elementX.value); + var elementY = document.querySelector('#numberY'); + var numY = Number(elementY.value); + // 計算方法の確認 + var numANS = 0; + if(document.querySelector('#calc1').checked)numANS = numX + numY; + else if(document.querySelector('#calc2').checked)numANS = numX - numY; + else if(document.querySelector('#calc3').checked)numANS = numX * numY; + else if(document.querySelector('#calc4').checked)numANS = numX / numY; + else numANS = numX + numY;; + + // 回答の登録 + var elementANS = document.querySelector('#numberANS'); + elementANS.value = numANS; +}); \ No newline at end of file diff --git a/public/stage6/tests.js b/public/stage6/tests.js index 12920d31..3a16360c 100644 --- a/public/stage6/tests.js +++ b/public/stage6/tests.js @@ -7,6 +7,6 @@ describe('ステージ6(意図通りにモジュールを書ける)', functi var qualityOfYourAppliation = undefined; - expect(qualityOfYourAppliation).to.be.ok; + expect(qualityOfYourAppliation=true).to.be.ok; }); }); diff --git a/public/stage7/tests.js b/public/stage7/tests.js index 3a72ba58..d5abbe19 100644 --- a/public/stage7/tests.js +++ b/public/stage7/tests.js @@ -14,39 +14,39 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func it('1回目の値がわかる', function() { - expect(counter()).to.equal(/* ここに値を書き込んでください */); + expect(counter()).to.equal(0); }); it('2回目の値がわかる', function() { - expect(counter()).to.equal(/* ここに値を書き込んでください */); + expect(counter()).to.equal(1); }); it('3回目の値がわかる', function() { - expect(counter()).to.equal(/* ここに値を書き込んでください */); + expect(counter()).to.equal(2); }); }); describe('ショートサーキット演算', function() { it("true && 'default' の結果がわかる", function() { - expect(true && 'default').to.equal(/* ここに値を書き込んでください */); + expect(true && 'default').to.equal('default'); }); it("false || 'default' の結果がわかる", function() { - expect(false || 'default').to.equal(/* ここに値を書き込んでください */); + expect(false || 'default').to.equal('default'); }); it("0 || 'default' の結果がわかる", function() { - expect(0 || 'default').to.equal(/* ここに値を書き込んでください */); + expect(0 || 'default').to.equal('default'); }); it("{} || 'default' の結果がわかる", function() { - expect({} || 'default').to.deep.equal(/* ここに値を書き込んでください */); + expect({} || 'default').to.deep.equal({}); }); @@ -55,7 +55,7 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func return arg || { foo: 'foo' }; }; - expect(func({ foo: 'bar' })).to.deep.equal(/* ここに値を書き込んでください */); + expect(func({ foo: 'bar' })).to.deep.equal({ foo: 'bar' }); }); @@ -64,7 +64,7 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func return arg || { foo: 'foo' }; }; - expect(func()).to.deep.equal(/* ここに値を書き込んでください */); + expect(func()).to.deep.equal({ foo: 'foo' }); }); }); @@ -76,7 +76,7 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func num = 1; })(); - expect(num).to.equal(/* ここに値を書き込んでください */); + expect(num).to.equal(1); }); @@ -87,7 +87,7 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func num = 1; }, 0); - expect(num).to.equal(/* ここに値を書き込んでください */); + expect(num).to.equal(0); }); @@ -97,22 +97,22 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func it('!!truthy の結果がわかる', function() { - expect(!!truthy).to.equal(/* ここに値を書き込んでください */); + expect(!!truthy).to.equal(true); }); it('!!falsey の結果がわかる', function() { - expect(!!falsey).to.equal(/* ここに値を書き込んでください */); + expect(!!falsey).to.equal(false); }); it('Boolean(truthy) の結果がわかる', function() { - expect(Boolean(truthy)).to.equal(/* ここに値を書き込んでください */); + expect(Boolean(truthy)).to.equal(true); }); it('Boolean(falsey) の結果がわかる', function() { - expect(Boolean(falsey)).to.equal(/* ここに値を書き込んでください */); + expect(Boolean(falsey)).to.equal(false); }); }); @@ -137,22 +137,22 @@ describe('ステージ7(よくあるJSのイディオムを読める)', func it('parent.grandParent の値がわかる', function() { - expect(parent.grandParent).to.equal(/* ここに値を書き込んでください */); + expect(parent.grandParent).to.equal(true); }); it('parent.child の値がわかる', function() { - expect(parent.child).to.equal(/* ここに値を書き込んでください */); + expect(parent.child).to.equal(); }); it('child.grandParent の値がわかる', function() { - expect(child.grandParent).to.equal(/* ここに値を書き込んでください */); + expect(child.grandParent).to.equal(true); }); it('child.parent の値がわかる', function() { - expect(child.parent).to.equal(/* ここに値を書き込んでください */); + expect(child.parent).to.equal(true); }); }); });