Project

ass_tests

0.0
No commit activity in last 3 years
No release in over 3 years
It make possible to write tests for 1C:Enterprise on Ruby easy. Access to 1C runtime via OLE. Works only in Windows or Cygwin!!!
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
>= 0
>= 0
~> 10.0

Runtime

 Project Readme

AssTests

Framework for unit testing code written on 1C:Enterprise embedded programming language.

It make possible to write tests for 1C:Enterprise on Ruby easy.

Warning! Access to 1C runtime via WIN32OLE. Works only in Windows or Cygwin

Benefits

  • Write tests on Ruby and keep it under git as text vs write tests on 1C embedded language and keep it as external 1C binary objects.
  • Write tests powered by Minitest, RSpec, mocha, cucumber and other great Ruby libraries.
  • WIN32OLE automatically convert Ruby objects into IDispatch objects when it passed as argument on to other side. It make possible passes mocha mock objects in to 1C runtime side!!!

Trouble

  • Works only in Windows or Cygwin.
  • Not available methods eval and execute of 1C "Global context"
  • Unpossible attach to 1C debugger.
  • Now support Minitest only
  • AssTests::Minitest::Assertions works for external or thick application ole connectors from box. For thin application require monkey patch (TODO: write about).
  • Other unknown now :(

Features

  • Provides DSL for describe 1C:Enterprise application (aka "Information base")
  • Support to describe many different 1C Information bases.
  • Support describe exists Information bases as external. Such Information bases is persistent and can't be build or remove.
  • Automatically build described Information base on demand.
  • Automatically close all opened connection after all tests executed. It provides AssOle::Runtimes
  • Provides assertions for tests 1C values in Ruby side
  • Provides features for testing of 1C externals like as ExternalDataProcessor and ExternalReport
  • Provides features for fill data in infobases under test.

Installation

Add this line to your application's Gemfile:

gem 'ass_tests'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ass_tests

Usage

Smal example for Minitest

  • test_helper.rb:
# Describe empty InfoBase

require 'ass_tests/minitest'
AssTests::InfoBases.describe do
  file :empty_ib
end

module ExampleTest
  # Describe runtimes
  module Runtimes
    module Ext
      is_ole_runtime :external
      run AssTests::InfoBases[:empty_ib]
    end

    module ThickApp
      is_ole_runtime :thick
      run AssTests::InfoBases[:empty_ib]
    end
  end
end

# After all was prepared loads autorun
require 'ass_tests/minitest/autorun'
  • exmple_test.rb:
module ExampleTest
  describe 'Spec examle' do
    like_ole_runtime Runtimes::Ext
    include AssTests::Minitest::Assertions

    it 'Call runtime #metaData' do
      _assert_equal metaData, metaData
    end
  end

  class TestExample < Minitest::Test
    like_ole_runtime Runtimes::Ext
    include AssTests::Minitest::Assertions

    def test_runtime_metaData
      _assert_equal metaData, metaData
    end
  end

  # Shared tests
  module SharedTests
    def test_runtime_metaData
      _assert_equal metaData, metaData
    end
  end

  class TestInExternalRuntime < Minitest::Test
    like_ole_runtime Runtimes::Ext
    include AssTests::Minitest::Assertions
    include SharedTests
  end

  class TestInThickAppRuntime < Minitest::Test
    like_ole_runtime Runtimes::ThickApp
    include AssTests::Minitest::Assertions
    include SharedTests
  end
end
  • also you can write native Minitest::Test for testing other things like this ordinary_test.rb:
class OrdinaryTest < Minitest::Test
  def test_fail
    assert false
  end
end

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/leoniv/ass_tests.