require 'rspec' require_relative '../test_connections' require 'ostruct' require 'sync/sync_project_service' require 'helix_web_services_client/models' randstr = (0...8).map { (65 + rand(26)).chr }.join settings = OpenStruct.new settings.project_p4_url = 'p4://p4d.example.com:1666' settings.default_stream_depot = '//projects' RSpec.describe Sync::SyncProjectService, '#create' do it 'should create an empty project with a new stream' do temp_client_as_jdoe do |p4, root| sync_project_service = Sync::SyncProjectService.new( p4: p4, client_name: p4.client, client_root: root, settings: settings ) project = HelixWebServicesClient::Models::Project.new( { name: "Basic Sync Test #{randstr}" }) sync_project_service.create(project) end end it 'should create a linked project referencing existing content' do temp_client_as_jdoe do |p4, root| sync_project_service = Sync::SyncProjectService.new( p4: p4, client_name: p4.client, client_root: root, settings: settings ) project = HelixWebServicesClient::Models::Project.new( { name: "Linked Sync Test #{randstr}", owner: 'mmustermann', members: ['jdoe'], branches: [ { id: 'main', name: 'main', view: [ { depot_path: '//depot/main/My Project/...', view_path: '...' } ] } ] }) sync_project_service.create(project) end end it 'should throw an exception if you try to make a project with two branches' do temp_client_as_jdoe do |p4, root| sync_project_service = Sync::SyncProjectService.new( p4: p4, client_name: p4.client, client_root: root, settings: settings ) project = HelixWebServicesClient::Models::Project.new( { name: "Two Branch Sync Test #{randstr}", owner: 'mmustermann', members: ['jdoe'], branches: [ { id: 'main', name: 'main', view: [ { depot_path: '//depot/main/My Project/...', view_path: '...' } ] }, { id: 'second', name: 'second', view: [ { depot_path: '//depot/dev/My Project/...', view_path: '...' } ] } ] }) expect { sync_project_service.create(project) }.to raise_error(error=Sync::Errors::OneBranchOnly) end end end RSpec.describe Sync::SyncProjectService, '#find' do it 'should find our new basic project in the all list' do p4_as_jdoe do |p4| sync_project_service = Sync::SyncProjectService.new(p4: p4, settings: settings) projects = sync_project_service.find project_ids = projects.map(&:id) expect(project_ids).to include("basic_sync_test_#{randstr.downcase}") end end it 'should load our linked project via the members list' do p4_as_jdoe do |p4| sync_project_service = Sync::SyncProjectService.new(p4: p4, settings: settings) projects = sync_project_service.find(members:'jdoe') project_ids = projects.map(&:id) expect(project_ids).to include("linked_sync_test_#{randstr.downcase}") end end end RSpec.describe Sync::SyncProjectService, '#update' do it 'should update membership lists' do temp_client_as_jdoe do |p4, root| sync_project_service = Sync::SyncProjectService.new( p4: p4, client_name: p4.client, client_root: root, settings: settings ) project = sync_project_service.find_by_id("basic_sync_test_#{randstr.downcase}") project.members << 'super' sync_project_service.update(project) updated = sync_project_service.find_by_id("basic_sync_test_#{randstr.downcase}") expect(updated.members).to include('super') end end end
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 15227 | tjuricek |
Revise implementation, tests, and documentation for protections management. Remove some specs I will not be revising from the helix_web_services project. |
||
#1 | 15032 | tjuricek |
Starting config and doc revisions. System is now broken while revisions underway. Configuration of the p4d connection is now done via a single HWSSettings middleware object injected into the Rack env. The HWSP4Cleanup middleware now cleans up any p4 injected into the Rack env. The Auth::App class now mostly just contains one method to generate a p4 ticket. /auth/v1/login. Added yard documentation for the main project. Yard docs have been reconfigured to dump into build/ directories. This should probably be done with each release. Hm... The top level rake file contains a task, 'all:doc', to update our documentation. This should probably be run for each checkin. Hm... Specs are now using Rack::Test on top of a 'live' p4d. I'd suggest you still use the p4util mechanism, which now dumps to a /tmp folder, so we can safely add P4IGNORE rules back into your local .p4config file. Old 'perforce' application now called 'helix_versioning_engine'. Removing cache data. Helix Sync may be slow. It may also get axed. We'll see. |
||
//guest/perforce_software/helix-web-services/main/helix_web_services/spec/sync/sync_project_service_spec.rb | |||||
#1 | 13939 | tjuricek |
First pass at sync project service. Includes a first pass at validating projects enabled for Sync. (There's only one branch check at the moment.) Does not include the HTTP layer. |