From 910fad1e2576a02bc4dce84ad5dce691d2814d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 11:10:50 +0900 Subject: [PATCH 01/16] =?UTF-8?q?stage1(=E3=82=A8=E3=82=AF=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=83=A9=E3=82=B9=E3=83=86=E3=83=BC=E3=82=B8=E4=BB=A5?= =?UTF-8?q?=E5=A4=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes public/.DS_Store | Bin 0 -> 6148 bytes public/stage1/.DS_Store | Bin 0 -> 6148 bytes public/stage1/tests.js | 52 ++++++++++++++++++++-------------------- 4 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 .DS_Store create mode 100644 public/.DS_Store create mode 100644 public/stage1/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b4eca6bc41f03d7f470d3b87728280870d8e7550 GIT binary patch literal 6148 zcmeHK%}N6?5Kh{vyA*T<5A~LtmmX^Ush(VFJ$VsU^q``WB|Y2ENinK3s}s?zu!mDj-zf`sl4-CzA!U8XW4eqF3v9$&%BoG zd#RuHx^=&Eg1rMjZ3V_YlrsLZ{op8S_RpQAU74hQlr%dkISQK)a(Wykq3qXXFA2M+ zo^~EbVcJrY8i!@smVNG&27~JMMp;z1s>8Av)M}NoSg&mkht9KYEw8NY><9AZ_U``S z@#*DNlg;73RI+Gr1aDxB?fcs6B(Y4cz(2|v#S#(&!~iicZ48)m&MHpZ#%Mpp05R}u z2Jn0kpop%)OrttFpuy`Sju#M7z{a-(qA=(h%rwFX2-m5AI+dFz2G{A}7bea%m}%7M zjH{Jl9tOxg`}zGpo zQ(GrChqYFKUVx%tT&D3W1q@Y+Ar?z<2~-LA1sZ^^!Av7~KF8$=PaU{FaW)ifwgswSmKrBatX z_bgc=_!T~27W@mGYa3`%vSEQxdzjwp<*b8G1^}IQJMY{T3 z8cOW@t?AJ*^g|lSb>GL@Pbtai@8tAltr@Z=%M}lD+zJI~(?|baV1F5)^&y2h&1p_k z#x9hSOD9lmXSu|E`LHyW4A+|`BR%eK-Y5)`w9z;f8=Ivw<+GM;SMBQg3)LsxK|JlI zZaPUi?)Wi3-FMT0r^^rHIQ&(1y+=WR+N)i<6-TKXME$W82Yw%vqr)Kb<7p?JM1FGA zRnEh}PY1G5?XWD{vU|0y*{peEukJLjH|KR{)@n8C&TeaeKCgYWt;<(-Zr=0am#<#G zdHe4Dr_UH8OkiJ@c2VO`_<}-a+|Rq?D2$^M_*t`D*UZI_zlEas?PR%fE{nLkIWEs( z5qB@kCn^8&-8~M`#9SB48r$w-Mm|!9ikdYg{Ol zTL&_E1pt=dmWDF_F0jVY*w(mEh#HtsQlOFweZ>$;4!@&$ZH)_sN=`ywK7@X=&^Htz z-;VYjNhi@(XmS$)6M<|5Hq~Q|&;Q%S_y4TOJedfX2&`2EMCqV=(7}-O*}5_~K5HGM sr$}tfTPTzgWcoOk1wM+mkffo`;R3L&aiI_%nE4TqVKAAAz(0+^4{FKhi~s-t literal 0 HcmV?d00001 diff --git a/public/stage1/.DS_Store b/public/stage1/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bacdc644553b65b648259472d9766ab93a680806 GIT binary patch literal 6148 zcmeHK%Sr=55Ue&itj0r*9_Q#O;2$g@3SRXGG!HPcCWl1O+kT)Q;NPs(-J`gh1#cqK z4L#L6(>0HRod*D!J})nTF@S=uC>r#bR`)g?<>VnztdCdhvBm;BOnN%{i&Z-JQ`}=i zukd~TkJw#T+r_-v&Y7bEUD3}QGe*D(*Sf(HE4*;M4_x~bst)I^!#SoldyZ3)H8G_+ zqsUE%Q80gHELHVjR`Ra-bZHuvVWB`M5DJ6>p}tJC|0HR)_%^2%dSve_VnXz_c3r(C#bgJYhhB%$|Dd&|LYe%O;^5aAD$e)iF zvC-LovUEu47-c9B3bYj%_~%&9|4aTdy^s7hCB8y|P~e{_Aj8@1Y|2IDv-Mzkde$cT t9bHZHY7J... が選択されます。 // このことから、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('.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('.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='blueviolet']"); 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:last-of-type li:last-of-type'; 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:last-of-type li:last-of-type'); 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 = $('x-flying-sushi-monster'); expect(element).to.have.deep.property( secret('grkgPbagrag'), '\uD83C\uDF63'); From f5ba62ac3f512cabcc3d5903b46e5dc7b04ffb4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 13:49:21 +0900 Subject: [PATCH 02/16] stage2 --- public/stage2/tests.js | 46 ++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/public/stage2/tests.js b/public/stage2/tests.js index b430dfdc..cbcc1459 100644 --- a/public/stage2/tests.js +++ b/public/stage2/tests.js @@ -9,9 +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')); @@ -24,7 +23,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,8 +40,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; - + var element = document.querySelector('.mediumseagreen'); + element.style.backgroundColor = "limegreen"; expect(element).to.have.property( secret('pynffAnzr'), secret('zrqvhzfrnterra')); @@ -58,7 +58,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var element = document.querySelector('.turquoise'); + element.style.opacity = "0.5"; expect(element).to.have.property( @@ -76,7 +77,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 - var element = 'change me!'; + var element = document.querySelector('blockquote'); + element.style.transform = "rotate(10deg)"; expect(element).to.have.property( @@ -97,7 +99,9 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // // なお、上に 20px 移動させる方法は複数ありますが、今回は top 属性を // 使う方法を使ってください。 - var element = 'change me!'; + var element = document.querySelector("[data-js-training='blueviolet']"); + element.style.top = '-20px'; + element.style.position = 'relative'; expect(element).to.have.deep.property( @@ -125,9 +129,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,8 +143,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); expect($element).to.have.id(secret('qnexbenatr')); @@ -156,7 +159,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; + var $element = $('.limegreen'); + $element.css('background-color', 'mediumseagreen'); expect($element).to.be.instanceof(jQuery); @@ -173,8 +177,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 - var $element = 'change me!'; - + var $element = $('.mediumturquoise'); + $element.css('opacity', '0.5'); expect($element).to.be.instanceof(jQuery); expect($element).to.have.class(secret('zrqvhzghedhbvfr')); @@ -186,8 +190,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 +209,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); From d956facf7b919a408dd835ac1618223f61980758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 13:55:23 +0900 Subject: [PATCH 03/16] =?UTF-8?q?stage2=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage2/tests.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/stage2/tests.js b/public/stage2/tests.js index cbcc1459..a6dae13f 100644 --- a/public/stage2/tests.js +++ b/public/stage2/tests.js @@ -41,7 +41,7 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 var element = document.querySelector('.mediumseagreen'); - element.style.backgroundColor = "limegreen"; + element.style.backgroundColor = 'limegreen'; expect(element).to.have.property( secret('pynffAnzr'), secret('zrqvhzfrnterra')); @@ -59,7 +59,7 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 var element = document.querySelector('.turquoise'); - element.style.opacity = "0.5"; + element.style.opacity = '0.5'; expect(element).to.have.property( @@ -78,7 +78,7 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は element 変数に代入してください。 var element = document.querySelector('blockquote'); - element.style.transform = "rotate(10deg)"; + element.style.transform = 'rotate(10deg)'; expect(element).to.have.property( @@ -191,7 +191,7 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // ここにコードを記述してください。 // 変更した DOM 要素は $element 変数に代入してください。 var $element = $('p'); - $element.css({transform:'rotate(10deg)'}); + $element.css({transform: 'rotate(10deg)'}); expect($element).to.be.instanceof(jQuery); @@ -210,8 +210,8 @@ describe('ステージ2(意図した通りに DOM 要素の属性・テキス // なお、上に 20px 移動させる方法は複数ありますが、今回は top 属性を // 使う方法を使ってください。 var $element = $("[data-js-training='darkorchid']"); - $element.css("top", "-20px"); - $element.css("position", "relative"); + $element.css('top', '-20px'); + $element.css('position', 'relative'); expect($element).to.be.instanceof(jQuery); From ba13f28cac8f41a3c8c7fd9374ca12737e9a83c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 15:28:00 +0900 Subject: [PATCH 04/16] stage3 --- public/stage3/tests.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/public/stage3/tests.js b/public/stage3/tests.js index fa3cb6f2..c7d490a7 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 ghost = document.querySelector('.chocolate-space-invader'); + element.removeChild(ghost); var darkorange = document.getElementById('chocolate'); expect(darkorange.childNodes.length).to.equal(1); @@ -33,6 +35,10 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('3 番の要素の左右の幽霊要素をすべて除去する', function() { // ここにコードを記述してください。 + var element = document.querySelector('.mediumseagreen'); + var ghost = document.querySelectorAll('.mediumseagreen-ghosts'); + element.removeChild(ghost[0]); + element.removeChild(ghost[1]); var darkorange = document.querySelector('.mediumseagreen'); @@ -45,6 +51,8 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で elementToAdd.textContent = '\uD83D\uDC2C'; // 上の elementToAdd を追加するコードをここに記述してください。 + var element = document.querySelector('.turquoise'); + element.appendChild(elementToAdd); var turquoise = document.querySelector('.turquoise'); @@ -60,6 +68,8 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // 上の elementToAdd を、5 番の青色の要素の最初に追加するコードを // ここに記述してください。 + var element = document.querySelector('blockquote'); + element.insertBefore(elementToAdd,element.firstChild); var blockquote = document.querySelector('blockquote'); @@ -78,7 +88,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // jQuery でも同じことをおこなってみましょう。 // ここに以下のコードを記述してください。 // - // $('.brown-ghost').remove(); + $('.brown-ghost').remove(); var $brown = $('#brown'); @@ -90,6 +100,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('7 番の要素からインベーダー要素を除去する', function() { // ここにコードを記述してください。 + $('.darkorange-space-invader').remove(); var $darkorange = $('#darkorange'); @@ -104,6 +115,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で it('8 番の要素の左右の幽霊要素をすべて除去する', function() { // ここにコードを記述してください。 + $('.limegreen-ghosts').remove(); var $limegreen = $('.limegreen'); @@ -115,6 +127,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で var $elementToAdd = $('\uD83D\uDC2C'); // 上の $elementToAdd を追加するコードをここに記述してください。 + $('.mediumturquoise').append($elementToAdd); var $mediumturquoise = $('.mediumturquoise'); @@ -127,6 +140,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で var $elementToAdd = $('\uD83D\uDC1F'); // 上の $elementToAdd を追加するコードをここに記述してください。 + $('p').prepend($elementToAdd); var $p = $('p'); From 725d05564fe45fd4cbd867c7885143765e3392c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 15:29:10 +0900 Subject: [PATCH 05/16] =?UTF-8?q?stage3=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage3/tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stage3/tests.js b/public/stage3/tests.js index c7d490a7..e593c116 100644 --- a/public/stage3/tests.js +++ b/public/stage3/tests.js @@ -69,7 +69,7 @@ describe('ステージ3(意図した通りに DOM 要素の構造を変更で // 上の elementToAdd を、5 番の青色の要素の最初に追加するコードを // ここに記述してください。 var element = document.querySelector('blockquote'); - element.insertBefore(elementToAdd,element.firstChild); + element.insertBefore(elementToAdd, element.firstChild); var blockquote = document.querySelector('blockquote'); From 82e0ceef8f6aeda16c919cabc19ad2378fb200c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 16:47:01 +0900 Subject: [PATCH 06/16] =?UTF-8?q?stage1=E5=8B=95=E3=81=8F=E5=AF=BF?= =?UTF-8?q?=E5=8F=B8=E8=A7=A3=E6=B1=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage1/tests.js | 2 +- public/stage4/tests.js | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/public/stage1/tests.js b/public/stage1/tests.js index ba6ee995..bceccf2c 100644 --- a/public/stage1/tests.js +++ b/public/stage1/tests.js @@ -334,7 +334,7 @@ describe('ステージ1(意図した DOM 要素を取得できるようにな it('動いている寿司要素を取得する', function() { // 'change me!' を書き換えてください。 - var element = $('x-flying-sushi-monster'); + var element = $('x-flying-sushi-monster')[0]; expect(element).to.have.deep.property( secret('grkgPbagrag'), '\uD83C\uDF63'); diff --git a/public/stage4/tests.js b/public/stage4/tests.js index 599536b6..5ffa033b 100644 --- a/public/stage4/tests.js +++ b/public/stage4/tests.js @@ -17,10 +17,10 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun // // jQuery 版: // - // $('#firebrick').on('click', function(event) { - // var $target = $(event.target); - // $target.text(Number($target.text()) + 1); - // }); + $('#firebrick').on('click', function(event) { + var $target = $(event.target); + $target.text(Number($target.text()) + 1); + }); // // ここに上記のどちらかのコードを記述してください。 @@ -37,7 +37,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 +54,10 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('3 番の要素の click イベントで要素を 10 度ずつ回転できる', function() { // ここにコードを記述してください。 - + $('.mediumseagreen').on('click', function(event) { + var $target = $(event.target); + $target.text(Number($target.text()) - 1); + }); var mediumseagreen = document.querySelector('.mediumseagreen'); mediumseagreen.dispatchEvent(createClickEvent()); From f6e044adb78581fef95579897d9c8c6ab7915626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Fri, 22 May 2015 19:15:27 +0900 Subject: [PATCH 07/16] =?UTF-8?q?stage4-3=E3=81=BE=E3=81=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage4/tests.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/public/stage4/tests.js b/public/stage4/tests.js index 5ffa033b..c2574846 100644 --- a/public/stage4/tests.js +++ b/public/stage4/tests.js @@ -54,9 +54,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('3 番の要素の click イベントで要素を 10 度ずつ回転できる', function() { // ここにコードを記述してください。 + var rotate = 0; + $('.mediumseagreen').on('click', function(event) { var $target = $(event.target); - $target.text(Number($target.text()) - 1); + rotate += 10; + $target.css({ transform: 'rotate(' + rotate +'deg)' }); }); var mediumseagreen = document.querySelector('.mediumseagreen'); From e6d40b89d9a35c5b640494fe60ce9b5c182a338c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Mon, 25 May 2015 10:47:30 +0900 Subject: [PATCH 08/16] stage4-4 --- public/stage4/tests.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/public/stage4/tests.js b/public/stage4/tests.js index c2574846..7857a253 100644 --- a/public/stage4/tests.js +++ b/public/stage4/tests.js @@ -54,12 +54,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('3 番の要素の click イベントで要素を 10 度ずつ回転できる', function() { // ここにコードを記述してください。 - var rotate = 0; + var value = 0; $('.mediumseagreen').on('click', function(event) { var $target = $(event.target); - rotate += 10; - $target.css({ transform: 'rotate(' + rotate +'deg)' }); + value += 10; + $target.css({transform: 'rotate(' + value + 'deg)'}); }); var mediumseagreen = document.querySelector('.mediumseagreen'); @@ -76,6 +76,12 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun it('4 番の要素を入力された角度に回転できる', function() { // ここにコードを記述してください。 + var $element = $('.turquoise'); + + $('input').change(function() { + var value = parseInt($('input').val()); + $element.css({transform: 'rotate(' + value + 'deg)'}); + }); var turquoise = document.querySelector('.turquoise'); From 866d2ed15606e595dbe761720ded3549d2fb3daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Mon, 25 May 2015 11:20:04 +0900 Subject: [PATCH 09/16] stage4-5 --- public/stage4/tests.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/public/stage4/tests.js b/public/stage4/tests.js index 7857a253..921d6e28 100644 --- a/public/stage4/tests.js +++ b/public/stage4/tests.js @@ -107,10 +107,11 @@ describe('ステージ4(意図通りにイベントを利用できる)', fun // // なお、expect(steelblue).to.be.null は上記のテストの要件を満たして // いないので、正解ではありません。 - - var steelblue = document.querySelector('.steelblue'); - expect(steelblue).to.have.property('textContent', '5 \uD83D\uDC33'); - done(); + $('.steelblue').ready(function(){ + var steelblue = document.querySelector('.steelblue'); + expect(steelblue).to.have.property('textContent', '5 \uD83D\uDC33'); + done(); + }); }); }); }); From e5b6ff1d2740860836d8a50d54389c73d667a100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Mon, 25 May 2015 15:11:06 +0900 Subject: [PATCH 10/16] =?UTF-8?q?stage5=E9=80=94=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 12292 bytes gulp/.DS_Store | Bin 0 -> 6148 bytes public/.DS_Store | Bin 6148 -> 12292 bytes public/common/.DS_Store | Bin 0 -> 6148 bytes public/stage5/.DS_Store | Bin 0 -> 6148 bytes public/stage5/tests.js | 35 ++++++++++++++++++++++------------- server/.DS_Store | Bin 0 -> 6148 bytes server/response/.DS_Store | Bin 0 -> 6148 bytes 8 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 gulp/.DS_Store create mode 100644 public/common/.DS_Store create mode 100644 public/stage5/.DS_Store create mode 100644 server/.DS_Store create mode 100644 server/response/.DS_Store diff --git a/.DS_Store b/.DS_Store index b4eca6bc41f03d7f470d3b87728280870d8e7550..ce337a15eaebfe39ec9333a1f61e26fd488f8ac1 100644 GIT binary patch literal 12292 zcmeI1OK;Oa5XWcJG_{oq0^(3O`9=?=N@;12gtS4bcnCF!9w;hyoVJEwM|m`dQYlBC z_Z~ST_$GXSp7<)^zmG(=)0~h{QD&swS?|uQv%m4$9*2lTx$CbGEfA4~B6T5;>H?AD zvW!W_^jwD)@TcuYRP!2eV0GksZ(_qx)K;2O_j9w00FH#SkWQ5ZWE%C1c;$ zTDy}_XU06{%)(?S!XzHTQRXB{T64_=n7}vznY(A{kh;{MW-5Pwh_OYKnZZCgj_kZ% zyJ_}J%A;p)=g2ed=TX!c zwO#K;Q19&*Zfr(j#|^@IOF0LA9VUCbLFh-la?}m|_Fh$Y?goD6NKI-wEX%g+{lcx2 zlRGQxYxkC%)#BaLCFf*gqqyX(ZLFW37QWfm&D*Q@A9>OH4v;+(A|G?_(>v9YajK`!BF?2B%B+dhM8Bzu+(ZhgNX}D}T&mGq)Q7`3f_9jU z4$1v+7K>#LeqHhqk$`F`TN(E=l$?o3!gi{nkXU(&yiGgU2@hzCoNU8l0_sUTl9xdh9N}fSRRlPi9Mv;oyPFbX4D<6wgY;4kNfC(@G WCcp%k025#WOn?b60VeSO68HnyJ{P3` delta 167 zcmZokXfcprU|?W$DortDU=RQ@Ie-{MGjUEV6q~50D9Qwq2a9DgBqx;@7bNB6Cv7ZT z&N$gXhGlZGumt0s$vy)8ToTpQMwX^J3Pu)_7YZpdtyndgOHiJ1_2euO`Hdw{SQfK$ ta0oI3%>n`eZXn?bvSVZ6cjn3bGL9fefNWs_(LftPt^kW|j^~-f3;-GDAK(B0 diff --git a/gulp/.DS_Store b/gulp/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ed1c15f245930ed51869dc4030d13b63dfc46c83 GIT binary patch literal 6148 zcmeHKF-`+P474G|Ni-=bx1>Vi2dgL`QS*T)fd)m2LzE~gjR{~c921d&c~XH%^%^le>BzUL>xE-t(#_*$Jg08877binI|t`6CvzDVy!D?C}BusNM}f8Fh#NM0-HJG#D-~t%wVrF zNN@vbS5Ope7UcNOJegm_bFx1V2L~|pK(WIxIi6?gw&zl3_L@JN(^*ld?O1;{DY_}NX+~JXc;;brBY$f#?OZH2Z$&zurQ#rWZ!#^ zFE6D`CAxQGASShq<|EV0#e|23V83O%}){)rGONW0-p-__o2}p zyTTzcJ{=4(0uX0RhjAUV1hIL7*cA?m%+M^U#H3n{7?yPATh(=iLt@flaWd~yCtFP@ z7N;}cq8!#GDoOz#3Wvm?Gaq!Kegs?>nH2a71>OPsiX3hL literal 0 HcmV?d00001 diff --git a/public/stage5/.DS_Store b/public/stage5/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f5fc6a8ef621d09b6bbe40debb80c5d1124ca0c GIT binary patch literal 6148 zcmeHKJxc>Y5PhR5PHj?JZfPa>4~`H8Tm1u)>cgspt2HxIAOO5ZGA3lObM(5 zdq<8?#6yW5Dp6vHhqJ$gUme&xdN?GC4~dmOiWjlfIe#&CNbQ(98At~98PM97GS&P4 zlE2Jok#8=kl7VF4zcL_``R#nh?BZ_ymZ#peh3$?_Mg4j;D75z;0sPQ&;G zhn_2VA5OeVnc1CGR4G>)RWs7eH=dnY+uvHd9sp2-NxB6P0Dy-|*z(a_A~a6ABrT4t zAu2nEff6dn_6zfFDO&=o$N;UK2V=-^-A3@&`Xz-)aEv~T=co@*)!7-^OY)OxHRAl= z$*9Pyy4U-qT5IhaH`hJi@A#ctw>xj5p_xW?Tu-V&JU*nWmvKEz*neeAaqh>->pYtt z2X~*EvX1jI8{6VM%`oNYATLuh9hga(R!5Nw9^`2~w3Bkc^L)=g4mM}Ahg-WlkGp!i z_h{bLvwpwV)jR#&`8+uBy?gh!pS(!S$4{TXeEs(Q^oM;vQ1~@lxx=`CpXe;H^&uLU zg(=_T*rINcFDMKM1H!;+GQhi)*ICWSlcy2}gn=t$fc6KCN*FRW4(--~#6Z46sM zpMDvsMl*(tjYAwkQLYrxl`3vAlq<)$=Dd)xap=lHar2@0&Wbw}W$%vjYnu)#bSPFB z5C$$XK)oMIKcLB}4& gm`g|T2C5Z|YjO}n#>OE=P~=Cz(jZ0{_^%B70V?2RfdBvi literal 0 HcmV?d00001 diff --git a/server/response/.DS_Store b/server/response/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8f0f907e9b8332f3e8a56bde5776dd799a02e638 GIT binary patch literal 6148 zcmeH~F;4?A427SeLnQ_}GG=5#;vYm+i^R+yfKre^Z4ZIE-^R~|XFDKH2LlTOdX}7* z`0S+j4d(`c&G+kbUd)}Vy*lhJH{I=O)2*24Kl6fq`WD8SOaw$g1VlgtMBsM>y!X Date: Mon, 25 May 2015 15:12:31 +0900 Subject: [PATCH 11/16] =?UTF-8?q?stage5=E9=80=94=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage5/tests.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/stage5/tests.js b/public/stage5/tests.js index c2c95025..fd3211fd 100644 --- a/public/stage5/tests.js +++ b/public/stage5/tests.js @@ -101,6 +101,10 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var api = '/api/friends/'; var username = 'Shen'; + var promise = fetch(api + username).then(function(res) { + return res.json(); + }); + // 作成した promise を promisedFriends 変数に代入してください。 var promisedFriends = 'change me!'; From 49bf5281693b92a2a192d6bb191fa7492d340d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Mon, 25 May 2015 18:36:49 +0900 Subject: [PATCH 12/16] =?UTF-8?q?stage7(stage6=E9=A3=9B=E3=81=B0=E3=81=97)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage5/tests.js | 2 +- public/stage7/tests.js | 118 ++++++++++++++++++++--------------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/public/stage5/tests.js b/public/stage5/tests.js index fd3211fd..254d1beb 100644 --- a/public/stage5/tests.js +++ b/public/stage5/tests.js @@ -89,7 +89,7 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', // 作成した promise を promisedFriends 変数に代入してください。 var promisedFriends = fetch(api + username).then(function(res) { return res.json(); - }); + }) return expect(promisedFriends).to.eventually.have.length(2) diff --git a/public/stage7/tests.js b/public/stage7/tests.js index 3a72ba58..0872ca77 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,71 +137,71 @@ 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(undefined); }); 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); }); }); }); -describe.skip('あなたの闇のJS力', function() { +describe('あなたの闇のJS力', function() { // .skip を外せば始められます describe('ゆるふわ == 演算子', function() { it("'10' == 10 の振る舞いがわかる", function() { expect('10' == 10) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it('null == undefined の振る舞いがわかる', function() { expect(null == undefined) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it('null == false の振る舞いがわかる', function() { expect(null == false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('true == 1 の振る舞いがわかる', function() { expect(true == 1) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it('true == 10 の振る舞いがわかる', function() { expect(true == 10) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('[0, 1] == 0 の振る舞いがわかる', function() { expect([0, 1] == 0) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('[1] == 1 の振る舞いがわかる', function() { expect([1] == 1) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); }); @@ -209,72 +209,72 @@ describe.skip('あなたの闇のJS力', function() { describe('意図しない truthy/falsey', function() { it('Boolean(false) が truthy/falsey のどちらなのかわかる', function() { expect(Boolean(false) ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('Boolean(0) が truthy/falsey のどちらなのかわかる', function() { expect(Boolean(0) ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('new Boolean(0) が truthy/falsey のどちらなのかわかる', function() { expect(new Boolean(0) ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it("'abc' が truthy/falsey のどちらなのかわかる", function() { expect('abc' ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it("'' が truthy/falsey のどちらなのかわかる", function() { expect('' ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('String(0) が truthy/falsey のどちらなのかわかる', function() { expect(String(0) ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it("String('') が truthy/falsey のどちらなのかわかる", function() { expect(String('') ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(false); }); it('new String(0) が truthy/falsey のどちらなのかわかる', function() { expect(new String(0) ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); it("new String('') が truthy/falsey のどちらなのかわかる", function() { expect(new String('') ? true : false) - .to.equal(/* ここに値を書き込んでください */); + .to.equal(true); }); }); describe('読めないキャスト万歳!', function() { it("10 + '' の値がわかる", function() { - expect(10 + '').to.equal(/* ここに値を書き込んでください */); + expect(10 + '').to.equal('10'); }); it("+'10' の値がわかる", function() { - expect(+'10').to.equal(/* ここに値を書き込んでください */); + expect(+'10').to.equal(10); }); it("'10.1'|0 の値がわかる", function() { - expect('10.1'|0).to.equal(/* ここに値を書き込んでください */); + expect('10.1'|0).to.equal(10); }); @@ -282,51 +282,51 @@ describe.skip('あなたの闇のJS力', function() { var obj = { length: 2, 0: 'foo', 1: 'bar' }; expect(Array.prototype.slice.call(obj)) - .to.deep.equal(/* ここに値を書き込んでください */); + .to.deep.equal(['foo', 'bar']); }); it('+(new Date()) の型がわかる', function() { expect(typeof +(new Date())) - .to.equal(/* ここに値を書き込んでください */); + .to.equal('number'); }); it('(new Date()) + 0 の型がわかる', function() { expect(typeof ((new Date()) + 0)) - .to.equal(/* ここに値を書き込んでください */); + .to.equal('string'); }); }); describe('ダブルスタンダード Array コンストラクタ', function() { it('Array(3) が作成する配列の長さがわかる', function() { - expect(Array(3)).to.have.length(/* ここに値を書き込んでください */); + expect(Array(3)).to.have.length(3); }); it('Array(3) が作成する配列の0番目の要素がわかる', function() { - expect(Array(3)[0]).to.equal(/* ここに値を書き込んでください */); + expect(Array(3)[0]).to.equal(undefined); }); it('Array(3) が作成する配列がわかる', function() { - expect(Array(3)).to.deep.equal(/* ここに値を書き込んでください */); + expect(Array(3)).to.deep.equal([, , ]); }); it('Array(1, 2, 3) が作成する配列の長さがわかる', function() { - expect(Array(1, 2, 3)).to.have.length(/* ここに値を書き込んでください */); + expect(Array(1, 2, 3)).to.have.length(3); }); it('Array(1, 2, 3) が作成する配列の0番目の要素がわかる', function() { - expect(Array(1, 2, 3)[0]).to.equal(/* ここに値を書き込んでください */); + expect(Array(1, 2, 3)[0]).to.equal(1); }); it('Array(1, 2, 3) が作成する配列がわかる', function() { - expect(Array(1, 2, 3)).to.deep.equal(/* ここに値を書き込んでください */); + expect(Array(1, 2, 3)).to.deep.equal([1, 2, 3]); }); }); @@ -336,7 +336,7 @@ describe.skip('あなたの闇のJS力', function() { var obj = { foo: 'bar' }; with (obj) { - expect(foo).to.equal(/* ここに値を書き込んでください */); + expect(foo).to.equal('bar'); } }); @@ -345,7 +345,7 @@ describe.skip('あなたの闇のJS力', function() { var obj = { 'foo': 'bar', 'undefined': 'bar' }; with (obj) { - expect(foo === undefined).to.equal(/* ここに値を書き込んでください */); + expect(foo === undefined).to.equal(true); } }); @@ -354,7 +354,7 @@ describe.skip('あなたの闇のJS力', function() { var obj = { 'foo': 'bar', 'null': 'bar' }; with (obj) { - expect(foo === null).to.equal(/* ここに値を書き込んでください */); + expect(foo === null).to.equal(false); } }); }); @@ -362,35 +362,35 @@ describe.skip('あなたの闇のJS力', function() { describe('JavaScript のゆるふわ型判定', function() { it('typeof 0 の結果がわかる', function() { - expect(typeof 0).to.equal(/* ここに値を書き込んでください */); + expect(typeof 0).to.equal('number'); }); it('typeof true の結果がわかる', function() { - expect(typeof true).to.equal(/* ここに値を書き込んでください */); + expect(typeof true).to.equal('boolean'); }); it("typeof 'string' の結果がわかる", function() { - expect(typeof 'string').to.equal(/* ここに値を書き込んでください */); + expect(typeof 'string').to.equal('string'); }); it('typeof function() {} の結果がわかる', function() { - expect(typeof function() {}).to.equal(/* ここに値を書き込んでください */); + expect(typeof function() {}).to.equal('function'); }); it('typeof {} の結果がわかる', function() { - expect(typeof {}).to.equal(/* ここに値を書き込んでください */); + expect(typeof {}).to.equal('object'); }); it('typeof [] の結果がわかる', function() { - expect(typeof []).to.equal(/* ここに値を書き込んでください */); + expect(typeof []).to.equal('object'); }); it('typeof undefined の結果がわかる', function() { - expect(typeof undefined).to.equal(/* ここに値を書き込んでください */); + expect(typeof undefined).to.equal('undefined'); }); it('typeof null の結果がわかる', function() { - expect(typeof null).to.equal(/* ここに値を書き込んでください */); + expect(typeof null).to.equal('object'); }); }); }); From b4534e0b6c8c6b4eda6a555027b2afd92e3a13f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Wed, 27 May 2015 20:48:34 +0900 Subject: [PATCH 13/16] =?UTF-8?q?stage5=E7=B5=82=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage5/tests.js | 55 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/public/stage5/tests.js b/public/stage5/tests.js index 254d1beb..4d788f0f 100644 --- a/public/stage5/tests.js +++ b/public/stage5/tests.js @@ -101,12 +101,30 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', var api = '/api/friends/'; var username = 'Shen'; - var promise = fetch(api + username).then(function(res) { - return res.json(); - }); + // 分からなかったので解答参考につくりました。(理解につとめたい) + + // 友人の配列を取得 + function getFriends(usernameToFetch) { + return fetch(api + usernameToFetch).then(function(res) { + return res.json(); + }); + } + + // 配列を平たく + function flatMap(arrayToFlat) { + return arrayToFlat.reduce(function(flatArray, array) { + return flatArray.concat(array); //生成した新しい配列 + }, []); + } // 作成した promise を promisedFriends 変数に代入してください。 - var promisedFriends = 'change me!'; + var promisedFriends = getFriends(username) + .then(function(friends) { + return Promise.all(friends.map(getFriends)); + }) + .then(function(friendsArray) { + return flatMap(friendsArray); + }); return expect(promisedFriends).to.eventually.have.length(1) @@ -166,10 +184,37 @@ describe('ステージ5(意図通りに非同期処理を利用できる)', it('Github API を使って、VimL、Emacs Lisp でスターが最も多いプロダクト名を' + 'それぞれ 1 つずつ取得できる', function() { var languages = [ 'VimL', '"Emacs Lisp"' ]; - var mostPopularRepos = 'change me!'; // 作成した promise を mostPopularRepos 変数に代入してください。 + // 分からなかったので解答参考につくりました。(理解につとめたい) + + //オブジェクトから、query stringを作る + function buildQueryString(queryMap) { + return Object.keys(queryMap).map(function(key){ + return encodeURIComponent(key) + '=' + encodeURIComponent(queryMap[key]); + }).join('&'); + } + + //指定された言語で最もスターがおおいリポジトリ名を返す + function searchMostPopulerRepoByLanguage(lang) { + var queryString = buildQueryString({ + q: 'language:' + lang, + sort: 'stars' + }); + + return fetch('https://api.github.com/search/repositories?' + queryString) + .then(function(response) { + return response.json(); + }) + .then(function(result) { + return result.items[0].full_name; + }); + } + + + var mostPopularRepos = Promise.all( + languages.map(searchMostPopulerRepoByLanguage)); return expect(mostPopularRepos).to.eventually.have.length(2) .and.satisfy(function(names) { From a744baf2b1ba54230cad551c1c44876328934a9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Thu, 28 May 2015 15:11:37 +0900 Subject: [PATCH 14/16] stage6 --- public/.DS_Store | Bin 12292 -> 12292 bytes public/stage6/index.html | 27 +++++++++++++++++++++ public/stage6/tests.js | 50 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) diff --git a/public/.DS_Store b/public/.DS_Store index 787be70f7c1b2d3d845907842c75cb9a2934970f..27a68a9e313378993957ee2b3030fda0a72d7ba4 100644 GIT binary patch delta 183 zcmZokXi1ph&nUVvU^hRb=wu!N9To-#2A0V-0yZrFfnalufEi;(K}nKNX>myrP)d&> zl%bd*m7xeo>NDgpBr@bNBt!Xz4CV|547xyU2$b^z%9R0eFi^gTA(Nqip@bm>$VvpV z^T0SAsH%XWlpzUdP9{*5{$vLM6%L?fejv+091z~TNwAW2GrPn$md%PH&zLtakW=Ib E0H9PZNB{r; delta 58 zcmZokXi1ph&nUbxU^hRb@MInV9hUz + サンプルパッケージ @@ -19,6 +20,8 @@ + + + +
+
+
+ + + + + +
+
+
+

+ + +
商品名価格個数
diff --git a/public/stage6/tests.js b/public/stage6/tests.js index 12920d31..2165f3df 100644 --- a/public/stage6/tests.js +++ b/public/stage6/tests.js @@ -5,8 +5,58 @@ describe('ステージ6(意図通りにモジュールを書ける)', functi // ボタンはサービスです。 // 自由に使ってください。 + var qualityOfYourAppliation = undefined; expect(qualityOfYourAppliation).to.be.ok; }); }); + +var sum =0; +var itemlist = ["りんご", "みかん", "もも"]; +var pricelist = {"りんご":500, "みかん":300, "もも":200}; + +function add() { + var itm = myform.items.value; + var num = myform.num.value; + + var table = document.getElementById("table"); + + var tr = document.createElement("tr"); + + var td = document.createElement("td"); + var txt = document.createTextNode(itm); + td.appendChild(txt); + tr.appendChild(td); + + var td = document.createElement("td"); + var txt = document.createTextNode(pricelist[itm]); + td.appendChild(txt); + tr.appendChild(td); + + var td = document.createElement("td"); + var txt = document.createTextNode(num); + td.appendChild(txt); + tr.appendChild(td); + + var subtotal = pricelist[itm]*num; + sum = sum + subtotal; + var td = document.createElement("td"); + var txt = document.createTextNode(subtotal); + td.appendChild(txt); + tr.appendChild(td); + + table.appendChild(tr); +} + +function clearData() { + var table = document.getElementById("table"); + for(var i=table.childNodes.length-1; i>1; i--) { + table.removeChild(table.childNodes[i]); + } + sum = 0; +} + +function sumAlert() { + window.alert("合計:" + sum + "円"); +} \ No newline at end of file From 617781c4495d628cba30219df4c24351e184a3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Thu, 28 May 2015 15:14:26 +0900 Subject: [PATCH 15/16] =?UTF-8?q?stage6=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage6/tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stage6/tests.js b/public/stage6/tests.js index 2165f3df..5c003230 100644 --- a/public/stage6/tests.js +++ b/public/stage6/tests.js @@ -6,7 +6,7 @@ describe('ステージ6(意図通りにモジュールを書ける)', functi // 自由に使ってください。 - var qualityOfYourAppliation = undefined; + var qualityOfYourAppliation = true; expect(qualityOfYourAppliation).to.be.ok; }); From de203e0585709292c9c9b2bc36f866857fc0ce0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=B9=E5=B3=B6=E8=8F=9C=E7=A9=82=E5=AD=90?= Date: Thu, 28 May 2015 19:02:18 +0900 Subject: [PATCH 16/16] =?UTF-8?q?stage6=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stage6/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/stage6/index.html b/public/stage6/index.html index d54f8287..1aef501b 100644 --- a/public/stage6/index.html +++ b/public/stage6/index.html @@ -47,9 +47,9 @@ - - - + + +