From c5b28f72047fa9b4d01c3ef9c2415bbf7a4014fa Mon Sep 17 00:00:00 2001
From: Matthew Dillon <mrdillon@alaska.edu>
Date: Mon, 1 Jun 2015 09:39:56 -0800
Subject: [PATCH] Strain-details: controller -> component

---
 app/components/strains/strain-details.js      |  15 +++
 app/controllers/strains/show.js               |  14 --
 .../components/strains/strain-details.hbs     | 121 +++++++++++++++++
 app/templates/strains/show.hbs                | 124 +-----------------
 .../components/strains/strain-details-test.js |  21 +++
 tests/unit/controllers/strains/show-test.js   |  15 ---
 6 files changed, 158 insertions(+), 152 deletions(-)
 create mode 100644 app/components/strains/strain-details.js
 delete mode 100644 app/controllers/strains/show.js
 create mode 100644 app/templates/components/strains/strain-details.hbs
 create mode 100644 tests/unit/components/strains/strain-details-test.js
 delete mode 100644 tests/unit/controllers/strains/show-test.js

diff --git a/app/components/strains/strain-details.js b/app/components/strains/strain-details.js
new file mode 100644
index 0000000..a25aead
--- /dev/null
+++ b/app/components/strains/strain-details.js
@@ -0,0 +1,15 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+  classNames: ['grid-1'],
+  isEditing: false,
+  actions: {
+    editStrain: function() {
+      this.get('strain').get('errors').clear();
+      this.toggleProperty('isEditing');
+    },
+    saveStrain: function() {
+      this.get('strain').save().then(this.toggleProperty('isEditing'));
+    }
+  }
+});
diff --git a/app/controllers/strains/show.js b/app/controllers/strains/show.js
deleted file mode 100644
index 125549e..0000000
--- a/app/controllers/strains/show.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import Ember from 'ember';
-
-export default Ember.Controller.extend({
-  isEditing: false,
-  actions: {
-    editStrain: function() {
-      this.get('model').get("errors").clear();
-      this.toggleProperty('isEditing');
-    },
-    saveStrain: function() {
-      this.get('model').save().then(this.toggleProperty('isEditing'));
-    }
-  }
-});
diff --git a/app/templates/components/strains/strain-details.hbs b/app/templates/components/strains/strain-details.hbs
new file mode 100644
index 0000000..702fa1f
--- /dev/null
+++ b/app/templates/components/strains/strain-details.hbs
@@ -0,0 +1,121 @@
+<div class="span-1">
+  <fieldset {{bind-attr class=":flakes-information-box isEditing"}}>
+    <legend>
+      Strain
+        {{#if isEditing}}
+          {{input value=strain.strainName}}
+        {{else}}
+          {{strain.strainName}}
+        {{/if}}
+        {{display-errors a=strain.errors.strainName}}
+    </legend>
+
+    {{! ROW 1 }}
+    <div class="grid-4">
+      <dl class="span-2">
+        <dt>Species</dt>
+        <dd><em>{{strain.speciesName}}</em></dd>
+      </dl>
+      <dl class="span-2">
+        <dt>Type Strain?</dt>
+        <dd>
+          {{#if isEditing}}
+            {{input type="checkbox" checked=strain.typeStrain}}
+          {{/if}}
+          {{if strain.typeStrain 'Yes' 'No'}}
+          {{display-errors a=strain.errors.typeStrain}}
+        </dd>
+      </dl>
+    </div>
+
+    {{! ROW 2 }}
+    <div class="grid-4">
+      <dl class="span-2">
+        <dt>Accession Numbers</dt>
+        <dd>
+          {{#if isEditing}}
+            {{input value=strain.accessionNumbers}}
+          {{else}}
+            {{strain.accessionNumbers}}
+          {{/if}}
+          {{display-errors a=strain.errors.accessionNumbers}}
+        </dd>
+      </dl>
+      <dl class="span-2">
+        <dt>Genbank</dt>
+        <dd>
+          {{#if isEditing}}
+            {{input value=strain.genbank}}
+          {{else}}
+            {{strain.genbank}}
+          {{/if}}
+          {{display-errors a=strain.errors.genbank}}
+        </dd>
+      </dl>
+    </div>
+
+    {{! ROW 3 }}
+    <div class="grid-4">
+      <dl class="span-4">
+        <dt>Isolated From</dt>
+        <dd>
+          {{#if isEditing}}
+            {{textarea value=strain.isolatedFrom cols="70" rows="3"}}
+          {{else}}
+            {{strain.isolatedFrom}}
+          {{/if}}
+          {{display-errors a=strain.errors.isolatedFrom}}
+        </dd>
+      </dl>
+    </div>
+
+    {{! ROW 4 }}
+    <div class="grid-4">
+      <dl class="span-4">
+        <dt>Notes</dt>
+        <dd>
+          {{#if isEditing}}
+            {{textarea value=strain.notes cols="70" rows="3"}}
+          {{else}}
+            {{strain.notes}}
+          {{/if}}
+          {{display-errors a=strain.errors.notes}}
+        </dd>
+      </dl>
+    </div>
+
+    {{! ROW 5 }}
+    <div class="grid-4">
+      <dl class="span-1">
+        <dt>Record Created</dt>
+        <dd>{{null-time strain.createdAt 'LL'}}</dd>
+      </dl>
+      <dl class="span-1">
+        <dt>Record Updated</dt>
+        <dd>{{null-time strain.updatedAt 'LL'}}</dd>
+      </dl>
+      <dl class="span-1">
+        <dt>Record Deleted</dt>
+        <dd>{{null-time strain.deletedAt 'LL'}}</dd>
+      </dl>
+      <dl class="span-1"></dl>
+    </div>
+
+    {{! ROW 6 }}
+    {{#if (can "edit strain" strain)}}
+      <div class="grid-4">
+        <div class="span-1">
+          {{! Does nothing ATM }}
+          <a {{bind-attr class=":smaller isEditing:button-red:button-gray"}} {{action 'editStrain'}}>
+            {{#if isEditing}}Cancel{{else}}Edit{{/if}}
+          </a>
+          {{#if isEditing}}
+            <a class="button-green smaller" {{action 'saveStrain'}}>
+              Save
+            </a>
+          {{/if}}
+        </div>
+      </div>
+    {{/if}}
+  </fieldset>
+</div>
diff --git a/app/templates/strains/show.hbs b/app/templates/strains/show.hbs
index cc0393a..dbeeba2 100644
--- a/app/templates/strains/show.hbs
+++ b/app/templates/strains/show.hbs
@@ -1,126 +1,4 @@
-<div class="grid-1">
-  <div class="span-1">
-    <fieldset {{bind-attr class=":flakes-information-box isEditing"}}>
-      <legend>
-        Strain
-          {{#if isEditing}}
-            {{input value=model.strainName}}
-          {{else}}
-            {{model.strainName}}
-          {{/if}}
-          {{display-errors a=model.errors.strainName}}
-      </legend>
-
-      {{! ROW 1 }}
-      <div class="grid-4">
-        <dl class="span-2">
-          <dt>Species</dt>
-          <dd><em>{{model.speciesName}}</em></dd>
-        </dl>
-        <dl class="span-2">
-          <dt>Type Strain?</dt>
-          <dd>
-            {{#if isEditing}}
-              {{input type="checkbox" checked=model.typeStrain}}
-            {{/if}}
-            {{if model.typeStrain 'Yes' 'No'}}
-            {{display-errors a=model.errors.typeStrain}}
-          </dd>
-        </dl>
-      </div>
-
-      {{! ROW 2 }}
-      <div class="grid-4">
-        <dl class="span-2">
-          <dt>Accession Numbers</dt>
-          <dd>
-            {{#if isEditing}}
-              {{input value=model.accessionNumbers}}
-            {{else}}
-              {{model.accessionNumbers}}
-            {{/if}}
-            {{display-errors a=model.errors.accessionNumbers}}
-          </dd>
-        </dl>
-        <dl class="span-2">
-          <dt>Genbank</dt>
-          <dd>
-            {{#if isEditing}}
-              {{input value=model.genbank}}
-            {{else}}
-              {{model.genbank}}
-            {{/if}}
-            {{display-errors a=model.errors.genbank}}
-          </dd>
-        </dl>
-      </div>
-
-      {{! ROW 3 }}
-      <div class="grid-4">
-        <dl class="span-4">
-          <dt>Isolated From</dt>
-          <dd>
-            {{#if isEditing}}
-              {{textarea value=model.isolatedFrom cols="70" rows="3"}}
-            {{else}}
-              {{model.isolatedFrom}}
-            {{/if}}
-            {{display-errors a=model.errors.isolatedFrom}}
-          </dd>
-        </dl>
-      </div>
-
-      {{! ROW 4 }}
-      <div class="grid-4">
-        <dl class="span-4">
-          <dt>Notes</dt>
-          <dd>
-            {{#if isEditing}}
-              {{textarea value=model.notes cols="70" rows="3"}}
-            {{else}}
-              {{model.notes}}
-            {{/if}}
-            {{display-errors a=model.errors.notes}}
-          </dd>
-        </dl>
-      </div>
-
-      {{! ROW 5 }}
-      <div class="grid-4">
-        <dl class="span-1">
-          <dt>Record Created</dt>
-          <dd>{{null-time model.createdAt 'LL'}}</dd>
-        </dl>
-        <dl class="span-1">
-          <dt>Record Updated</dt>
-          <dd>{{null-time model.updatedAt 'LL'}}</dd>
-        </dl>
-        <dl class="span-1">
-          <dt>Record Deleted</dt>
-          <dd>{{null-time model.deletedAt 'LL'}}</dd>
-        </dl>
-        <dl class="span-1"></dl>
-      </div>
-
-      {{! ROW 6 }}
-      {{#if (can "edit strain" model)}}
-        <div class="grid-4">
-          <div class="span-1">
-            {{! Does nothing ATM }}
-            <a {{bind-attr class=":smaller isEditing:button-red:button-gray"}} {{action 'editStrain'}}>
-              {{#if isEditing}}Cancel{{else}}Edit{{/if}}
-            </a>
-            {{#if isEditing}}
-              <a class="button-green smaller" {{action 'saveStrain'}}>
-                Save
-              </a>
-            {{/if}}
-          </div>
-        </div>
-      {{/if}}
-    </fieldset>
-  </div>
-</div>
+{{strains/strain-details strain=model}}
 
 <div class="measurements-container">
   {{outlet}}
diff --git a/tests/unit/components/strains/strain-details-test.js b/tests/unit/components/strains/strain-details-test.js
new file mode 100644
index 0000000..a52c33c
--- /dev/null
+++ b/tests/unit/components/strains/strain-details-test.js
@@ -0,0 +1,21 @@
+import {
+  moduleForComponent,
+  test
+} from 'ember-qunit';
+
+moduleForComponent('strains/strain-details', {
+  // Specify the other units that are required for this test
+  // needs: ['component:foo', 'helper:bar']
+});
+
+test('it renders', function(assert) {
+  assert.expect(2);
+
+  // Creates the component instance
+  var component = this.subject();
+  assert.equal(component._state, 'preRender');
+
+  // Renders the component to the page
+  this.render();
+  assert.equal(component._state, 'inDOM');
+});
diff --git a/tests/unit/controllers/strains/show-test.js b/tests/unit/controllers/strains/show-test.js
deleted file mode 100644
index 9808fa5..0000000
--- a/tests/unit/controllers/strains/show-test.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import {
-  moduleFor,
-  test
-} from 'ember-qunit';
-
-moduleFor('controller:strains/show', {
-  // Specify the other units that are required for this test.
-  // needs: ['controller:foo']
-});
-
-// Replace this with your real tests.
-test('it exists', function(assert) {
-  var controller = this.subject();
-  assert.ok(controller);
-});