fossasia/knittingpattern

View on GitHub
knittingpattern/test/test_knittingpattern.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
from knittingpattern import new_knitting_pattern
import knittingpattern.KnittingPattern as KnittingPatternModule
from knittingpattern.KnittingPattern import KnittingPattern
from unittest.mock import Mock
from test_row_instructions import a1
import knittingpattern
from pytest import fixture


class TestInstructionColors(object):

    """Test KnittingPattern.instruction_colors."""

    @fixture
    def unique(self, monkeypatch):
        mock = Mock()
        monkeypatch.setattr(KnittingPatternModule, "unique", mock)
        return mock

    @fixture
    def rows_in_knit_order(self, rows, monkeypatch):
        mock = Mock()
        monkeypatch.setattr(KnittingPattern, "rows_in_knit_order", mock)
        mock.return_value = rows
        return mock

    @fixture
    def rows(self):
        return [Mock(), Mock(), Mock()]

    @fixture
    def knittingpattern(self, rows):
        return KnittingPattern(Mock(), Mock(), Mock(), Mock())

    def test_result(self, knittingpattern, unique, rows_in_knit_order):
        assert knittingpattern.instruction_colors == unique.return_value

    def test_call_arguments(self, knittingpattern, unique, rows,
                            rows_in_knit_order):
        knittingpattern.instruction_colors
        instruction_colors = [row.instruction_colors for row in rows]
        unique.assert_called_once_with(instruction_colors)

    def test_chalotte(self, a1):
        assert a1.instruction_colors == [None]

    def test_cafe(self):
        pattern = knittingpattern.load_from().example("Cafe.json").first
        colors = ["mocha latte", "dark brown", "brown", "white", ]
        assert pattern.instruction_colors == colors