Skip to content
This repository has been archived by the owner on Jan 8, 2022. It is now read-only.

Js runner #15

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
.nyc_output/
coverage/
27 changes: 27 additions & 0 deletions js/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Running Tests

# In the Browser

open `SpecRunner.html` in your browser

You can also open `TexttestFixture.html` to see an overview

# In NodeJS

Install dependencies

```
npm install
```

Run tests

```
npm test
```

To auto-run on change, install `nodemon` and then you can do

```
nodemon --exec jasmine
```
6 changes: 4 additions & 2 deletions js/TexttestFixture.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta charset="utf-8" />
<title>Gilded Rose Texttest Fixture</title>

<script type="text/javascript" src="lib/jquery-1.7.1/jquery-1.7.1.js"></script>
Expand All @@ -12,6 +12,8 @@

$('body').append('<p>OMGHAI!</p>');

var items = [];

items.push(new Item('+5 Dexterity Vest', 10, 20));
items.push(new Item('Aged Brie', 2, 0));
items.push(new Item('Elixir of the Mongoose', 5, 7));
Expand All @@ -28,7 +30,7 @@
for (var i = 0; i < days; i++) {
showHeaderFor(i);
showItemsFor(i);
update_quality();
items = update_quality(items);
}

function showHeaderFor(day) {
Expand Down
112 changes: 112 additions & 0 deletions js/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions js/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "gilded-rose-kata",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jasmine"
},
"author": "CircleCI",
"license": "MIT",
"devDependencies": {
"jasmine": "^3.3.0"
}
}
35 changes: 35 additions & 0 deletions js/runner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const fs = require("fs");
const path = require("path");

const {Item, update_quality} = require('./src/gilded_rose');

if (process.argv.length < 3) {
console.warn("Usage: node runner.js <in-file> <out-file>");
process.exit(1);
}

const inFile = process.argv[2];
const outFile = process.argv[3];

console.warn("Reading from %s, writing to %s", inFile, outFile);

function parseItem(line) {
var [name, sell_in, quality] = line.split("__");
return new Item(name, Number(sell_in), Number(quality));
}
function unparseItem(item) {
return [item.name, item.sell_in, item.quality].join("__");
}

const items = fs.readFileSync(inFile, "utf8")
.split("\n")
.map(l => l.trim())
.filter(l => l && !l.startsWith(";"))
.map(parseItem);

const output = update_quality(items)
.map(unparseItem)
.join("\n");

fs.mkdirSync(path.dirname(outFile), {recursive: true});
fs.writeFileSync(outFile, output);
9 changes: 7 additions & 2 deletions js/spec/gilded_rose_spec.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
if (typeof require === 'function') {
var gilded_rose = require('../src/gilded_rose.js');
var Item = gilded_rose.Item;
var update_quality = gilded_rose.update_quality;
}

describe("Gilded Rose", function() {

it("should foo", function() {
items = [ new Item("foo", 0, 0) ];
update_quality();
var items = update_quality([ new Item("foo", 0, 0) ]);
expect(items[0].name).toEqual("fixme");
});

Expand Down
11 changes: 11 additions & 0 deletions js/spec/support/jasmine.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
],
"oneFailurePerSpec": false,
"random": true
}
10 changes: 7 additions & 3 deletions js/src/gilded_rose.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ function Item(name, sell_in, quality) {
this.quality = quality;
}

var items = []

function update_quality() {
function update_quality(items) {
for (var i = 0; i < items.length; i++) {
if (items[i].name != 'Aged Brie' && items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
if (items[i].quality > 0) {
Expand Down Expand Up @@ -52,4 +50,10 @@ function update_quality() {
}
}
}

return items;
}

if (typeof module === 'object') {
exports = module.exports = {Item: Item, update_quality: update_quality};
}