Got navigation working

This commit is contained in:
Leonard Smith 2020-10-04 16:58:28 -05:00
parent f0463b210b
commit e504a104b7
49 changed files with 12590 additions and 21303 deletions

View File

@ -0,0 +1,6 @@
import JSONAPIAdapter from '@ember-data/adapter/json-api';
export default class ApplicationAdapter extends JSONAPIAdapter {
namepace = 'api/v1/';
host = 'http://gwt.api';
}

BIN
app/components/.DS_Store vendored Normal file

Binary file not shown.

2
app/components/book.hbs Normal file
View File

@ -0,0 +1,2 @@
<a href="#" {{on "click" this.selectBook}}>{{this.bookTitle}}</a>

29
app/components/book.js Normal file
View File

@ -0,0 +1,29 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
export default class BookComponent extends Component {
get bookTitle() {
let string = this.args.book.name.toLowerCase();
if (this.isNumber(string.charAt(0))) {
return string.slice(0,1) + string.charAt(2).toUpperCase() + string.slice(3);
} else {
return string.charAt(0).toUpperCase() + string.slice(1);
}
}
@action
selectBook() {
this.args.showChapters(this.args.book);
}
isNumber(char) {
var number = /^[0-9]+$/;
let string = char;
if(string.match(number)) {
return true;
} else {
return false;
}
}
}

View File

@ -0,0 +1,5 @@
<Scrollmenu @visible={{@visible}}>
{{#each @book.chapters as |chapter|}}
<Chapter @book={{@book}} @chapter={{chapter}} @active={{this.isChapterActive}} @showVerses={{this.showVerses}} />
{{/each}}
</Scrollmenu>

View File

@ -0,0 +1,24 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from "@glimmer/tracking";
export default class ChapterNavComponent extends Component {
@tracked currentChapter;
constructor(...args) {
super(...args);
}
@action
showVerses(book, chapter)
{
this.args.showVerses(book, chapter);
this.currentChapter = chapter;
}
@action
isChapterActive(chapter)
{
return chapter === this.currentChapter;
}
}

View File

@ -0,0 +1 @@
<a href="#" {{on "click" this.selectChapter}} >{{@chapter.chapter}}</a>

12
app/components/chapter.js Normal file
View File

@ -0,0 +1,12 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
export default class ChapterComponent extends Component {
@tracked selected = false;
@action
selectChapter() {
this.args.showVerses(this.args.book, this.args.chapter);
this.selected = true;
}
}

5
app/components/jumbo.hbs Normal file
View File

@ -0,0 +1,5 @@
<div class="jumbotron">
<div class="container">
{{yield}}
</div>
</div>

View File

@ -0,0 +1,17 @@
<nav class="scripture-menu">
<Scrollmenu @visible="true">
{{#each this.books as |book|}}
<Book @book={{book}} @showChapters={{this.showChapters}} />
{{/each}}
</Scrollmenu>
<ChapterNav @book={{this.currentBook}}
@showVerses={{this.showVerses}}
@visible={{this.chaptersVisible}} />
<VerseNav @book={{this.currentBook}}
@chapter={{this.currentChapter}}
@verses={{this.currentChapter.verses}}
@verseSelected={{this.verseSelected}}
@visible={{this.versesVisible}} />
</nav>

View File

@ -0,0 +1,35 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from "@glimmer/tracking";
import { books } from "../data/book-chapter-verse";
export default class ScriptureNavBarComponent extends Component {
@tracked chaptersVisible = false;
@tracked versesVisible = false;
@tracked currentBook = null;
@tracked currentChapter = null;
constructor(...args) {
super(...args);
this.books = books;
}
@action
showChapters(book) {
this.chaptersVisible = true;
this.versesVisible = false;
this.currentBook = book;
}
@action
showVerses(book, chapter) {
this.versesVisible = true;
this.currentChapter = chapter;
}
@action
verseSelected(book, chapter, verse) {
// Load the DOM with vese page
console.log('[verseSelected] called: ' + book + ' ' + chapter + ':' + verse);
}
}

View File

@ -0,0 +1,3 @@
<div class="scrollmenu" style="visibility: {{this.visibility}}">
{{yield}}
</div>

View File

@ -0,0 +1,13 @@
import Component from '@glimmer/component';
import {tracked} from "@glimmer/tracking";
import { action } from '@ember/object';
export default class ScrollmenuComponent extends Component {
get visibility() {
if (this.args.visible == 'false' || this.args.visible == false) {
return "hidden";
} else {
return "visible";
}
}
}

View File

@ -0,0 +1,5 @@
<Scrollmenu @visible={{@visible}}>
{{#each this.verseList as |verse|}}
<Verse @book={{@book.name}} @chapter={{@chapter}} @verse={{verse}} @verseSelected={{this.verseSelected}} />
{{/each}}
</Scrollmenu>

View File

@ -0,0 +1,20 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from "@glimmer/tracking";
export default class VerseNavComponent extends Component {
@tracked currentVerse;
get verseList() {
let verses = [];
for (var i = 1; i <= this.args.verses; i++) {
verses.push(i);
}
return verses;
}
@action
verseSelected(book, chapter, verse) {
this.args.verseSelected(book, chapter, verse);
}
}

1
app/components/verse.hbs Normal file
View File

@ -0,0 +1 @@
<a href="#" {{on "click" this.selectVerse }}>{{@verse}}</a>

9
app/components/verse.js Normal file
View File

@ -0,0 +1,9 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
export default class VerseComponent extends Component {
@action
selectVerse() {
this.args.verseSelected(this.args.book, this.args.chapter, this.args.verse);
}
}

View File

@ -0,0 +1,286 @@
export let books = [{
"name": "matthew",
"chapters": [{"chapter": "1", "verses": "25"}, {"chapter": "2", "verses": "23"}, {
"chapter": "3",
"verses": "17"
}, {"chapter": "4", "verses": "25"}, {"chapter": "5", "verses": "48"}, {
"chapter": "6",
"verses": "34"
}, {"chapter": "7", "verses": "29"}, {"chapter": "8", "verses": "34"}, {
"chapter": "9",
"verses": "38"
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "30"}, {
"chapter": "12",
"verses": "50"
}, {"chapter": "13", "verses": "58"}, {"chapter": "14", "verses": "36"}, {
"chapter": "15",
"verses": "39"
}, {"chapter": "16", "verses": "28"}, {"chapter": "17", "verses": "27"}, {
"chapter": "18",
"verses": "35"
}, {"chapter": "19", "verses": "30"}, {"chapter": "20", "verses": "34"}, {
"chapter": "21",
"verses": "46"
}, {"chapter": "22", "verses": "46"}, {"chapter": "23", "verses": "39"}, {
"chapter": "24",
"verses": "51"
}, {"chapter": "25", "verses": "46"}, {"chapter": "26", "verses": "75"}, {
"chapter": "27",
"verses": "66"
}, {"chapter": "28", "verses": "20"}]
}, {
"name": "mark",
"chapters": [{"chapter": "1", "verses": "45"}, {"chapter": "2", "verses": "28"}, {
"chapter": "3",
"verses": "35"
}, {"chapter": "4", "verses": "41"}, {"chapter": "5", "verses": "43"}, {
"chapter": "6",
"verses": "56"
}, {"chapter": "7", "verses": "37"}, {"chapter": "8", "verses": "38"}, {
"chapter": "9",
"verses": "50"
}, {"chapter": "10", "verses": "52"}, {"chapter": "11", "verses": "33"}, {
"chapter": "12",
"verses": "44"
}, {"chapter": "13", "verses": "37"}, {"chapter": "14", "verses": "72"}, {
"chapter": "15",
"verses": "47"
}, {"chapter": "16", "verses": "20"}]
}, {
"name": "luke",
"chapters": [{"chapter": "1", "verses": "80"}, {"chapter": "2", "verses": "52"}, {
"chapter": "3",
"verses": "38"
}, {"chapter": "4", "verses": "44"}, {"chapter": "5", "verses": "39"}, {
"chapter": "6",
"verses": "49"
}, {"chapter": "7", "verses": "50"}, {"chapter": "8", "verses": "56"}, {
"chapter": "9",
"verses": "62"
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "54"}, {
"chapter": "12",
"verses": "59"
}, {"chapter": "13", "verses": "35"}, {"chapter": "14", "verses": "35"}, {
"chapter": "15",
"verses": "32"
}, {"chapter": "16", "verses": "31"}, {"chapter": "17", "verses": "37"}, {
"chapter": "18",
"verses": "43"
}, {"chapter": "19", "verses": "48"}, {"chapter": "20", "verses": "47"}, {
"chapter": "21",
"verses": "38"
}, {"chapter": "22", "verses": "71"}, {"chapter": "23", "verses": "56"}, {"chapter": "24", "verses": "53"}]
}, {
"name": "john",
"chapters": [{"chapter": "1", "verses": "51"}, {"chapter": "2", "verses": "25"}, {
"chapter": "3",
"verses": "36"
}, {"chapter": "4", "verses": "54"}, {"chapter": "5", "verses": "47"}, {
"chapter": "6",
"verses": "71"
}, {"chapter": "7", "verses": "53"}, {"chapter": "8", "verses": "59"}, {
"chapter": "9",
"verses": "41"
}, {"chapter": "10", "verses": "42"}, {"chapter": "11", "verses": "57"}, {
"chapter": "12",
"verses": "50"
}, {"chapter": "13", "verses": "38"}, {"chapter": "14", "verses": "31"}, {
"chapter": "15",
"verses": "27"
}, {"chapter": "16", "verses": "33"}, {"chapter": "17", "verses": "26"}, {
"chapter": "18",
"verses": "40"
}, {"chapter": "19", "verses": "42"}, {"chapter": "20", "verses": "31"}, {"chapter": "21", "verses": "25"}]
}, {
"name": "acts",
"chapters": [{"chapter": "1", "verses": "26"}, {"chapter": "2", "verses": "47"}, {
"chapter": "3",
"verses": "26"
}, {"chapter": "4", "verses": "37"}, {"chapter": "5", "verses": "42"}, {
"chapter": "6",
"verses": "15"
}, {"chapter": "7", "verses": "60"}, {"chapter": "8", "verses": "40"}, {
"chapter": "9",
"verses": "43"
}, {"chapter": "10", "verses": "48"}, {"chapter": "11", "verses": "30"}, {
"chapter": "12",
"verses": "25"
}, {"chapter": "13", "verses": "52"}, {"chapter": "14", "verses": "28"}, {
"chapter": "15",
"verses": "41"
}, {"chapter": "16", "verses": "40"}, {"chapter": "17", "verses": "34"}, {
"chapter": "18",
"verses": "28"
}, {"chapter": "19", "verses": "40"}, {"chapter": "20", "verses": "38"}, {
"chapter": "21",
"verses": "40"
}, {"chapter": "22", "verses": "30"}, {"chapter": "23", "verses": "35"}, {
"chapter": "24",
"verses": "27"
}, {"chapter": "25", "verses": "27"}, {"chapter": "26", "verses": "32"}, {
"chapter": "27",
"verses": "44"
}, {"chapter": "28", "verses": "31"}]
}, {
"name": "romans",
"chapters": [{"chapter": "1", "verses": "32"}, {"chapter": "2", "verses": "29"}, {
"chapter": "3",
"verses": "31"
}, {"chapter": "4", "verses": "25"}, {"chapter": "5", "verses": "21"}, {
"chapter": "6",
"verses": "23"
}, {"chapter": "7", "verses": "25"}, {"chapter": "8", "verses": "39"}, {
"chapter": "9",
"verses": "33"
}, {"chapter": "10", "verses": "21"}, {"chapter": "11", "verses": "36"}, {
"chapter": "12",
"verses": "21"
}, {"chapter": "13", "verses": "14"}, {"chapter": "14", "verses": "23"}, {
"chapter": "15",
"verses": "33"
}, {"chapter": "16", "verses": "27"}]
}, {
"name": "1 corinthians",
"chapters": [{"chapter": "1", "verses": "31"}, {"chapter": "2", "verses": "16"}, {
"chapter": "3",
"verses": "23"
}, {"chapter": "4", "verses": "21"}, {"chapter": "5", "verses": "13"}, {
"chapter": "6",
"verses": "20"
}, {"chapter": "7", "verses": "40"}, {"chapter": "8", "verses": "13"}, {
"chapter": "9",
"verses": "27"
}, {"chapter": "10", "verses": "33"}, {"chapter": "11", "verses": "34"}, {
"chapter": "12",
"verses": "31"
}, {"chapter": "13", "verses": "13"}, {"chapter": "14", "verses": "40"}, {
"chapter": "15",
"verses": "58"
}, {"chapter": "16", "verses": "24"}]
}, {
"name": "2 corinthians",
"chapters": [{"chapter": "1", "verses": "24"}, {"chapter": "2", "verses": "17"}, {
"chapter": "3",
"verses": "18"
}, {"chapter": "4", "verses": "18"}, {"chapter": "5", "verses": "21"}, {
"chapter": "6",
"verses": "18"
}, {"chapter": "7", "verses": "16"}, {"chapter": "8", "verses": "24"}, {
"chapter": "9",
"verses": "15"
}, {"chapter": "10", "verses": "18"}, {"chapter": "11", "verses": "33"}, {
"chapter": "12",
"verses": "21"
}, {"chapter": "13", "verses": "13"}]
}, {
"name": "galatians",
"chapters": [{"chapter": "1", "verses": "24"}, {"chapter": "2", "verses": "21"}, {
"chapter": "3",
"verses": "29"
}, {"chapter": "4", "verses": "31"}, {"chapter": "5", "verses": "26"}, {"chapter": "6", "verses": "18"}]
}, {
"name": "ephesians",
"chapters": [{"chapter": "1", "verses": "23"}, {"chapter": "2", "verses": "22"}, {
"chapter": "3",
"verses": "21"
}, {"chapter": "4", "verses": "32"}, {"chapter": "5", "verses": "33"}, {"chapter": "6", "verses": "24"}]
}, {
"name": "philippians",
"chapters": [{"chapter": "1", "verses": "30"}, {"chapter": "2", "verses": "30"}, {
"chapter": "3",
"verses": "21"
}, {"chapter": "4", "verses": "23"}]
}, {
"name": "colossians",
"chapters": [{"chapter": "1", "verses": "29"}, {"chapter": "2", "verses": "23"}, {
"chapter": "3",
"verses": "25"
}, {"chapter": "4", "verses": "18"}]
}, {
"name": "1 thessalonians",
"chapters": [{"chapter": "1", "verses": "10"}, {"chapter": "2", "verses": "20"}, {
"chapter": "3",
"verses": "13"
}, {"chapter": "4", "verses": "18"}, {"chapter": "5", "verses": "28"}]
}, {
"name": "2 thessalonians",
"chapters": [{"chapter": "1", "verses": "12"}, {"chapter": "2", "verses": "17"}, {"chapter": "3", "verses": "18"}]
}, {
"name": "1 timothy",
"chapters": [{"chapter": "1", "verses": "20"}, {"chapter": "2", "verses": "15"}, {
"chapter": "3",
"verses": "16"
}, {"chapter": "4", "verses": "16"}, {"chapter": "5", "verses": "25"}, {"chapter": "6", "verses": "21"}]
}, {
"name": "2 timothy",
"chapters": [{"chapter": "1", "verses": "18"}, {"chapter": "2", "verses": "26"}, {
"chapter": "3",
"verses": "17"
}, {"chapter": "4", "verses": "22"}]
}, {
"name": "titus",
"chapters": [{"chapter": "1", "verses": "16"}, {"chapter": "2", "verses": "15"}, {"chapter": "3", "verses": "15"}]
}, {"name": "philemon", "chapters": [{"chapter": "1", "verses": "25"}]}, {
"name": "hebrews",
"chapters": [{"chapter": "1", "verses": "14"}, {"chapter": "2", "verses": "18"}, {
"chapter": "3",
"verses": "19"
}, {"chapter": "4", "verses": "16"}, {"chapter": "5", "verses": "14"}, {
"chapter": "6",
"verses": "20"
}, {"chapter": "7", "verses": "28"}, {"chapter": "8", "verses": "13"}, {
"chapter": "9",
"verses": "28"
}, {"chapter": "10", "verses": "39"}, {"chapter": "11", "verses": "40"}, {
"chapter": "12",
"verses": "29"
}, {"chapter": "13", "verses": "25"}]
}, {
"name": "james",
"chapters": [{"chapter": "1", "verses": "27"}, {"chapter": "2", "verses": "26"}, {
"chapter": "3",
"verses": "18"
}, {"chapter": "4", "verses": "17"}, {"chapter": "5", "verses": "20"}]
}, {
"name": "1 peter",
"chapters": [{"chapter": "1", "verses": "25"}, {"chapter": "2", "verses": "25"}, {
"chapter": "3",
"verses": "22"
}, {"chapter": "4", "verses": "19"}, {"chapter": "5", "verses": "14"}]
}, {
"name": "2 peter",
"chapters": [{"chapter": "1", "verses": "21"}, {"chapter": "2", "verses": "22"}, {"chapter": "3", "verses": "18"}]
}, {
"name": "1 john",
"chapters": [{"chapter": "1", "verses": "10"}, {"chapter": "2", "verses": "29"}, {
"chapter": "3",
"verses": "24"
}, {"chapter": "4", "verses": "21"}, {"chapter": "5", "verses": "21"}]
}, {"name": "2 john", "chapters": [{"chapter": "1", "verses": "13"}]}, {
"name": "3 john",
"chapters": [{"chapter": "1", "verses": "15"}]
}, {"name": "jude", "chapters": [{"chapter": "1", "verses": "25"}]}, {
"name": "revelation",
"chapters": [{"chapter": "1", "verses": "20"}, {
"chapter": "2",
"verses": "29"
}, {"chapter": "3", "verses": "22"}, {"chapter": "4", "verses": "11"}, {
"chapter": "5",
"verses": "14"
}, {"chapter": "6", "verses": "17"}, {"chapter": "7", "verses": "17"}, {
"chapter": "8",
"verses": "13"
}, {"chapter": "9", "verses": "21"}, {"chapter": "10", "verses": "11"}, {
"chapter": "11",
"verses": "19"
}, {"chapter": "12", "verses": "18"}, {"chapter": "13", "verses": "18"}, {
"chapter": "14",
"verses": "20"
}, {"chapter": "15", "verses": "8"}, {"chapter": "16", "verses": "21"}, {
"chapter": "17",
"verses": "18"
}, {"chapter": "18", "verses": "24"}, {"chapter": "19", "verses": "21"}, {
"chapter": "20",
"verses": "15"
}, {"chapter": "21", "verses": "27"}, {"chapter": "22", "verses": "21"}]
}];

View File

@ -7,6 +7,8 @@
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{content-for "book-data"}}
{{content-for "head"}}
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">

View File

@ -0,0 +1,13 @@
export function initialize(appInstance) {
// application.inject('route', 'foo', 'service:foo');
let metaTag = document.querySelector('meta[name=book-data]');
if (metaTag) {
let store = appInstance.lookup('service:store');
let bookContent = JSON.parse(unescape(metaTag.content));
store.pushPayload(bookContent);
}
}
export default {
initialize
};

View File

@ -0,0 +1,9 @@
import Model from '@ember-data/model';
export default class LexiconEntryModel extends Model {
@attr strongsNumber;
@attr lexeme;
@attr commentary;
@belongsTo('verse-word') word;
}

12
app/models/verse-word.js Normal file
View File

@ -0,0 +1,12 @@
import Model from '@ember-data/model';
export default class VerseWordModel extends Model {
@attr ulb;
@attr greek;
@attr morph;
@attr ogntSort;
@attr lexeme;
@belongsTo('verse') verse;
@belongsTo('lexicon-entry') lexiconEntry;
}

9
app/models/verse.js Normal file
View File

@ -0,0 +1,9 @@
import Model from '@ember-data/model';
export default class VerseModel extends Model {
@attr name;
@attr greek;
@attr ulb;
@hasMany('verse-word') words;
}

View File

@ -5,6 +5,3 @@ export default class Router extends EmberRouter {
location = config.locationType;
rootURL = config.rootURL;
}
Router.map(function() {
});

View File

View File

@ -1,2 +1,4 @@
@import "ember-bootstrap/bootstrap";
@import "components/scrollmenu";

View File

@ -0,0 +1,17 @@
div.scrollmenu {
background-color: #333;
overflow: auto;
white-space: nowrap;
}
div.scrollmenu a {
display: inline-block;
color: white;
text-align: center;
padding: 14px;
text-decoration: none;
}
div.scrollmenu a:hover {
background-color: #777;
}

View File

@ -1 +1,5 @@
<Jumbo>
<h1>Biblical Resources for Translators</h1>
</Jumbo>
<ScriptureNavBar/>
{{outlet}}

View File

@ -1,12 +1,32 @@
'use strict';
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
const fs = require('fs');
// Taken from https://www.balinterdi.com/blog/inlining-store-data-in-ember-js/
function readFile(file) {
try {
return escape(fs.readFileSync(file));
} catch(e) {
if (e.code === 'ENOENT') {
return '{}';
}
throw(e);
}
}
module.exports = function(defaults) {
let app = new EmberApp(defaults, {
'ember-bootstrap': {
bootstrapVersion: 4,
importBootstrapCSS: false
},
'ember-cli-string-helpers': {},
inlineContent: {
'book-data': {
content: `<meta name='store-data'
content="${readFile('support/data/book-chapter-verse.json')}" />`
}
}
});

21300
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -34,8 +34,10 @@
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-htmlbars": "^5.2.0",
"ember-cli-inject-live-reload": "^2.0.2",
"ember-cli-inline-content": "^0.4.1",
"ember-cli-sass": "^10.0.1",
"ember-cli-sri": "^2.1.1",
"ember-cli-string-helpers": "^5.0.0",
"ember-cli-uglify": "^3.0.0",
"ember-data": "~3.20.0",
"ember-export-application-global": "^2.0.1",

BIN
support/.DS_Store vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -7,6 +7,8 @@
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{content-for "book-data"}}
{{content-for "head"}}
{{content-for "test-head"}}

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | book-nav', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<BookNav />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<BookNav>
template block text
</BookNav>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | book', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Book />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<Book>
template block text
</Book>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | chapter-nav', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<ChapterNav />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<ChapterNav>
template block text
</ChapterNav>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | chapter', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Chapter />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<Chapter>
template block text
</Chapter>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,18 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | jumbo', function(hooks) {
setupRenderingTest(hooks);
test('it renders content inside the jumbo', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Jumbo>Hello World!</Jumbo>`);
assert.dom('.jumbotron').exists();
assert.dom('.jumbotron').hasText('Hello World!');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | scripture-nav-bar', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<ScriptureNavBar />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<ScriptureNavBar>
template block text
</ScriptureNavBar>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | scrollmenu', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Scrollmenu />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<Scrollmenu>
template block text
</Scrollmenu>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | verse-nav', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<VerseNav />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<VerseNav>
template block text
</VerseNav>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | verse', function(hooks) {
setupRenderingTest(hooks);
test('it renders', async function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Verse />`);
assert.equal(this.element.textContent.trim(), '');
// Template block usage:
await render(hbs`
<Verse>
template block text
</Verse>
`);
assert.equal(this.element.textContent.trim(), 'template block text');
});
});

View File

@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Adapter | application', function(hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function(assert) {
let adapter = this.owner.lookup('adapter:application');
assert.ok(adapter);
});
});

View File

@ -0,0 +1,28 @@
import Application from '@ember/application';
import { initialize } from 'gwt-frontend/initializers/load-book-data';
import { module, test } from 'qunit';
import { run } from '@ember/runloop';
module('Unit | Initializer | load-book-data', function(hooks) {
hooks.beforeEach(function() {
this.TestApplication = Application.extend();
this.TestApplication.initializer({
name: 'initializer under test',
initialize
});
this.application = this.TestApplication.create({ autoboot: false });
});
hooks.afterEach(function() {
run(this.application, 'destroy');
});
// TODO: Replace this with your real tests.
test('it works', async function(assert) {
await this.application.boot();
assert.ok(true);
});
});

View File

@ -0,0 +1,13 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Model | lexicon entry', function(hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function(assert) {
let store = this.owner.lookup('service:store');
let model = store.createRecord('lexicon-entry', {});
assert.ok(model);
});
});

View File

@ -0,0 +1,13 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Model | verse', function(hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function(assert) {
let store = this.owner.lookup('service:store');
let model = store.createRecord('verse', {});
assert.ok(model);
});
});

View File

@ -0,0 +1,13 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Model | verse word', function(hooks) {
setupTest(hooks);
// Replace this with your real tests.
test('it exists', function(assert) {
let store = this.owner.lookup('service:store');
let model = store.createRecord('verse-word', {});
assert.ok(model);
});
});

11719
yarn.lock Normal file

File diff suppressed because it is too large Load Diff