Files
website/test/crafting_plan.test.coffee
T
Andrew Miner b8a0918541 Complete the Crafting Table view/controller
* Add output box to the crafting table view
* Add remaining crafting patterns to all MC 1.7.10 recipes
* Add all crafting patterns to Buildcraft 6.2.6
* Disable mods which don't have patterns yet
* Add the Url constants for computing urls from templates
* Add the `findItemDisplay` to ModPack (along with tests) and remove
  all replace all uses of `getPathSlugs` with it
2015-01-09 10:08:02 -08:00

86 lines
3.4 KiB
CoffeeScript

###
Crafting Guide - crafting_plan.test.coffee
Copyright (c) 2014-2015 by Redwood Labs
All rights reserved.
###
ModPack = require '../src/scripts/models/mod_pack'
CraftingPlan = require '../src/scripts/models/crafting_plan'
########################################################################################################################
modPack = plan = null
########################################################################################################################
describe 'CraftingPlan', ->
beforeEach ->
modPack = new ModPack
modPack.loadModVersionData {
dataVersion: 1
name: 'Minecraft'
version: '1.7.10'
recipes: [
{ input:'Oak Log', output:[[4, 'Oak Plank']] }
{ input:[[2, 'Oak Plank']], output:[[4, 'Stick']] }
{ input:[[4, 'Oak Plank']], output:'Crafting Table' }
{ input:[[8, 'Cobblestone']], tools:'Crafting Table', output:'Furnace' }
{ input:['Iron Ore', 'furnace fuel'], tools:'Furnace', output:'Iron Ingot' }
{ input:[[2, 'Iron Ingot'], 'Stick'], tools:'Crafting Table', output:'Iron Sword' }
]
}
plan = new CraftingPlan modPack:modPack
describe 'craft', ->
describe 'under the simplest conditions', ->
it 'can craft a single step recipe', ->
plan.want.add 'oak_plank'
plan.craft()
plan.need.toList().should.eql ['oak_log']
plan.result.toList().should.eql [[4, 'oak_plank']]
it 'can craft a multi-step recipe', ->
plan.want.add 'crafting_table'
plan.craft()
plan.need.toList().should.eql ['oak_log']
plan.result.toList().should.eql ['crafting_table']
it 'can craft a multi-step recipe using tools', ->
plan.want.add 'furnace'
plan.craft()
plan.need.toList().should.eql [[8, 'cobblestone']]
plan.result.toList().should.eql ['furnace']
it 'can craft a multi-step recipe re-using tools', ->
plan.want.add 'iron_sword'
plan.craft()
plan.need.toList().should.eql [[2, 'furnace_fuel'], [2, 'iron_ore'], 'oak_log']
plan.result.toList().should.eql ['iron_sword', [2, 'oak_plank'], [3, 'stick']]
describe 'with building tools', ->
it 'can craft a multi-step recipe using tools', ->
plan.includingTools = true
plan.want.add 'furnace'
plan.craft()
plan.need.toList().should.eql [[8, 'cobblestone'], 'oak_log']
plan.result.toList().should.eql ['crafting_table', 'furnace']
it 'can craft a multi-step recipe re-using tools', ->
plan.includingTools = true
plan.want.add 'iron_sword'
plan.craft()
plan.need.toList().should.eql [
[8, 'cobblestone'], [2, 'furnace_fuel'], [2, 'iron_ore'], [2, 'oak_log']
]
plan.result.toList().should.eql [
'crafting_table', 'furnace', 'iron_sword', [2, 'oak_plank'], [3, 'stick']
]
describe 'using existing inventory', ->