Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Письменов Дмитрий Иванович
/
yourroomads
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit e7710efc
authored
May 20, 2021
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#19462 Добавление в настройки городов переменных
1 parent
5c158ca1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
62 additions
and
143 deletions
app/Models/Campaigns.php
tests/Feature/CityTest.php
tests/Unit/CityTest.php
app/Models/Campaigns.php
View file @
e7710ef
...
@@ -111,6 +111,17 @@ class Campaigns extends Model
...
@@ -111,6 +111,17 @@ class Campaigns extends Model
{
{
parent
::
boot
();
parent
::
boot
();
static
::
created
(
function
(
Campaigns
$campaign
)
{
if
(
$campaign
->
manage
)
{
Dictionary
::
whereNotNull
(
'token_id'
)
->
each
(
function
(
Dictionary
$dictionary
)
use
(
$campaign
)
{
$campaign
->
dictionaries
()
->
syncWithoutDetaching
([
$dictionary
->
getKey
()
=>
DictionaryCampaign
::
copyPropertyInCampaign
(
$campaign
),
]);
});
}
});
static
::
updated
(
function
(
Campaigns
$campaign
)
static
::
updated
(
function
(
Campaigns
$campaign
)
{
{
if
(
$campaign
->
manage
!==
$campaign
->
getOriginal
(
'manage'
))
{
if
(
$campaign
->
manage
!==
$campaign
->
getOriginal
(
'manage'
))
{
...
...
tests/Feature/CityTest.php
View file @
e7710ef
...
@@ -8,6 +8,7 @@ use App\Models\Dictionary;
...
@@ -8,6 +8,7 @@ use App\Models\Dictionary;
use
App\Models\Tokens
;
use
App\Models\Tokens
;
use
App\Models\User
;
use
App\Models\User
;
use
App\Models\Organization
;
use
App\Models\Organization
;
use
App\Models\Variable
;
use
Illuminate\Foundation\Testing\RefreshDatabase
;
use
Illuminate\Foundation\Testing\RefreshDatabase
;
use
Tests\TestCase
;
use
Tests\TestCase
;
...
@@ -50,11 +51,6 @@ class CityTest extends TestCase
...
@@ -50,11 +51,6 @@ class CityTest extends TestCase
'token'
=>
$this
->
token_main
->
getKey
(),
'token'
=>
$this
->
token_main
->
getKey
(),
]);
]);
factory
(
Campaigns
::
class
,
2
)
->
create
([
'manage'
=>
false
,
'token'
=>
$this
->
token_main
->
getKey
(),
]);
factory
(
Dictionary
::
class
,
10
)
->
create
([
factory
(
Dictionary
::
class
,
10
)
->
create
([
'type'
=>
Dictionary
::
CITY
,
'type'
=>
Dictionary
::
CITY
,
]);
]);
...
@@ -62,12 +58,13 @@ class CityTest extends TestCase
...
@@ -62,12 +58,13 @@ class CityTest extends TestCase
public
function
test_add_city_and_variables
()
public
function
test_add_city_and_variables
()
{
{
$ids
=
Dictionary
::
all
()
->
pluck
(
'id'
);
$dictionary_ids
=
Dictionary
::
all
()
->
pluck
(
'id'
);
$campaign_ids
=
Campaigns
::
all
()
->
pluck
(
'id'
);
$this
->
actingAs
(
$this
->
user
)
$this
->
actingAs
(
$this
->
user
)
->
post
(
route
(
'token.city.store'
,
[
->
post
(
route
(
'token.city.store'
,
[
'token'
=>
$this
->
token
->
id
,
'token'
=>
$this
->
token
->
id
,
'city'
=>
$ids
[
0
]
'city'
=>
$
dictionary_
ids
[
0
]
]))
]))
->
assertStatus
(
302
);
->
assertStatus
(
302
);
...
@@ -80,7 +77,7 @@ class CityTest extends TestCase
...
@@ -80,7 +77,7 @@ class CityTest extends TestCase
$this
->
actingAs
(
$this
->
user
)
$this
->
actingAs
(
$this
->
user
)
->
post
(
route
(
'token.city.store'
,
[
->
post
(
route
(
'token.city.store'
,
[
'token'
=>
$this
->
token
->
id
,
'token'
=>
$this
->
token
->
id
,
'city'
=>
$ids
[
1
]
'city'
=>
$
dictionary_
ids
[
1
]
]))
]))
->
assertStatus
(
302
);
->
assertStatus
(
302
);
...
@@ -93,7 +90,7 @@ class CityTest extends TestCase
...
@@ -93,7 +90,7 @@ class CityTest extends TestCase
$this
->
actingAs
(
$this
->
user
)
$this
->
actingAs
(
$this
->
user
)
->
post
(
route
(
'token.city.store'
,
[
->
post
(
route
(
'token.city.store'
,
[
'token'
=>
$this
->
token
->
id
,
'token'
=>
$this
->
token
->
id
,
'city'
=>
$ids
[
2
]
'city'
=>
$
dictionary_
ids
[
2
]
]))
]))
->
assertStatus
(
302
);
->
assertStatus
(
302
);
...
@@ -104,12 +101,11 @@ class CityTest extends TestCase
...
@@ -104,12 +101,11 @@ class CityTest extends TestCase
}
}
$camp
=
$this
->
token
->
cities
[
0
]
->
campaigns
[
0
];
$this
->
actingAs
(
$this
->
user
)
$this
->
actingAs
(
$this
->
user
)
->
post
(
route
(
'token.campaign.variable.add'
,
[
->
post
(
route
(
'token.campaign.variable.add'
,
[
'token'
=>
$this
->
token
->
id
,
'token'
=>
$this
->
token
->
id
,
'dictionary_id'
=>
$this
->
token
->
cities
[
0
]
->
getKey
(),
'dictionary_id'
=>
$this
->
token
->
cities
[
0
]
->
getKey
(),
'campaign_id'
=>
$camp
->
id
'campaign_id'
=>
$camp
aign_ids
[
0
]
]),
[
]),
[
'variable'
=>
'add'
,
'variable'
=>
'add'
,
'name'
=>
'test'
,
'name'
=>
'test'
,
...
@@ -118,16 +114,17 @@ class CityTest extends TestCase
...
@@ -118,16 +114,17 @@ class CityTest extends TestCase
])
])
->
assertStatus
(
302
);
->
assertStatus
(
302
);
$this
->
assertEquals
(
1
,
Variable
::
count
());
foreach
(
$this
->
token
->
cities
as
$city
)
{
foreach
(
$this
->
token
->
cities
as
$city
)
{
foreach
(
$city
->
campaigns
as
$campaign
)
{
foreach
(
$city
->
campaigns
as
$campaign
)
{
if
(
$campaign
->
id
==
$camp
->
id
)
{
if
(
$campaign
->
id
==
$camp
aign_ids
[
0
]
)
{
$this
->
assertEquals
(
1
,
$campaign
->
dictionaryCampaignVariables
->
count
());
$this
->
assertEquals
(
1
,
$campaign
->
dictionaryCampaignVariables
->
count
());
}
else
{
}
else
{
$this
->
assertEquals
(
0
,
$campaign
->
dictionaryCampaignVariables
->
count
());
$this
->
assertEquals
(
0
,
$campaign
->
dictionaryCampaignVariables
->
count
());
}
}
foreach
(
$campaign
->
dictionaryCampaignVariables
as
$var
)
{
foreach
(
$campaign
->
dictionaryCampaignVariables
as
$var
)
{
if
(
$campaign
->
id
==
$camp
->
id
)
{
if
(
$campaign
->
id
==
$camp
aign_ids
[
0
]
)
{
$this
->
assertEquals
(
'test_value'
,
$var
->
value
);
$this
->
assertEquals
(
'test_value'
,
$var
->
value
);
}
else
{
}
else
{
$this
->
assertEquals
(
'default'
,
$var
->
value
);
$this
->
assertEquals
(
'default'
,
$var
->
value
);
...
@@ -136,39 +133,62 @@ class CityTest extends TestCase
...
@@ -136,39 +133,62 @@ class CityTest extends TestCase
}
}
}
}
$campaign_new
=
factory
(
Campaigns
::
class
)
->
create
([
'manage'
=>
true
,
'token'
=>
$this
->
token_main
->
getKey
(),
]);
$campaign_ids
[]
=
$campaign_new
->
getKey
();
$this
->
token
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
3
,
$this
->
token
->
cities
->
count
());
foreach
(
$this
->
token
->
cities
as
$city
)
{
$this
->
assertEquals
(
3
,
$city
->
campaigns
->
count
());
}
$this
->
actingAs
(
$this
->
user
)
$this
->
actingAs
(
$this
->
user
)
->
post
(
route
(
'token.city.store'
,
[
->
post
(
route
(
'token.campaign.variable.add'
,
[
'token'
=>
$this
->
token2
->
id
,
'token'
=>
$this
->
token
->
id
,
'city'
=>
$ids
[
2
]
'dictionary_id'
=>
$this
->
token
->
cities
[
0
]
->
getKey
(),
]))
'campaign_id'
=>
$campaign_ids
[
1
]
]),
[
'variable'
=>
'add'
,
'name'
=>
'testtwo'
,
'default_value'
=>
'default_2'
,
'value'
=>
'test_value_2'
])
->
assertStatus
(
302
);
->
assertStatus
(
302
);
$this
->
token2
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
2
,
Variable
::
count
());
$this
->
assertEquals
(
1
,
$this
->
token2
->
cities
->
count
());
foreach
(
$this
->
token2
->
cities
as
$city
)
{
$this
->
assertEquals
(
2
,
$city
->
campaigns
->
count
());
}
foreach
(
$this
->
token
2
->
cities
as
$city
)
{
foreach
(
$this
->
token
->
cities
as
$city
)
{
foreach
(
$city
->
campaigns
as
$campaign
)
{
foreach
(
$city
->
campaigns
as
$campaign
)
{
$campaign
->
load
(
'dictionaryCampaignVariables'
);
if
(
$campaign
->
id
==
$campaign_ids
[
0
]
||
$campaign
->
id
==
$campaign_ids
[
1
])
{
if
(
$campaign
->
id
==
$camp
->
id
)
{
$this
->
assertEquals
(
1
,
$campaign
->
dictionaryCampaignVariables
->
count
());
$this
->
assertEquals
(
1
,
$campaign
->
dictionaryCampaignVariables
->
count
());
}
else
{
}
else
{
$this
->
assertEquals
(
0
,
$campaign
->
dictionaryCampaignVariables
->
count
());
$this
->
assertEquals
(
0
,
$campaign
->
dictionaryCampaignVariables
->
count
());
}
}
foreach
(
$campaign
->
dictionaryCampaignVariables
as
$var
)
{
foreach
(
$campaign
->
dictionaryCampaignVariables
as
$var
)
{
if
(
$campaign
->
id
==
$camp
->
id
)
{
if
(
$campaign
->
id
==
$camp
aign_ids
[
0
]
)
{
$this
->
assertEquals
(
1
,
$campaign
->
dictionaryCampaignVariables
->
count
()
);
$this
->
assertEquals
(
'test_value'
,
$var
->
value
);
}
else
{
}
else
{
$this
->
assertEquals
(
0
,
$campaign
->
dictionaryCampaignVariables
->
count
());
if
(
$var
->
name
===
'test'
)
{
if
(
$campaign
->
id
==
$campaign_ids
[
0
])
{
$this
->
assertEquals
(
'test_value'
,
$var
->
value
);
}
else
{
$this
->
assertEquals
(
'default'
,
$var
->
value
);
}
}
elseif
(
$var
->
name
===
'testtwo'
)
{
if
(
$campaign
->
id
==
$campaign_ids
[
1
])
{
$this
->
assertEquals
(
'test_value_2'
,
$var
->
value
);
}
else
{
$this
->
assertEquals
(
'default_2'
,
$var
->
value
);
}
}
}
}
}
}
}
}
}
}
//TODO: еще надо дописать добавление новой РК на управление. И автоматом эта РК должна во все города добавиться и автоматом
// должна переменная добавиться.
// и для чистоты эксперимента еще и вторую перменную добавить + еще бы имена перменных проверять на всякий случай
}
}
}
}
tests/Unit/CityTest.php
deleted
100644 → 0
View file @
5c158ca
<?php
namespace
Tests\Unit
;
use
App\Models\Account
;
use
App\Models\Campaigns
;
use
App\Models\Dictionary
;
use
App\Models\Pivots\DictionaryCampaign
;
use
App\Models\Tokens
;
use
App\Models\User
;
use
Illuminate\Foundation\Testing\RefreshDatabase
;
use
Tests\TestCase
;
class
CityTest
extends
TestCase
{
use
RefreshDatabase
;
protected
function
setUp
()
:
void
{
parent
::
setUp
();
$account
=
Account
::
create
([
'name'
=>
'Acme Corporation'
]);
$this
->
user
=
factory
(
User
::
class
)
->
create
([
'account_id'
=>
$account
->
id
,
'first_name'
=>
'John'
,
'last_name'
=>
'Doe'
,
'email'
=>
'johndoe@example.com'
,
'owner'
=>
true
,
]);
$this
->
token
=
factory
(
Tokens
::
class
)
->
create
([
'created_by'
=>
$this
->
user
->
getKey
()
]);
$this
->
token_main
=
factory
(
Tokens
::
class
)
->
create
([
'type'
=>
Tokens
::
MAIN
,
]);
$this
->
campaign
=
factory
(
Campaigns
::
class
)
->
create
([
'external_id'
=>
1
,
'manage'
=>
true
,
'token'
=>
$this
->
token_main
->
getKey
(),
]);
$this
->
campaign_2
=
factory
(
Campaigns
::
class
)
->
create
([
'external_id'
=>
2
,
'manage'
=>
false
,
'token'
=>
$this
->
token_main
->
getKey
(),
]);
$this
->
dictionary
=
factory
(
Dictionary
::
class
)
->
create
([
'region_id'
=>
1
,
'token_id'
=>
$this
->
token
->
getKey
(),
'type'
=>
Dictionary
::
CITY
,
]);
$this
->
dictionary_2
=
factory
(
Dictionary
::
class
)
->
create
([
'region_id'
=>
2
,
'type'
=>
Dictionary
::
CITY
,
]);
}
public
function
testAddCity
()
{
$this
->
assertEquals
(
2
,
Tokens
::
count
());
$this
->
assertEquals
(
2
,
Campaigns
::
count
());
$this
->
assertEquals
(
2
,
Dictionary
::
count
());
$this
->
token
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
1
,
$this
->
token
->
cities
->
count
());
$this
->
assertEquals
(
0
,
$this
->
token
->
cities
->
first
()
->
campaigns
->
count
());
$this
->
token_main
->
load
(
'campaignsNotForManaged'
);
$this
->
assertEquals
(
1
,
$this
->
token_main
->
campaignsForManaged
->
count
());
$this
->
token_main
->
load
(
'campaignsForManaged'
);
$this
->
assertEquals
(
1
,
$this
->
token_main
->
campaignsNotForManaged
->
count
());
$this
->
dictionary
->
campaigns
()
->
syncWithoutDetaching
(
$this
->
token_main
->
campaignsForManaged
->
keyBy
(
$this
->
token_main
->
campaignsForManaged
->
first
()
->
getKeyName
())
->
transform
(
function
(
Campaigns
$campaign
)
{
return
DictionaryCampaign
::
copyPropertyInCampaign
(
$campaign
);
})
->
all
()
);
$this
->
token
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
1
,
$this
->
token
->
cities
->
first
()
->
campaigns
->
count
());
$this
->
token_main
->
campaignsNotForManaged
()
->
first
()
->
update
([
'manage'
=>
true
,
]);
$this
->
token_main
->
load
(
'campaignsForManaged'
);
$this
->
assertEquals
(
2
,
$this
->
token_main
->
campaignsForManaged
->
count
());
$this
->
token
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
2
,
$this
->
token
->
cities
->
first
()
->
campaigns
->
count
());
$this
->
token_main
->
campaignsForManaged
->
first
()
->
update
([
'manage'
=>
false
,
]);
$this
->
token_main
->
load
(
'campaignsForManaged'
);
$this
->
assertEquals
(
1
,
$this
->
token_main
->
campaignsForManaged
->
count
());
$this
->
token
->
load
(
'cities.campaigns'
);
$this
->
assertEquals
(
1
,
$this
->
token
->
cities
->
first
()
->
campaigns
->
count
());
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment