Sha256: f3688c233a755d6a1909a27fd907b3b86a6a0fde672e45c8da725cbd8c7eafe3

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

FancySpec describe: Class Contracts with: {
  it: "fails inclusion" when: {
    {
      class A {
        include: Fancy Enumerable
      }
    } raises: Class Contracts InterfaceNotImplementedError
  }

  it: "doesn't fail inclusion" when: {
    {
      class A {
        def each: block
        include: Fancy Enumerable
      }
    } does_not raise: Class Contracts InterfaceNotImplementedError

    {
      class B {
        provides_interface: 'each:
        include: Fancy Enumerable
      }
    } does_not raise: Class Contracts InterfaceNotImplementedError
  }

  it: "returns the amount of not implemented interface methods" with: 'missing_methods_for_interface: when: {
    class Interface {
      expects_interface_on_inclusion: ['hello, 'world]
    }

    {
      class C {
        include: Interface
      }
    } raises: Class Contracts InterfaceNotImplementedError with: @{
      methods is: ['hello, 'world]
      interface is: Interface
      including_class is: C
    }

    {
      class D {
        def hello
        include: Interface
      }
    } raises: Class Contracts InterfaceNotImplementedError with: @{
      methods is: ['world]
      interface is: Interface
      including_class is: D
    }
  }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fancy-0.10.0 tests/contracts.fy